aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/infiniband/ulp/iser/iscsi_iser.c3
-rw-r--r--drivers/scsi/iscsi_tcp.c3
-rw-r--r--drivers/scsi/libiscsi.c12
-rw-r--r--drivers/scsi/qla4xxx/ql4_os.c6
-rw-r--r--drivers/scsi/scsi_transport_iscsi.c4
-rw-r--r--include/scsi/iscsi_if.h2
-rw-r--r--include/scsi/libiscsi.h1
7 files changed, 27 insertions, 4 deletions
diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c b/drivers/infiniband/ulp/iser/iscsi_iser.c
index 2a99b7b6c906..e39d9a07bc5d 100644
--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
+++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
@@ -576,7 +576,8 @@ static struct iscsi_transport iscsi_iser_transport = {
576 ISCSI_PERSISTENT_ADDRESS | 576 ISCSI_PERSISTENT_ADDRESS |
577 ISCSI_TARGET_NAME | 577 ISCSI_TARGET_NAME |
578 ISCSI_TPGT, 578 ISCSI_TPGT,
579 .host_param_mask = ISCSI_HOST_HWADDRESS, 579 .host_param_mask = ISCSI_HOST_HWADDRESS |
580 ISCSI_HOST_INITIATOR_NAME,
580 .host_template = &iscsi_iser_sht, 581 .host_template = &iscsi_iser_sht,
581 .conndata_size = sizeof(struct iscsi_conn), 582 .conndata_size = sizeof(struct iscsi_conn),
582 .max_lun = ISCSI_ISER_MAX_LUN, 583 .max_lun = ISCSI_ISER_MAX_LUN,
diff --git a/drivers/scsi/iscsi_tcp.c b/drivers/scsi/iscsi_tcp.c
index 9a42fc074b76..8201e6c4d8a9 100644
--- a/drivers/scsi/iscsi_tcp.c
+++ b/drivers/scsi/iscsi_tcp.c
@@ -2181,7 +2181,8 @@ static struct iscsi_transport iscsi_tcp_transport = {
2181 ISCSI_PERSISTENT_ADDRESS | 2181 ISCSI_PERSISTENT_ADDRESS |
2182 ISCSI_TARGET_NAME | 2182 ISCSI_TARGET_NAME |
2183 ISCSI_TPGT, 2183 ISCSI_TPGT,
2184 .host_param_mask = ISCSI_HOST_HWADDRESS, 2184 .host_param_mask = ISCSI_HOST_HWADDRESS |
2185 ISCSI_HOST_INITIATOR_NAME,
2185 .host_template = &iscsi_sht, 2186 .host_template = &iscsi_sht,
2186 .conndata_size = sizeof(struct iscsi_conn), 2187 .conndata_size = sizeof(struct iscsi_conn),
2187 .max_conn = 1, 2188 .max_conn = 1,
diff --git a/drivers/scsi/libiscsi.c b/drivers/scsi/libiscsi.c
index d430e227e9b7..5e6a42429c39 100644
--- a/drivers/scsi/libiscsi.c
+++ b/drivers/scsi/libiscsi.c
@@ -1463,6 +1463,7 @@ void iscsi_session_teardown(struct iscsi_cls_session *cls_session)
1463 1463
1464 kfree(session->targetname); 1464 kfree(session->targetname);
1465 kfree(session->hwaddress); 1465 kfree(session->hwaddress);
1466 kfree(session->initiatorname);
1466 1467
1467 iscsi_destroy_session(cls_session); 1468 iscsi_destroy_session(cls_session);
1468 scsi_host_put(shost); 1469 scsi_host_put(shost);
@@ -2004,6 +2005,13 @@ int iscsi_host_get_param(struct Scsi_Host *shost, enum iscsi_host_param param,
2004 else 2005 else
2005 len = sprintf(buf, "%s\n", session->hwaddress); 2006 len = sprintf(buf, "%s\n", session->hwaddress);
2006 break; 2007 break;
2008 case ISCSI_HOST_PARAM_INITIATOR_NAME:
2009 if (!session->initiatorname)
2010 len = sprintf(buf, "%s\n", "unknown");
2011 else
2012 len = sprintf(buf, "%s\n", session->initiatorname);
2013 break;
2014
2007 default: 2015 default:
2008 return -ENOSYS; 2016 return -ENOSYS;
2009 } 2017 }
@@ -2022,6 +2030,10 @@ int iscsi_host_set_param(struct Scsi_Host *shost, enum iscsi_host_param param,
2022 if (!session->hwaddress) 2030 if (!session->hwaddress)
2023 session->hwaddress = kstrdup(buf, GFP_KERNEL); 2031 session->hwaddress = kstrdup(buf, GFP_KERNEL);
2024 break; 2032 break;
2033 case ISCSI_HOST_PARAM_INITIATOR_NAME:
2034 if (!session->initiatorname)
2035 session->initiatorname = kstrdup(buf, GFP_KERNEL);
2036 break;
2025 default: 2037 default:
2026 return -ENOSYS; 2038 return -ENOSYS;
2027 } 2039 }
diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c
index 29cd4b90ebed..7502bb4808d6 100644
--- a/drivers/scsi/qla4xxx/ql4_os.c
+++ b/drivers/scsi/qla4xxx/ql4_os.c
@@ -104,7 +104,8 @@ static struct iscsi_transport qla4xxx_iscsi_transport = {
104 .name = DRIVER_NAME, 104 .name = DRIVER_NAME,
105 .param_mask = ISCSI_CONN_PORT | ISCSI_CONN_ADDRESS | 105 .param_mask = ISCSI_CONN_PORT | ISCSI_CONN_ADDRESS |
106 ISCSI_TARGET_NAME | ISCSI_TPGT, 106 ISCSI_TARGET_NAME | ISCSI_TPGT,
107 .host_param_mask = ISCSI_HOST_HWADDRESS, 107 .host_param_mask = ISCSI_HOST_HWADDRESS |
108 ISCSI_HOST_INITIATOR_NAME,
108 .sessiondata_size = sizeof(struct ddb_entry), 109 .sessiondata_size = sizeof(struct ddb_entry),
109 .host_template = &qla4xxx_driver_template, 110 .host_template = &qla4xxx_driver_template,
110 111
@@ -190,6 +191,9 @@ static int qla4xxx_host_get_param(struct Scsi_Host *shost,
190 case ISCSI_HOST_PARAM_HWADDRESS: 191 case ISCSI_HOST_PARAM_HWADDRESS:
191 len = format_addr(buf, ha->my_mac, MAC_ADDR_LEN); 192 len = format_addr(buf, ha->my_mac, MAC_ADDR_LEN);
192 break; 193 break;
194 case ISCSI_HOST_PARAM_INITIATOR_NAME:
195 len = sprintf(buf, ha->name_string);
196 break;
193 default: 197 default:
194 return -ENOSYS; 198 return -ENOSYS;
195 } 199 }
diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c
index 3fd2da451fe1..5ec2fbea8937 100644
--- a/drivers/scsi/scsi_transport_iscsi.c
+++ b/drivers/scsi/scsi_transport_iscsi.c
@@ -32,7 +32,7 @@
32 32
33#define ISCSI_SESSION_ATTRS 11 33#define ISCSI_SESSION_ATTRS 11
34#define ISCSI_CONN_ATTRS 11 34#define ISCSI_CONN_ATTRS 11
35#define ISCSI_HOST_ATTRS 1 35#define ISCSI_HOST_ATTRS 2
36#define ISCSI_TRANSPORT_VERSION "2.0-724" 36#define ISCSI_TRANSPORT_VERSION "2.0-724"
37 37
38struct iscsi_internal { 38struct iscsi_internal {
@@ -1253,6 +1253,7 @@ static ISCSI_CLASS_ATTR(host, field, S_IRUGO, show_host_param_##param, \
1253 NULL); 1253 NULL);
1254 1254
1255iscsi_host_attr(hwaddress, ISCSI_HOST_PARAM_HWADDRESS); 1255iscsi_host_attr(hwaddress, ISCSI_HOST_PARAM_HWADDRESS);
1256iscsi_host_attr(initiatorname, ISCSI_HOST_PARAM_INITIATOR_NAME);
1256 1257
1257#define SETUP_PRIV_SESSION_RD_ATTR(field) \ 1258#define SETUP_PRIV_SESSION_RD_ATTR(field) \
1258do { \ 1259do { \
@@ -1389,6 +1390,7 @@ iscsi_register_transport(struct iscsi_transport *tt)
1389 transport_container_register(&priv->t.host_attrs); 1390 transport_container_register(&priv->t.host_attrs);
1390 1391
1391 SETUP_HOST_RD_ATTR(hwaddress, ISCSI_HOST_HWADDRESS); 1392 SETUP_HOST_RD_ATTR(hwaddress, ISCSI_HOST_HWADDRESS);
1393 SETUP_HOST_RD_ATTR(initiatorname, ISCSI_HOST_INITIATOR_NAME);
1392 BUG_ON(count > ISCSI_HOST_ATTRS); 1394 BUG_ON(count > ISCSI_HOST_ATTRS);
1393 priv->host_attrs[count] = NULL; 1395 priv->host_attrs[count] = NULL;
1394 count = 0; 1396 count = 0;
diff --git a/include/scsi/iscsi_if.h b/include/scsi/iscsi_if.h
index 3d0372e30ca1..e057c5d3703d 100644
--- a/include/scsi/iscsi_if.h
+++ b/include/scsi/iscsi_if.h
@@ -259,10 +259,12 @@ enum iscsi_param {
259/* iSCSI HBA params */ 259/* iSCSI HBA params */
260enum iscsi_host_param { 260enum iscsi_host_param {
261 ISCSI_HOST_PARAM_HWADDRESS, 261 ISCSI_HOST_PARAM_HWADDRESS,
262 ISCSI_HOST_PARAM_INITIATOR_NAME,
262 ISCSI_HOST_PARAM_MAX, 263 ISCSI_HOST_PARAM_MAX,
263}; 264};
264 265
265#define ISCSI_HOST_HWADDRESS (1 << ISCSI_HOST_PARAM_HWADDRESS) 266#define ISCSI_HOST_HWADDRESS (1 << ISCSI_HOST_PARAM_HWADDRESS)
267#define ISCSI_HOST_INITIATOR_NAME (1 << ISCSI_HOST_PARAM_INITIATOR_NAME)
266 268
267#define iscsi_ptr(_handle) ((void*)(unsigned long)_handle) 269#define iscsi_ptr(_handle) ((void*)(unsigned long)_handle)
268#define iscsi_handle(_ptr) ((uint64_t)(unsigned long)_ptr) 270#define iscsi_handle(_ptr) ((uint64_t)(unsigned long)_ptr)
diff --git a/include/scsi/libiscsi.h b/include/scsi/libiscsi.h
index e202cc00c8e7..deae90a56a0d 100644
--- a/include/scsi/libiscsi.h
+++ b/include/scsi/libiscsi.h
@@ -224,6 +224,7 @@ struct iscsi_session {
224 int erl; 224 int erl;
225 int tpgt; 225 int tpgt;
226 char *targetname; 226 char *targetname;
227 char *initiatorname;
227 /* hw address being used for iscsi connection */ 228 /* hw address being used for iscsi connection */
228 char *hwaddress; 229 char *hwaddress;
229 /* control data */ 230 /* control data */