aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdheer Chandravanshi <adheer.chandravanshi@qlogic.com>2013-09-17 07:54:46 -0400
committerJames Bottomley <JBottomley@Parallels.com>2013-10-25 04:58:00 -0400
commit946ac571584d95e4f6ba0978bb84b4920ecba40b (patch)
tree265766ec4f6f754dceed429d05e55e3696ea966c
parent244c079b81c836ee0ed75eedf1e1322e733ea7c8 (diff)
[SCSI] qla4xxx: Populate local CHAP credentials for flash target sessions
If any flash target entry is using CHAP authentication then set CHAP username and password sysfs params for the corresponding iscsi sessions. Signed-off-by: Adheer Chandravanshi <adheer.chandravanshi@qlogic.com> Signed-off-by: Vikas Chaudhary <vikas.chaudhary@qlogic.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
-rw-r--r--drivers/scsi/qla4xxx/ql4_os.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c
index 057d06861ad7..45478807dabb 100644
--- a/drivers/scsi/qla4xxx/ql4_os.c
+++ b/drivers/scsi/qla4xxx/ql4_os.c
@@ -2397,6 +2397,7 @@ static void qla4xxx_copy_fwddb_param(struct scsi_qla_host *ha,
2397 int buflen = 0; 2397 int buflen = 0;
2398 struct iscsi_session *sess; 2398 struct iscsi_session *sess;
2399 struct ddb_entry *ddb_entry; 2399 struct ddb_entry *ddb_entry;
2400 struct ql4_chap_table chap_tbl;
2400 struct iscsi_conn *conn; 2401 struct iscsi_conn *conn;
2401 char ip_addr[DDB_IPADDR_LEN]; 2402 char ip_addr[DDB_IPADDR_LEN];
2402 uint16_t options = 0; 2403 uint16_t options = 0;
@@ -2404,6 +2405,7 @@ static void qla4xxx_copy_fwddb_param(struct scsi_qla_host *ha,
2404 sess = cls_sess->dd_data; 2405 sess = cls_sess->dd_data;
2405 ddb_entry = sess->dd_data; 2406 ddb_entry = sess->dd_data;
2406 conn = cls_conn->dd_data; 2407 conn = cls_conn->dd_data;
2408 memset(&chap_tbl, 0, sizeof(chap_tbl));
2407 2409
2408 ddb_entry->chap_tbl_idx = le16_to_cpu(fw_ddb_entry->chap_tbl_idx); 2410 ddb_entry->chap_tbl_idx = le16_to_cpu(fw_ddb_entry->chap_tbl_idx);
2409 2411
@@ -2430,6 +2432,19 @@ static void qla4xxx_copy_fwddb_param(struct scsi_qla_host *ha,
2430 (char *)fw_ddb_entry->iscsi_name, buflen); 2432 (char *)fw_ddb_entry->iscsi_name, buflen);
2431 iscsi_set_param(cls_conn, ISCSI_PARAM_INITIATOR_NAME, 2433 iscsi_set_param(cls_conn, ISCSI_PARAM_INITIATOR_NAME,
2432 (char *)ha->name_string, buflen); 2434 (char *)ha->name_string, buflen);
2435
2436 if (ddb_entry->chap_tbl_idx != INVALID_ENTRY) {
2437 if (!qla4xxx_get_uni_chap_at_index(ha, chap_tbl.name,
2438 chap_tbl.secret,
2439 ddb_entry->chap_tbl_idx)) {
2440 iscsi_set_param(cls_conn, ISCSI_PARAM_USERNAME,
2441 (char *)chap_tbl.name,
2442 strlen((char *)chap_tbl.name));
2443 iscsi_set_param(cls_conn, ISCSI_PARAM_PASSWORD,
2444 (char *)chap_tbl.secret,
2445 chap_tbl.secret_len);
2446 }
2447 }
2433} 2448}
2434 2449
2435void qla4xxx_update_session_conn_fwddb_param(struct scsi_qla_host *ha, 2450void qla4xxx_update_session_conn_fwddb_param(struct scsi_qla_host *ha,
@@ -5204,6 +5219,7 @@ static void qla4xxx_setup_flash_ddb_entry(struct scsi_qla_host *ha,
5204 ddb_entry->ha = ha; 5219 ddb_entry->ha = ha;
5205 ddb_entry->unblock_sess = qla4xxx_unblock_flash_ddb; 5220 ddb_entry->unblock_sess = qla4xxx_unblock_flash_ddb;
5206 ddb_entry->ddb_change = qla4xxx_flash_ddb_change; 5221 ddb_entry->ddb_change = qla4xxx_flash_ddb_change;
5222 ddb_entry->chap_tbl_idx = INVALID_ENTRY;
5207 5223
5208 atomic_set(&ddb_entry->retry_relogin_timer, INVALID_ENTRY); 5224 atomic_set(&ddb_entry->retry_relogin_timer, INVALID_ENTRY);
5209 atomic_set(&ddb_entry->relogin_timer, 0); 5225 atomic_set(&ddb_entry->relogin_timer, 0);