|
@@ -6684,10 +6684,13 @@ qla4xxx_sysfs_ddb_set_param(struct iscsi_bus_flash_session *fnode_sess,
|
|
|
struct Scsi_Host *shost = iscsi_flash_session_to_shost(fnode_sess);
|
|
|
struct scsi_qla_host *ha = to_qla_host(shost);
|
|
|
struct iscsi_flashnode_param_info *fnode_param;
|
|
|
+ struct ql4_chap_table chap_tbl;
|
|
|
struct nlattr *attr;
|
|
|
+ uint16_t chap_out_idx = INVALID_ENTRY;
|
|
|
int rc = QLA_ERROR;
|
|
|
uint32_t rem = len;
|
|
|
|
|
|
+ memset((void *)&chap_tbl, 0, sizeof(chap_tbl));
|
|
|
nla_for_each_attr(attr, data, len, rem) {
|
|
|
fnode_param = nla_data(attr);
|
|
|
|
|
@@ -6729,6 +6732,10 @@ qla4xxx_sysfs_ddb_set_param(struct iscsi_bus_flash_session *fnode_sess,
|
|
|
break;
|
|
|
case ISCSI_FLASHNODE_CHAP_AUTH_EN:
|
|
|
fnode_sess->chap_auth_en = fnode_param->value[0];
|
|
|
+ /* Invalidate chap index if chap auth is disabled */
|
|
|
+ if (!fnode_sess->chap_auth_en)
|
|
|
+ fnode_sess->chap_out_idx = INVALID_ENTRY;
|
|
|
+
|
|
|
break;
|
|
|
case ISCSI_FLASHNODE_SNACK_REQ_EN:
|
|
|
fnode_conn->snack_req_en = fnode_param->value[0];
|
|
@@ -6867,6 +6874,17 @@ qla4xxx_sysfs_ddb_set_param(struct iscsi_bus_flash_session *fnode_sess,
|
|
|
fnode_conn->exp_statsn =
|
|
|
*(uint32_t *)fnode_param->value;
|
|
|
break;
|
|
|
+ case ISCSI_FLASHNODE_CHAP_OUT_IDX:
|
|
|
+ chap_out_idx = *(uint16_t *)fnode_param->value;
|
|
|
+ if (!qla4xxx_get_uni_chap_at_index(ha,
|
|
|
+ chap_tbl.name,
|
|
|
+ chap_tbl.secret,
|
|
|
+ chap_out_idx)) {
|
|
|
+ fnode_sess->chap_out_idx = chap_out_idx;
|
|
|
+ /* Enable chap auth if chap index is valid */
|
|
|
+ fnode_sess->chap_auth_en = QL4_PARAM_ENABLE;
|
|
|
+ }
|
|
|
+ break;
|
|
|
default:
|
|
|
ql4_printk(KERN_ERR, ha,
|
|
|
"%s: No such sysfs attribute\n", __func__);
|