diff options
author | Andrew Vasquez <andrew.vasquez@qlogic.com> | 2008-07-10 19:55:52 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2008-07-26 15:14:38 -0400 |
commit | e5896bd5dcf71fa43ddcc545340b847c13d29c44 (patch) | |
tree | fdbfec888dc878552e9f10d50b954b67bca8ce5b /drivers/scsi/qla2xxx | |
parent | 711c1d916be083a5bf4fbc8e66201e7e9f8b9334 (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>
Diffstat (limited to 'drivers/scsi/qla2xxx')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_gbl.h | 1 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_init.c | 3 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_os.c | 7 |
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; | |||
62 | extern int ql2xallocfwdump; | 62 | extern int ql2xallocfwdump; |
63 | extern int ql2xextended_error_logging; | 63 | extern int ql2xextended_error_logging; |
64 | extern int ql2xqfullrampup; | 64 | extern int ql2xqfullrampup; |
65 | extern int ql2xiidmaenable; | ||
65 | 66 | ||
66 | extern int qla2x00_loop_reset(scsi_qla_host_t *); | 67 | extern int qla2x00_loop_reset(scsi_qla_host_t *); |
67 | extern void qla2x00_abort_all_cmds(scsi_qla_host_t *, int); | 68 | extern 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 | ||
89 | int ql2xiidmaenable=1; | ||
90 | module_param(ql2xiidmaenable, int, S_IRUGO|S_IRUSR); | ||
91 | MODULE_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 | */ |