diff options
author | andrew.vasquez@qlogic.com <andrew.vasquez@qlogic.com> | 2006-01-13 20:05:58 -0500 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.(none)> | 2006-01-14 11:55:39 -0500 |
commit | 79f89a4296ff22f09baf538d4ff2a6d0c3097a73 (patch) | |
tree | e57901e45a0da996bde0c583560265b0913ebd69 | |
parent | fdd52dfa3c311a2583850a2fbea99f329be861d7 (diff) |
[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: Andrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
-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_isr.c | 3 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_os.c | 6 |
4 files changed, 11 insertions, 2 deletions
diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h index 7872c11f06e3..32be4c14cccb 100644 --- a/drivers/scsi/qla2xxx/qla_gbl.h +++ b/drivers/scsi/qla2xxx/qla_gbl.h | |||
@@ -62,6 +62,7 @@ extern int qlport_down_retry; | |||
62 | extern int ql2xplogiabsentdevice; | 62 | extern int ql2xplogiabsentdevice; |
63 | extern int ql2xloginretrycount; | 63 | extern int ql2xloginretrycount; |
64 | extern int ql2xfdmienable; | 64 | extern int ql2xfdmienable; |
65 | extern int ql2xprocessrscn; | ||
65 | 66 | ||
66 | extern void qla2x00_sp_compl(scsi_qla_host_t *, srb_t *); | 67 | extern void qla2x00_sp_compl(scsi_qla_host_t *, srb_t *); |
67 | 68 | ||
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c index 8635bd1ae8a0..a91fea69ad63 100644 --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c | |||
@@ -2653,7 +2653,8 @@ qla2x00_device_resync(scsi_qla_host_t *ha) | |||
2653 | 2653 | ||
2654 | switch (format) { | 2654 | switch (format) { |
2655 | case 0: | 2655 | case 0: |
2656 | if (!IS_QLA2100(ha) && !IS_QLA2200(ha) && | 2656 | if (ql2xprocessrscn && |
2657 | !IS_QLA2100(ha) && !IS_QLA2200(ha) && | ||
2657 | !IS_QLA6312(ha) && !IS_QLA6322(ha) && | 2658 | !IS_QLA6312(ha) && !IS_QLA6322(ha) && |
2658 | !IS_QLA24XX(ha) && !IS_QLA25XX(ha) && | 2659 | !IS_QLA24XX(ha) && !IS_QLA25XX(ha) && |
2659 | ha->flags.init_done) { | 2660 | ha->flags.init_done) { |
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c index 8a539dd48753..f63af081d4ff 100644 --- a/drivers/scsi/qla2xxx/qla_isr.c +++ b/drivers/scsi/qla2xxx/qla_isr.c | |||
@@ -519,7 +519,8 @@ qla2x00_async_event(scsi_qla_host_t *ha, uint16_t *mb) | |||
519 | * us, create a new entry in our rscn fcports list and handle | 519 | * us, create a new entry in our rscn fcports list and handle |
520 | * the event like an RSCN. | 520 | * the event like an RSCN. |
521 | */ | 521 | */ |
522 | if (!IS_QLA2100(ha) && !IS_QLA2200(ha) && !IS_QLA6312(ha) && | 522 | if (ql2xprocessrscn && |
523 | !IS_QLA2100(ha) && !IS_QLA2200(ha) && !IS_QLA6312(ha) && | ||
523 | !IS_QLA6322(ha) && !IS_QLA24XX(ha) && !IS_QLA25XX(ha) && | 524 | !IS_QLA6322(ha) && !IS_QLA24XX(ha) && !IS_QLA25XX(ha) && |
524 | ha->flags.init_done && mb[1] != 0xffff && | 525 | ha->flags.init_done && mb[1] != 0xffff && |
525 | ((ha->operating_mode == P2P && mb[1] != 0) || | 526 | ((ha->operating_mode == P2P && mb[1] != 0) || |
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 24304300d7b5..4916847d84ec 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c | |||
@@ -71,6 +71,12 @@ MODULE_PARM_DESC(ql2xfdmienable, | |||
71 | "Enables FDMI registratons " | 71 | "Enables FDMI registratons " |
72 | "Default is 0 - no FDMI. 1 - perfom FDMI."); | 72 | "Default is 0 - no FDMI. 1 - perfom FDMI."); |
73 | 73 | ||
74 | int ql2xprocessrscn; | ||
75 | module_param(ql2xprocessrscn, int, S_IRUGO|S_IRUSR); | ||
76 | MODULE_PARM_DESC(ql2xprocessrscn, | ||
77 | "Option to enable port RSCN handling via a series of less" | ||
78 | "fabric intrusive ADISCs and PLOGIs."); | ||
79 | |||
74 | /* | 80 | /* |
75 | * SCSI host template entry points | 81 | * SCSI host template entry points |
76 | */ | 82 | */ |