aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Vasquez <andrew.vasquez@qlogic.com>2008-07-10 19:55:52 -0400
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2008-07-26 15:14:38 -0400
commite5896bd5dcf71fa43ddcc545340b847c13d29c44 (patch)
treefdbfec888dc878552e9f10d50b954b67bca8ce5b
parent711c1d916be083a5bf4fbc8e66201e7e9f8b9334 (diff)
[SCSI] qla2xxx: Allow the user the option of disabling iIDMA.
iIDMA support requires the driver issue several additional fabric-managegment (FM) commands per port discovered during SNS scanning -- GFPN (Get Fabric Port Name) and GPSC (Get Port Speed Capabilities). It has been found during testing that some switches do not respond as *well* as expected to these commands (silence -- no ACC nor BS_RJT). So, to handle such conditions, allow the user the ability to indirectly disable the FM commands by disabling iIDMA with the ql2xiidmaenable module-parameter. Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
-rw-r--r--drivers/scsi/qla2xxx/qla_gbl.h1
-rw-r--r--drivers/scsi/qla2xxx/qla_init.c3
-rw-r--r--drivers/scsi/qla2xxx/qla_os.c7
3 files changed, 10 insertions, 1 deletions
diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h
index 1d57ddd74fd5..f921ccdcc610 100644
--- a/drivers/scsi/qla2xxx/qla_gbl.h
+++ b/drivers/scsi/qla2xxx/qla_gbl.h
@@ -62,6 +62,7 @@ extern int ql2xfdmienable;
62extern int ql2xallocfwdump; 62extern int ql2xallocfwdump;
63extern int ql2xextended_error_logging; 63extern int ql2xextended_error_logging;
64extern int ql2xqfullrampup; 64extern int ql2xqfullrampup;
65extern int ql2xiidmaenable;
65 66
66extern int qla2x00_loop_reset(scsi_qla_host_t *); 67extern int qla2x00_loop_reset(scsi_qla_host_t *);
67extern void qla2x00_abort_all_cmds(scsi_qla_host_t *, int); 68extern void qla2x00_abort_all_cmds(scsi_qla_host_t *, int);
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index 833a6429d9b9..f4cd2cd874b9 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -2559,7 +2559,8 @@ qla2x00_find_all_fabric_devs(scsi_qla_host_t *ha, struct list_head *new_fcports)
2559 } else if (qla2x00_gnn_id(ha, swl) != QLA_SUCCESS) { 2559 } else if (qla2x00_gnn_id(ha, swl) != QLA_SUCCESS) {
2560 kfree(swl); 2560 kfree(swl);
2561 swl = NULL; 2561 swl = NULL;
2562 } else if (qla2x00_gfpn_id(ha, swl) == QLA_SUCCESS) { 2562 } else if (ql2xiidmaenable &&
2563 qla2x00_gfpn_id(ha, swl) == QLA_SUCCESS) {
2563 qla2x00_gpsc(ha, swl); 2564 qla2x00_gpsc(ha, swl);
2564 } 2565 }
2565 } 2566 }
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index e98d502d649e..9c3a57fa5060 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -86,6 +86,13 @@ MODULE_PARM_DESC(ql2xqfullrampup,
86 "depth for a device after a queue-full condition has been " 86 "depth for a device after a queue-full condition has been "
87 "detected. Default is 120 seconds."); 87 "detected. Default is 120 seconds.");
88 88
89int ql2xiidmaenable=1;
90module_param(ql2xiidmaenable, int, S_IRUGO|S_IRUSR);
91MODULE_PARM_DESC(ql2xiidmaenable,
92 "Enables iIDMA settings "
93 "Default is 1 - perform iIDMA. 0 - no iIDMA.");
94
95
89/* 96/*
90 * SCSI host template entry points 97 * SCSI host template entry points
91 */ 98 */