aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla4xxx/ql4_os.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/qla4xxx/ql4_os.c')
-rw-r--r--drivers/scsi/qla4xxx/ql4_os.c45
1 files changed, 44 insertions, 1 deletions
diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c
index c6cfe324ab2f..cbaf2b33e485 100644
--- a/drivers/scsi/qla4xxx/ql4_os.c
+++ b/drivers/scsi/qla4xxx/ql4_os.c
@@ -83,6 +83,8 @@ static void qla4xxx_config_dma_addressing(struct scsi_qla_host *ha);
83/* 83/*
84 * iSCSI template entry points 84 * iSCSI template entry points
85 */ 85 */
86static int qla4xxx_session_get_param(struct iscsi_cls_session *cls_sess,
87 enum iscsi_param param, char *buf);
86static int qla4xxx_conn_get_param(struct iscsi_cls_conn *conn, 88static int qla4xxx_conn_get_param(struct iscsi_cls_conn *conn,
87 enum iscsi_param param, char *buf); 89 enum iscsi_param param, char *buf);
88static int qla4xxx_host_get_param(struct Scsi_Host *shost, 90static int qla4xxx_host_get_param(struct Scsi_Host *shost,
@@ -186,7 +188,7 @@ static struct iscsi_transport qla4xxx_iscsi_transport = {
186 .destroy_conn = qla4xxx_conn_destroy, 188 .destroy_conn = qla4xxx_conn_destroy,
187 .set_param = iscsi_set_param, 189 .set_param = iscsi_set_param,
188 .get_conn_param = qla4xxx_conn_get_param, 190 .get_conn_param = qla4xxx_conn_get_param,
189 .get_session_param = iscsi_session_get_param, 191 .get_session_param = qla4xxx_session_get_param,
190 .get_ep_param = qla4xxx_get_ep_param, 192 .get_ep_param = qla4xxx_get_ep_param,
191 .ep_connect = qla4xxx_ep_connect, 193 .ep_connect = qla4xxx_ep_connect,
192 .ep_poll = qla4xxx_ep_poll, 194 .ep_poll = qla4xxx_ep_poll,
@@ -317,6 +319,12 @@ static umode_t ql4_attr_is_visible(int param_type, int param)
317 case ISCSI_PARAM_MAX_RECV_DLENGTH: 319 case ISCSI_PARAM_MAX_RECV_DLENGTH:
318 case ISCSI_PARAM_MAX_XMIT_DLENGTH: 320 case ISCSI_PARAM_MAX_XMIT_DLENGTH:
319 case ISCSI_PARAM_IFACE_NAME: 321 case ISCSI_PARAM_IFACE_NAME:
322 case ISCSI_PARAM_CHAP_OUT_IDX:
323 case ISCSI_PARAM_CHAP_IN_IDX:
324 case ISCSI_PARAM_USERNAME:
325 case ISCSI_PARAM_PASSWORD:
326 case ISCSI_PARAM_USERNAME_IN:
327 case ISCSI_PARAM_PASSWORD_IN:
320 return S_IRUGO; 328 return S_IRUGO;
321 default: 329 default:
322 return 0; 330 return 0;
@@ -1288,6 +1296,41 @@ exit_init_fw_cb:
1288 return rval; 1296 return rval;
1289} 1297}
1290 1298
1299static int qla4xxx_session_get_param(struct iscsi_cls_session *cls_sess,
1300 enum iscsi_param param, char *buf)
1301{
1302 struct iscsi_session *sess = cls_sess->dd_data;
1303 struct ddb_entry *ddb_entry = sess->dd_data;
1304 struct scsi_qla_host *ha = ddb_entry->ha;
1305 int rval, len;
1306 uint16_t idx;
1307
1308 switch (param) {
1309 case ISCSI_PARAM_CHAP_IN_IDX:
1310 rval = qla4xxx_get_chap_index(ha, sess->username_in,
1311 sess->password_in, BIDI_CHAP,
1312 &idx);
1313 if (rval)
1314 return -EINVAL;
1315
1316 len = sprintf(buf, "%hu\n", idx);
1317 break;
1318 case ISCSI_PARAM_CHAP_OUT_IDX:
1319 rval = qla4xxx_get_chap_index(ha, sess->username,
1320 sess->password, LOCAL_CHAP,
1321 &idx);
1322 if (rval)
1323 return -EINVAL;
1324
1325 len = sprintf(buf, "%hu\n", idx);
1326 break;
1327 default:
1328 return iscsi_session_get_param(cls_sess, param, buf);
1329 }
1330
1331 return len;
1332}
1333
1291static int qla4xxx_conn_get_param(struct iscsi_cls_conn *cls_conn, 1334static int qla4xxx_conn_get_param(struct iscsi_cls_conn *cls_conn,
1292 enum iscsi_param param, char *buf) 1335 enum iscsi_param param, char *buf)
1293{ 1336{