Commit 79f89a42 authored by andrew.vasquez@qlogic.com's avatar andrew.vasquez@qlogic.com Committed by James Bottomley
Browse files

[SCSI] qla2xxx: Disable port-type RSCN handling via driver state-machine.



Given the semantic changes in both the device-model and
fc-transport APIs, the driver's handling of port-type RSCNs
via a series of ADISCs and PLOGIs can cause series of
badness ranging from unexpectedly device loss to devices not
being discovered.

In the interim, disable (via a module-parameter) this
feature and allow RSCN management to continue to occur
within the driver's DPC thread.
Signed-off-by: default avatarAndrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent fdd52dfa
...@@ -62,6 +62,7 @@ extern int qlport_down_retry; ...@@ -62,6 +62,7 @@ extern int qlport_down_retry;
extern int ql2xplogiabsentdevice; extern int ql2xplogiabsentdevice;
extern int ql2xloginretrycount; extern int ql2xloginretrycount;
extern int ql2xfdmienable; extern int ql2xfdmienable;
extern int ql2xprocessrscn;
extern void qla2x00_sp_compl(scsi_qla_host_t *, srb_t *); extern void qla2x00_sp_compl(scsi_qla_host_t *, srb_t *);
......
...@@ -2653,7 +2653,8 @@ qla2x00_device_resync(scsi_qla_host_t *ha) ...@@ -2653,7 +2653,8 @@ qla2x00_device_resync(scsi_qla_host_t *ha)
switch (format) { switch (format) {
case 0: case 0:
if (!IS_QLA2100(ha) && !IS_QLA2200(ha) && if (ql2xprocessrscn &&
!IS_QLA2100(ha) && !IS_QLA2200(ha) &&
!IS_QLA6312(ha) && !IS_QLA6322(ha) && !IS_QLA6312(ha) && !IS_QLA6322(ha) &&
!IS_QLA24XX(ha) && !IS_QLA25XX(ha) && !IS_QLA24XX(ha) && !IS_QLA25XX(ha) &&
ha->flags.init_done) { ha->flags.init_done) {
......
...@@ -519,7 +519,8 @@ qla2x00_async_event(scsi_qla_host_t *ha, uint16_t *mb) ...@@ -519,7 +519,8 @@ qla2x00_async_event(scsi_qla_host_t *ha, uint16_t *mb)
* us, create a new entry in our rscn fcports list and handle * us, create a new entry in our rscn fcports list and handle
* the event like an RSCN. * the event like an RSCN.
*/ */
if (!IS_QLA2100(ha) && !IS_QLA2200(ha) && !IS_QLA6312(ha) && if (ql2xprocessrscn &&
!IS_QLA2100(ha) && !IS_QLA2200(ha) && !IS_QLA6312(ha) &&
!IS_QLA6322(ha) && !IS_QLA24XX(ha) && !IS_QLA25XX(ha) && !IS_QLA6322(ha) && !IS_QLA24XX(ha) && !IS_QLA25XX(ha) &&
ha->flags.init_done && mb[1] != 0xffff && ha->flags.init_done && mb[1] != 0xffff &&
((ha->operating_mode == P2P && mb[1] != 0) || ((ha->operating_mode == P2P && mb[1] != 0) ||
......
...@@ -71,6 +71,12 @@ MODULE_PARM_DESC(ql2xfdmienable, ...@@ -71,6 +71,12 @@ MODULE_PARM_DESC(ql2xfdmienable,
"Enables FDMI registratons " "Enables FDMI registratons "
"Default is 0 - no FDMI. 1 - perfom FDMI."); "Default is 0 - no FDMI. 1 - perfom FDMI.");
int ql2xprocessrscn;
module_param(ql2xprocessrscn, int, S_IRUGO|S_IRUSR);
MODULE_PARM_DESC(ql2xprocessrscn,
"Option to enable port RSCN handling via a series of less"
"fabric intrusive ADISCs and PLOGIs.");
/* /*
* SCSI host template entry points * SCSI host template entry points
*/ */
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment