* [PATCH 1/5] libiscsi: Added support to show targetalias in sysfs
2012-01-19 11:06 [PATCH 0/5] qla4xxx: Patches for scsi-misc vikas.chaudhary
@ 2012-01-19 11:06 ` vikas.chaudhary
2012-01-19 11:06 ` [PATCH 2/5] qla4xxx: " vikas.chaudhary
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: vikas.chaudhary @ 2012-01-19 11:06 UTC (permalink / raw)
To: jbottomley, michaelc
Cc: linux-scsi, vikas.chaudhary, lalit.chandivade, ravi.anand
From: Vikas Chaudhary <vikas.chaudhary@qlogic.com>
sysfs patch to view target alias:
/sys/class/iscsi_session/session*/targetalias
Signed-off-by: Vikas Chaudhary <vikas.chaudhary@qlogic.com>
---
drivers/scsi/libiscsi.c | 6 ++++++
include/scsi/libiscsi.h | 1 +
2 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/drivers/scsi/libiscsi.c b/drivers/scsi/libiscsi.c
index 143bbe4..00592e3 100644
--- a/drivers/scsi/libiscsi.c
+++ b/drivers/scsi/libiscsi.c
@@ -2807,6 +2807,7 @@ void iscsi_session_teardown(struct iscsi_cls_session *cls_session)
kfree(session->username);
kfree(session->username_in);
kfree(session->targetname);
+ kfree(session->targetalias);
kfree(session->initiatorname);
kfree(session->ifacename);
@@ -3233,6 +3234,8 @@ int iscsi_set_param(struct iscsi_cls_conn *cls_conn,
return iscsi_switch_str_param(&session->password_in, buf);
case ISCSI_PARAM_TARGET_NAME:
return iscsi_switch_str_param(&session->targetname, buf);
+ case ISCSI_PARAM_TARGET_ALIAS:
+ return iscsi_switch_str_param(&session->targetalias, buf);
case ISCSI_PARAM_TPGT:
sscanf(buf, "%d", &session->tpgt);
break;
@@ -3299,6 +3302,9 @@ int iscsi_session_get_param(struct iscsi_cls_session *cls_session,
case ISCSI_PARAM_TARGET_NAME:
len = sprintf(buf, "%s\n", session->targetname);
break;
+ case ISCSI_PARAM_TARGET_ALIAS:
+ len = sprintf(buf, "%s\n", session->targetalias);
+ break;
case ISCSI_PARAM_TPGT:
len = sprintf(buf, "%d\n", session->tpgt);
break;
diff --git a/include/scsi/libiscsi.h b/include/scsi/libiscsi.h
index cedcff3..2e42e9a 100644
--- a/include/scsi/libiscsi.h
+++ b/include/scsi/libiscsi.h
@@ -284,6 +284,7 @@ struct iscsi_session {
char *password;
char *password_in;
char *targetname;
+ char *targetalias;
char *ifacename;
char *initiatorname;
/* control data */
--
1.7.8.rc2.3.g0911
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/5] qla4xxx: Added support to show targetalias in sysfs
2012-01-19 11:06 [PATCH 0/5] qla4xxx: Patches for scsi-misc vikas.chaudhary
2012-01-19 11:06 ` [PATCH 1/5] libiscsi: Added support to show targetalias in sysfs vikas.chaudhary
@ 2012-01-19 11:06 ` vikas.chaudhary
2012-01-19 11:06 ` [PATCH 3/5] scsi_transport_iscsi: Added support to show port_state and port_speed " vikas.chaudhary
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: vikas.chaudhary @ 2012-01-19 11:06 UTC (permalink / raw)
To: jbottomley, michaelc
Cc: linux-scsi, vikas.chaudhary, lalit.chandivade, ravi.anand
From: Vikas Chaudhary <vikas.chaudhary@qlogic.com>
Signed-off-by: Vikas Chaudhary <vikas.chaudhary@qlogic.com>
---
drivers/scsi/qla4xxx/ql4_os.c | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c
index ce6d3b7..2bd9f1d 100644
--- a/drivers/scsi/qla4xxx/ql4_os.c
+++ b/drivers/scsi/qla4xxx/ql4_os.c
@@ -1552,6 +1552,8 @@ static void qla4xxx_copy_fwddb_param(struct scsi_qla_host *ha,
(char *)ha->name_string, buflen);
iscsi_set_param(cls_conn, ISCSI_PARAM_PERSISTENT_ADDRESS,
(char *)ip_addr, buflen);
+ iscsi_set_param(cls_conn, ISCSI_PARAM_TARGET_ALIAS,
+ (char *)fw_ddb_entry->iscsi_alias, buflen);
}
void qla4xxx_update_session_conn_fwddb_param(struct scsi_qla_host *ha,
@@ -1666,6 +1668,9 @@ void qla4xxx_update_session_conn_param(struct scsi_qla_host *ha,
memcpy(sess->initiatorname, ha->name_string,
min(sizeof(ha->name_string), sizeof(sess->initiatorname)));
+ iscsi_set_param(cls_conn, ISCSI_PARAM_TARGET_ALIAS,
+ (char *)fw_ddb_entry->iscsi_alias, 0);
+
exit_session_conn_param:
if (fw_ddb_entry)
dma_free_coherent(&ha->pdev->dev, sizeof(*fw_ddb_entry),
--
1.7.8.rc2.3.g0911
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 3/5] scsi_transport_iscsi: Added support to show port_state and port_speed in sysfs
2012-01-19 11:06 [PATCH 0/5] qla4xxx: Patches for scsi-misc vikas.chaudhary
2012-01-19 11:06 ` [PATCH 1/5] libiscsi: Added support to show targetalias in sysfs vikas.chaudhary
2012-01-19 11:06 ` [PATCH 2/5] qla4xxx: " vikas.chaudhary
@ 2012-01-19 11:06 ` vikas.chaudhary
2012-01-19 11:06 ` [PATCH 4/5] qla4xxx: " vikas.chaudhary
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: vikas.chaudhary @ 2012-01-19 11:06 UTC (permalink / raw)
To: jbottomley, michaelc
Cc: linux-scsi, vikas.chaudhary, lalit.chandivade, ravi.anand
From: Vikas Chaudhary <vikas.chaudhary@qlogic.com>
sysfs patch to view port_state:
/sys/class/iscsi_host/host*/port_state
sysfs patch to view port_speed:
/sys/class/iscsi_host/host*/port_speed
Signed-off-by: Vikas Chaudhary <vikas.chaudhary@qlogic.com>
---
drivers/scsi/scsi_transport_iscsi.c | 63 +++++++++++++++++++++++++++++++++++
include/scsi/iscsi_if.h | 17 +++++++++
include/scsi/scsi_transport_iscsi.h | 4 ++
3 files changed, 84 insertions(+), 0 deletions(-)
diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c
index cfd4914..97832a2 100644
--- a/drivers/scsi/scsi_transport_iscsi.c
+++ b/drivers/scsi/scsi_transport_iscsi.c
@@ -2476,12 +2476,16 @@ iscsi_host_attr(netdev, ISCSI_HOST_PARAM_NETDEV_NAME);
iscsi_host_attr(hwaddress, ISCSI_HOST_PARAM_HWADDRESS);
iscsi_host_attr(ipaddress, ISCSI_HOST_PARAM_IPADDRESS);
iscsi_host_attr(initiatorname, ISCSI_HOST_PARAM_INITIATOR_NAME);
+iscsi_host_attr(port_state, ISCSI_HOST_PARAM_PORT_STATE);
+iscsi_host_attr(port_speed, ISCSI_HOST_PARAM_PORT_SPEED);
static struct attribute *iscsi_host_attrs[] = {
&dev_attr_host_netdev.attr,
&dev_attr_host_hwaddress.attr,
&dev_attr_host_ipaddress.attr,
&dev_attr_host_initiatorname.attr,
+ &dev_attr_host_port_state.attr,
+ &dev_attr_host_port_speed.attr,
NULL,
};
@@ -2501,6 +2505,10 @@ static umode_t iscsi_host_attr_is_visible(struct kobject *kobj,
param = ISCSI_HOST_PARAM_IPADDRESS;
else if (attr == &dev_attr_host_initiatorname.attr)
param = ISCSI_HOST_PARAM_INITIATOR_NAME;
+ else if (attr == &dev_attr_host_port_state.attr)
+ param = ISCSI_HOST_PARAM_PORT_STATE;
+ else if (attr == &dev_attr_host_port_speed.attr)
+ param = ISCSI_HOST_PARAM_PORT_SPEED;
else {
WARN_ONCE(1, "Invalid host attr");
return 0;
@@ -2514,6 +2522,61 @@ static struct attribute_group iscsi_host_group = {
.is_visible = iscsi_host_attr_is_visible,
};
+/* convert iscsi_port_speed values to ascii string name */
+static const struct {
+ enum iscsi_port_speed value;
+ char *name;
+} iscsi_port_speed_names[] = {
+ {ISCSI_PORT_SPEED_UNKNOWN, "Unknown" },
+ {ISCSI_PORT_SPEED_10MBPS, "10 Mbps" },
+ {ISCSI_PORT_SPEED_100MBPS, "100 Mbps" },
+ {ISCSI_PORT_SPEED_1GBPS, "1 Gbps" },
+ {ISCSI_PORT_SPEED_10GBPS, "10 Gbps" },
+};
+
+char *iscsi_get_port_speed_name(struct Scsi_Host *shost)
+{
+ int i;
+ char *speed = "Unknown!";
+ struct iscsi_cls_host *ihost = shost->shost_data;
+ uint32_t port_speed = ihost->port_speed;
+
+ for (i = 0; i < ARRAY_SIZE(iscsi_port_speed_names); i++) {
+ if (iscsi_port_speed_names[i].value & port_speed) {
+ speed = iscsi_port_speed_names[i].name;
+ break;
+ }
+ }
+ return speed;
+}
+EXPORT_SYMBOL_GPL(iscsi_get_port_speed_name);
+
+/* convert iscsi_port_state values to ascii string name */
+static const struct {
+ enum iscsi_port_state value;
+ char *name;
+} iscsi_port_state_names[] = {
+ {ISCSI_PORT_STATE_DOWN, "LINK DOWN" },
+ {ISCSI_PORT_STATE_UP, "LINK UP" },
+};
+
+char *iscsi_get_port_state_name(struct Scsi_Host *shost)
+{
+ int i;
+ char *state = "Unknown!";
+ struct iscsi_cls_host *ihost = shost->shost_data;
+ uint32_t port_state = ihost->port_state;
+
+ for (i = 0; i < ARRAY_SIZE(iscsi_port_state_names); i++) {
+ if (iscsi_port_state_names[i].value & port_state) {
+ state = iscsi_port_state_names[i].name;
+ break;
+ }
+ }
+ return state;
+}
+EXPORT_SYMBOL_GPL(iscsi_get_port_state_name);
+
static int iscsi_session_match(struct attribute_container *cont,
struct device *dev)
{
diff --git a/include/scsi/iscsi_if.h b/include/scsi/iscsi_if.h
index 2703e3b..e49b7c8 100644
--- a/include/scsi/iscsi_if.h
+++ b/include/scsi/iscsi_if.h
@@ -416,9 +416,26 @@ enum iscsi_host_param {
ISCSI_HOST_PARAM_INITIATOR_NAME,
ISCSI_HOST_PARAM_NETDEV_NAME,
ISCSI_HOST_PARAM_IPADDRESS,
+ ISCSI_HOST_PARAM_PORT_STATE,
+ ISCSI_HOST_PARAM_PORT_SPEED,
ISCSI_HOST_PARAM_MAX,
};
+/* iSCSI port Speed */
+enum iscsi_port_speed {
+ ISCSI_PORT_SPEED_UNKNOWN = 0x1,
+ ISCSI_PORT_SPEED_10MBPS = 0x2,
+ ISCSI_PORT_SPEED_100MBPS = 0x4,
+ ISCSI_PORT_SPEED_1GBPS = 0x8,
+ ISCSI_PORT_SPEED_10GBPS = 0x10,
+};
+
+/* iSCSI port state */
+enum iscsi_port_state {
+ ISCSI_PORT_STATE_DOWN = 0x1,
+ ISCSI_PORT_STATE_UP = 0x2,
+};
+
#define iscsi_ptr(_handle) ((void*)(unsigned long)_handle)
#define iscsi_handle(_ptr) ((uint64_t)(unsigned long)_ptr)
diff --git a/include/scsi/scsi_transport_iscsi.h b/include/scsi/scsi_transport_iscsi.h
index 2c3a46d..fa7ca4e 100644
--- a/include/scsi/scsi_transport_iscsi.h
+++ b/include/scsi/scsi_transport_iscsi.h
@@ -238,6 +238,8 @@ struct iscsi_cls_host {
atomic_t nr_scans;
struct mutex mutex;
struct request_queue *bsg_q;
+ uint32_t port_speed;
+ uint32_t port_state;
};
#define iscsi_job_to_shost(_job) \
@@ -307,5 +309,7 @@ extern struct iscsi_iface *iscsi_create_iface(struct Scsi_Host *shost,
uint32_t iface_num, int dd_size);
extern void iscsi_destroy_iface(struct iscsi_iface *iface);
extern struct iscsi_iface *iscsi_lookup_iface(int handle);
+extern char *iscsi_get_port_speed_name(struct Scsi_Host *shost);
+extern char *iscsi_get_port_state_name(struct Scsi_Host *shost);
#endif
--
1.7.8.rc2.3.g0911
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 4/5] qla4xxx: Added support to show port_state and port_speed in sysfs
2012-01-19 11:06 [PATCH 0/5] qla4xxx: Patches for scsi-misc vikas.chaudhary
` (2 preceding siblings ...)
2012-01-19 11:06 ` [PATCH 3/5] scsi_transport_iscsi: Added support to show port_state and port_speed " vikas.chaudhary
@ 2012-01-19 11:06 ` vikas.chaudhary
2012-01-19 11:06 ` [PATCH 5/5] qla4xxx: Update driver version to 5.02.00-k13 vikas.chaudhary
2012-01-19 12:37 ` [PATCH 0/5] qla4xxx: Patches for scsi-misc Mike Christie
5 siblings, 0 replies; 7+ messages in thread
From: vikas.chaudhary @ 2012-01-19 11:06 UTC (permalink / raw)
To: jbottomley, michaelc
Cc: linux-scsi, vikas.chaudhary, lalit.chandivade, ravi.anand
From: Vikas Chaudhary <vikas.chaudhary@qlogic.com>
Signed-off-by: Vikas Chaudhary <vikas.chaudhary@qlogic.com>
---
drivers/scsi/qla4xxx/ql4_fw.h | 4 +++
drivers/scsi/qla4xxx/ql4_os.c | 47 +++++++++++++++++++++++++++++++++++++++++
2 files changed, 51 insertions(+), 0 deletions(-)
diff --git a/drivers/scsi/qla4xxx/ql4_fw.h b/drivers/scsi/qla4xxx/ql4_fw.h
index 7825c14..5f82b5d 100644
--- a/drivers/scsi/qla4xxx/ql4_fw.h
+++ b/drivers/scsi/qla4xxx/ql4_fw.h
@@ -396,6 +396,10 @@ struct qla_flt_region {
#define FW_ADDSTATE_DHCPv4_LEASE_EXPIRED 0x0008
#define FW_ADDSTATE_LINK_UP 0x0010
#define FW_ADDSTATE_ISNS_SVC_ENABLED 0x0020
+#define FW_ADDSTATE_LINK_SPEED_10MBPS 0x0100
+#define FW_ADDSTATE_LINK_SPEED_100MBPS 0x0200
+#define FW_ADDSTATE_LINK_SPEED_1GBPS 0x0400
+#define FW_ADDSTATE_LINK_SPEED_10GBPS 0x0800
#define MBOX_CMD_GET_DATABASE_ENTRY_DEFAULTS 0x006B
#define IPV6_DEFAULT_DDB_ENTRY 0x0001
diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c
index 2bd9f1d..c1189e5 100644
--- a/drivers/scsi/qla4xxx/ql4_os.c
+++ b/drivers/scsi/qla4xxx/ql4_os.c
@@ -206,6 +206,8 @@ static umode_t ql4_attr_is_visible(int param_type, int param)
case ISCSI_HOST_PARAM_HWADDRESS:
case ISCSI_HOST_PARAM_IPADDRESS:
case ISCSI_HOST_PARAM_INITIATOR_NAME:
+ case ISCSI_HOST_PARAM_PORT_STATE:
+ case ISCSI_HOST_PARAM_PORT_SPEED:
return S_IRUGO;
default:
return 0;
@@ -548,6 +550,43 @@ static enum blk_eh_timer_return qla4xxx_eh_cmd_timed_out(struct scsi_cmnd *sc)
return ret;
}
+static void qla4xxx_set_port_speed(struct Scsi_Host *shost)
+{
+ struct scsi_qla_host *ha = to_qla_host(shost);
+ struct iscsi_cls_host *ihost = shost_priv(shost);
+ uint32_t speed = ISCSI_PORT_SPEED_UNKNOWN;
+
+ qla4xxx_get_firmware_state(ha);
+
+ switch (ha->addl_fw_state & 0x0F00) {
+ case FW_ADDSTATE_LINK_SPEED_10MBPS:
+ speed = ISCSI_PORT_SPEED_10MBPS;
+ break;
+ case FW_ADDSTATE_LINK_SPEED_100MBPS:
+ speed = ISCSI_PORT_SPEED_100MBPS;
+ break;
+ case FW_ADDSTATE_LINK_SPEED_1GBPS:
+ speed = ISCSI_PORT_SPEED_1GBPS;
+ break;
+ case FW_ADDSTATE_LINK_SPEED_10GBPS:
+ speed = ISCSI_PORT_SPEED_10GBPS;
+ break;
+ }
+ ihost->port_speed = speed;
+}
+
+static void qla4xxx_set_port_state(struct Scsi_Host *shost)
+{
+ struct scsi_qla_host *ha = to_qla_host(shost);
+ struct iscsi_cls_host *ihost = shost_priv(shost);
+ uint32_t state = ISCSI_PORT_STATE_DOWN;
+
+ if (test_bit(AF_LINK_UP, &ha->flags))
+ state = ISCSI_PORT_STATE_UP;
+
+ ihost->port_state = state;
+}
+
static int qla4xxx_host_get_param(struct Scsi_Host *shost,
enum iscsi_host_param param, char *buf)
{
@@ -564,6 +603,14 @@ static int qla4xxx_host_get_param(struct Scsi_Host *shost,
case ISCSI_HOST_PARAM_INITIATOR_NAME:
len = sprintf(buf, "%s\n", ha->name_string);
break;
+ case ISCSI_HOST_PARAM_PORT_STATE:
+ qla4xxx_set_port_state(shost);
+ len = sprintf(buf, "%s\n", iscsi_get_port_state_name(shost));
+ break;
+ case ISCSI_HOST_PARAM_PORT_SPEED:
+ qla4xxx_set_port_speed(shost);
+ len = sprintf(buf, "%s\n", iscsi_get_port_speed_name(shost));
+ break;
default:
return -ENOSYS;
}
--
1.7.8.rc2.3.g0911
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 5/5] qla4xxx: Update driver version to 5.02.00-k13
2012-01-19 11:06 [PATCH 0/5] qla4xxx: Patches for scsi-misc vikas.chaudhary
` (3 preceding siblings ...)
2012-01-19 11:06 ` [PATCH 4/5] qla4xxx: " vikas.chaudhary
@ 2012-01-19 11:06 ` vikas.chaudhary
2012-01-19 12:37 ` [PATCH 0/5] qla4xxx: Patches for scsi-misc Mike Christie
5 siblings, 0 replies; 7+ messages in thread
From: vikas.chaudhary @ 2012-01-19 11:06 UTC (permalink / raw)
To: jbottomley, michaelc
Cc: linux-scsi, vikas.chaudhary, lalit.chandivade, ravi.anand
From: Vikas Chaudhary <vikas.chaudhary@qlogic.com>
Signed-off-by: Vikas Chaudhary <vikas.chaudhary@qlogic.com>
---
drivers/scsi/qla4xxx/ql4_version.h | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/scsi/qla4xxx/ql4_version.h b/drivers/scsi/qla4xxx/ql4_version.h
index 133989b..601ee3d 100644
--- a/drivers/scsi/qla4xxx/ql4_version.h
+++ b/drivers/scsi/qla4xxx/ql4_version.h
@@ -5,4 +5,4 @@
* See LICENSE.qla4xxx for copyright and licensing details.
*/
-#define QLA4XXX_DRIVER_VERSION "5.02.00-k12"
+#define QLA4XXX_DRIVER_VERSION "5.02.00-k13"
--
1.7.8.rc2.3.g0911
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 0/5] qla4xxx: Patches for scsi-misc
2012-01-19 11:06 [PATCH 0/5] qla4xxx: Patches for scsi-misc vikas.chaudhary
` (4 preceding siblings ...)
2012-01-19 11:06 ` [PATCH 5/5] qla4xxx: Update driver version to 5.02.00-k13 vikas.chaudhary
@ 2012-01-19 12:37 ` Mike Christie
5 siblings, 0 replies; 7+ messages in thread
From: Mike Christie @ 2012-01-19 12:37 UTC (permalink / raw)
To: vikas.chaudhary; +Cc: jbottomley, linux-scsi, lalit.chandivade, ravi.anand
On 01/19/2012 05:06 AM, vikas.chaudhary@qlogic.com wrote:
> From: Vikas Chaudhary <vikas.chaudhary@qlogic.com>
>
> James,
>
> Please apply the following patches to scsi-misc for inclusion in mainline.
>
> Vikas Chaudhary (5):
> libiscsi: Added support to show targetalias in sysfs
> qla4xxx: Added support to show targetalias in sysfs
> scsi_transport_iscsi: Added support to show port_state and port_speed in sysfs
> qla4xxx: Added support to show port_state and port_speed in sysfs
> qla4xxx: Update driver version to 5.02.00-k13
>
Looks ok to me
Reviewed-by: Mike Christie <michaelc@cs.wisc.edu>
^ permalink raw reply [flat|nested] 7+ messages in thread