* [PATCH] Add FC transport attributes support to qla2xxx
@ 2004-03-22 18:40 Martin Hicks
2004-03-23 18:44 ` Andrew Vasquez
0 siblings, 1 reply; 2+ messages in thread
From: Martin Hicks @ 2004-03-22 18:40 UTC (permalink / raw)
To: andrew.vasquez; +Cc: linux-scsi
[-- Attachment #1: Type: text/plain, Size: 422 bytes --]
Hi Andrew,
Here is a patch that adds FC transport attributes to the qla2xxx driver.
The patch should apply cleanly to a recent 2.6 kernel with the FC
attributes update that I just sent to linux-scsi.
There are two patches. The first one contains the driver changes and
the second one contains a Kconfig update.
thanks
mh
--
Martin Hicks Wild Open Source Inc.
mort@wildopensource.com 613-266-2296
[-- Attachment #2: qla2xxx-trans-attrs.patch --]
[-- Type: text/plain, Size: 4015 bytes --]
# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
# ChangeSet 1.1814 -> 1.1815
# drivers/scsi/qla2xxx/qla_os.h 1.2 -> 1.3
# drivers/scsi/qla2xxx/qla_os.c 1.6 -> 1.7
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 04/03/22 mort@tomahawk.engr.sgi.com 1.1815
# Update qla2xxx to export a few attributes to sysfs using
# the Transport attributes API
# --------------------------------------------
#
diff -Nru a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
--- a/drivers/scsi/qla2xxx/qla_os.c Mon Mar 22 09:13:23 2004
+++ b/drivers/scsi/qla2xxx/qla_os.c Mon Mar 22 09:13:23 2004
@@ -175,6 +175,8 @@
.max_sectors = 0xFFFF,
};
+static struct scsi_transport_template *qla2xxx_transport_template = NULL;
+
static void qla2x00_display_fc_names(scsi_qla_host_t *);
void qla2x00_blink_led(scsi_qla_host_t *);
@@ -1766,7 +1768,7 @@
}
/**************************************************************************
-* qla2x00_slave_configure
+* qla2xxx_slave_configure
*
* Description:
**************************************************************************/
@@ -2061,6 +2063,8 @@
host->max_cmd_len = MAX_CMDSZ;
host->max_channel = ha->ports - 1;
host->max_lun = ha->max_luns;
+ BUG_ON(qla2xxx_transport_template == NULL);
+ host->transportt = qla2xxx_transport_template;
host->unique_id = ha->instance;
host->max_id = ha->max_targets;
@@ -4448,6 +4452,64 @@
return -ETIMEDOUT;
}
+static void
+qla2xxx_get_port_id(struct scsi_device *sdev)
+{
+ scsi_qla_host_t *ha = to_qla_host(sdev->host);
+ struct fc_port *fc;
+
+ list_for_each_entry(fc, &ha->fcports, list) {
+ if (fc->os_target_id == sdev->id) {
+ fc_port_id(sdev) = fc->d_id.b.domain << 16 |
+ fc->d_id.b.area << 8 |
+ fc->d_id.b.al_pa;
+ return;
+ }
+ }
+ fc_port_id(sdev) = -1;
+}
+
+static void
+qla2xxx_get_port_name(struct scsi_device *sdev)
+{
+ scsi_qla_host_t *ha = to_qla_host(sdev->host);
+ struct fc_port *fc;
+
+ list_for_each_entry(fc, &ha->fcports, list) {
+ if (fc->os_target_id == sdev->id) {
+ fc_port_name(sdev) =
+ __be64_to_cpu(*(uint64_t *)fc->port_name);
+ return;
+ }
+ }
+ fc_port_name(sdev) = -1;
+}
+
+static void
+qla2xxx_get_node_name(struct scsi_device *sdev)
+{
+ scsi_qla_host_t *ha = to_qla_host(sdev->host);
+ struct fc_port *fc;
+
+ list_for_each_entry(fc, &ha->fcports, list) {
+ if (fc->os_target_id == sdev->id) {
+ fc_node_name(sdev) =
+ __be64_to_cpu(*(uint64_t *)fc->node_name);
+ return;
+ }
+ }
+ fc_node_name(sdev) = -1;
+}
+
+static struct fc_function_template qla2xxx_transport_functions = {
+ .get_port_id = qla2xxx_get_port_id,
+ .show_port_id = 1,
+ .get_port_name = qla2xxx_get_port_name,
+ .show_port_name = 1,
+ .get_node_name = qla2xxx_get_node_name,
+ .show_node_name = 1,
+};
+
/**
* qla2x00_module_init - Module initialization.
**/
@@ -4470,6 +4532,10 @@
return -ENOMEM;
}
+ qla2xxx_transport_template = fc_attach_transport(&qla2xxx_transport_functions);
+ if (!qla2xxx_transport_template)
+ return -ENODEV;
+
printk(KERN_INFO
"QLogic Fibre Channel HBA Driver (%p)\n", qla2x00_set_info);
@@ -4491,6 +4557,8 @@
}
srb_cachep = NULL;
}
+
+ fc_release_transport(qla2xxx_transport_template);
}
module_init(qla2x00_module_init);
diff -Nru a/drivers/scsi/qla2xxx/qla_os.h b/drivers/scsi/qla2xxx/qla_os.h
--- a/drivers/scsi/qla2xxx/qla_os.h Mon Mar 22 09:13:23 2004
+++ b/drivers/scsi/qla2xxx/qla_os.h Mon Mar 22 09:13:23 2004
@@ -45,6 +45,7 @@
#include <linux/bio.h>
#include <linux/moduleparam.h>
#include <linux/capability.h>
+#include <linux/list.h>
#include <asm/system.h>
@@ -62,6 +63,8 @@
#include <scsi/scsicam.h>
#include <scsi/scsi_ioctl.h>
+#include <scsi/scsi_transport.h>
+#include <scsi/scsi_transport_fc.h>
//TODO Fix this!!!
/*
[-- Attachment #3: qla2xxx-trans-attrs-Kconfig.patch --]
[-- Type: text/plain, Size: 2110 bytes --]
# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
# ChangeSet 1.1832 -> 1.1833
# drivers/scsi/qla2xxx/Kconfig 1.5 -> 1.6
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 04/03/22 mort@tomahawk.engr.sgi.com 1.1833
# Make all qla2xxx drivers require FC transport attributes
# --------------------------------------------
#
diff -Nru a/drivers/scsi/qla2xxx/Kconfig b/drivers/scsi/qla2xxx/Kconfig
--- a/drivers/scsi/qla2xxx/Kconfig Mon Mar 22 10:29:07 2004
+++ b/drivers/scsi/qla2xxx/Kconfig Mon Mar 22 10:29:07 2004
@@ -6,18 +6,21 @@
config SCSI_QLA21XX
tristate "QLogic ISP2100 host adapter family support"
depends on SCSI_QLA2XXX
+ select SCSI_FC_ATTRS
---help---
This driver supports the QLogic 21xx (ISP2100) host adapter family.
config SCSI_QLA22XX
tristate "QLogic ISP2200 host adapter family support"
depends on SCSI_QLA2XXX
+ select SCSI_FC_ATTRS
---help---
This driver supports the QLogic 22xx (ISP2200) host adapter family.
config SCSI_QLA2300
tristate "QLogic ISP2300 host adapter family support"
depends on SCSI_QLA2XXX
+ select SCSI_FC_ATTRS
---help---
This driver supports the QLogic 2300 (ISP2300, and ISP2312) host
adapter family.
@@ -25,17 +28,20 @@
config SCSI_QLA2322
tristate "QLogic ISP2322 host adapter family support"
depends on SCSI_QLA2XXX
+ select SCSI_FC_ATTRS
---help---
This driver supports the QLogic 2322 (ISP2322) host adapter family.
config SCSI_QLA6312
tristate "QLogic ISP6312 host adapter family support"
depends on SCSI_QLA2XXX
+ select SCSI_FC_ATTRS
---help---
This driver supports the QLogic 6312 (ISP6312) host adapter family.
config SCSI_QLA6322
tristate "QLogic ISP6322 host adapter family support"
depends on SCSI_QLA2XXX
+ select SCSI_FC_ATTRS
---help---
This driver supports the QLogic 6322 (ISP6322) host adapter family.
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] Add FC transport attributes support to qla2xxx
2004-03-22 18:40 [PATCH] Add FC transport attributes support to qla2xxx Martin Hicks
@ 2004-03-23 18:44 ` Andrew Vasquez
0 siblings, 0 replies; 2+ messages in thread
From: Andrew Vasquez @ 2004-03-23 18:44 UTC (permalink / raw)
To: Martin Hicks; +Cc: linux-scsi
On Mon, 22 Mar 2004, Martin Hicks wrote:
> Here is a patch that adds FC transport attributes to the qla2xxx driver.
> The patch should apply cleanly to a recent 2.6 kernel with the FC
> attributes update that I just sent to linux-scsi.
>
> There are two patches. The first one contains the driver changes and
> the second one contains a Kconfig update.
>
The changes look fine, I'll integrate them into our tree. James,
please apply to your latest bk-tree.
Thanks,
Andrew Vasquez
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2004-03-23 19:08 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-03-22 18:40 [PATCH] Add FC transport attributes support to qla2xxx Martin Hicks
2004-03-23 18:44 ` Andrew Vasquez
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox