[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>

authored by

Andrew Vasquez and committed by
James Bottomley
e5896bd5 711c1d91

+10 -1
+1
drivers/scsi/qla2xxx/qla_gbl.h
··· 62 extern int ql2xallocfwdump; 63 extern int ql2xextended_error_logging; 64 extern int ql2xqfullrampup; 65 66 extern int qla2x00_loop_reset(scsi_qla_host_t *); 67 extern void qla2x00_abort_all_cmds(scsi_qla_host_t *, int);
··· 62 extern int ql2xallocfwdump; 63 extern int ql2xextended_error_logging; 64 extern int ql2xqfullrampup; 65 + extern int ql2xiidmaenable; 66 67 extern int qla2x00_loop_reset(scsi_qla_host_t *); 68 extern void qla2x00_abort_all_cmds(scsi_qla_host_t *, int);
+2 -1
drivers/scsi/qla2xxx/qla_init.c
··· 2559 } else if (qla2x00_gnn_id(ha, swl) != QLA_SUCCESS) { 2560 kfree(swl); 2561 swl = NULL; 2562 - } else if (qla2x00_gfpn_id(ha, swl) == QLA_SUCCESS) { 2563 qla2x00_gpsc(ha, swl); 2564 } 2565 }
··· 2559 } else if (qla2x00_gnn_id(ha, swl) != QLA_SUCCESS) { 2560 kfree(swl); 2561 swl = NULL; 2562 + } else if (ql2xiidmaenable && 2563 + qla2x00_gfpn_id(ha, swl) == QLA_SUCCESS) { 2564 qla2x00_gpsc(ha, swl); 2565 } 2566 }
+7
drivers/scsi/qla2xxx/qla_os.c
··· 86 "depth for a device after a queue-full condition has been " 87 "detected. Default is 120 seconds."); 88 89 /* 90 * SCSI host template entry points 91 */
··· 86 "depth for a device after a queue-full condition has been " 87 "detected. Default is 120 seconds."); 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 + 96 /* 97 * SCSI host template entry points 98 */