aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/qla2xxx/qla_def.h98
-rw-r--r--drivers/scsi/qla2xxx/qla_init.c20
-rw-r--r--drivers/scsi/qla2xxx/qla_isr.c12
-rw-r--r--drivers/scsi/qla2xxx/qla_mbx.c4
-rw-r--r--drivers/scsi/qla2xxx/qla_os.c8
5 files changed, 15 insertions, 127 deletions
diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h
index 421c6343e1c1..757e31d62146 100644
--- a/drivers/scsi/qla2xxx/qla_def.h
+++ b/drivers/scsi/qla2xxx/qla_def.h
@@ -201,20 +201,7 @@ typedef struct srb {
201/* 201/*
202 * SRB flag definitions 202 * SRB flag definitions
203 */ 203 */
204#define SRB_TIMEOUT BIT_0 /* Command timed out */ 204#define SRB_DMA_VALID BIT_0 /* Command sent to ISP */
205#define SRB_DMA_VALID BIT_1 /* Command sent to ISP */
206#define SRB_WATCHDOG BIT_2 /* Command on watchdog list */
207#define SRB_ABORT_PENDING BIT_3 /* Command abort sent to device */
208
209#define SRB_ABORTED BIT_4 /* Command aborted command already */
210#define SRB_RETRY BIT_5 /* Command needs retrying */
211#define SRB_GOT_SENSE BIT_6 /* Command has sense data */
212#define SRB_FAILOVER BIT_7 /* Command in failover state */
213
214#define SRB_BUSY BIT_8 /* Command is in busy retry state */
215#define SRB_FO_CANCEL BIT_9 /* Command don't need to do failover */
216#define SRB_IOCTL BIT_10 /* IOCTL command. */
217#define SRB_TAPE BIT_11 /* FCP2 (Tape) command. */
218 205
219/* 206/*
220 * ISP I/O Register Set structure definitions. 207 * ISP I/O Register Set structure definitions.
@@ -1570,39 +1557,13 @@ typedef struct fc_port {
1570#define FCS_DEVICE_DEAD 2 1557#define FCS_DEVICE_DEAD 2
1571#define FCS_DEVICE_LOST 3 1558#define FCS_DEVICE_LOST 3
1572#define FCS_ONLINE 4 1559#define FCS_ONLINE 4
1573#define FCS_NOT_SUPPORTED 5
1574#define FCS_FAILOVER 6
1575#define FCS_FAILOVER_FAILED 7
1576 1560
1577/* 1561/*
1578 * FC port flags. 1562 * FC port flags.
1579 */ 1563 */
1580#define FCF_FABRIC_DEVICE BIT_0 1564#define FCF_FABRIC_DEVICE BIT_0
1581#define FCF_LOGIN_NEEDED BIT_1 1565#define FCF_LOGIN_NEEDED BIT_1
1582#define FCF_FO_MASKED BIT_2 1566#define FCF_TAPE_PRESENT BIT_2
1583#define FCF_FAILOVER_NEEDED BIT_3
1584#define FCF_RESET_NEEDED BIT_4
1585#define FCF_PERSISTENT_BOUND BIT_5
1586#define FCF_TAPE_PRESENT BIT_6
1587#define FCF_FARP_DONE BIT_7
1588#define FCF_FARP_FAILED BIT_8
1589#define FCF_FARP_REPLY_NEEDED BIT_9
1590#define FCF_AUTH_REQ BIT_10
1591#define FCF_SEND_AUTH_REQ BIT_11
1592#define FCF_RECEIVE_AUTH_REQ BIT_12
1593#define FCF_AUTH_SUCCESS BIT_13
1594#define FCF_RLC_SUPPORT BIT_14
1595#define FCF_CONFIG BIT_15 /* Needed? */
1596#define FCF_RESCAN_NEEDED BIT_16
1597#define FCF_XP_DEVICE BIT_17
1598#define FCF_MSA_DEVICE BIT_18
1599#define FCF_EVA_DEVICE BIT_19
1600#define FCF_MSA_PORT_ACTIVE BIT_20
1601#define FCF_FAILBACK_DISABLE BIT_21
1602#define FCF_FAILOVER_DISABLE BIT_22
1603#define FCF_DSXXX_DEVICE BIT_23
1604#define FCF_AA_EVA_DEVICE BIT_24
1605#define FCF_AA_MSA_DEVICE BIT_25
1606 1567
1607/* No loop ID flag. */ 1568/* No loop ID flag. */
1608#define FC_NO_LOOP_ID 0x1000 1569#define FC_NO_LOOP_ID 0x1000
@@ -2257,7 +2218,6 @@ struct qla_hw_data {
2257 uint32_t msix_enabled :1; 2218 uint32_t msix_enabled :1;
2258 uint32_t disable_serdes :1; 2219 uint32_t disable_serdes :1;
2259 uint32_t gpsc_supported :1; 2220 uint32_t gpsc_supported :1;
2260 uint32_t vsan_enabled :1;
2261 uint32_t npiv_supported :1; 2221 uint32_t npiv_supported :1;
2262 uint32_t fce_enabled :1; 2222 uint32_t fce_enabled :1;
2263 uint32_t fac_supported :1; 2223 uint32_t fac_supported :1;
@@ -2302,7 +2262,6 @@ struct qla_hw_data {
2302 uint16_t max_loop_id; 2262 uint16_t max_loop_id;
2303 2263
2304 uint16_t fb_rev; 2264 uint16_t fb_rev;
2305 uint16_t max_public_loop_ids;
2306 uint16_t min_external_loopid; /* First external loop Id */ 2265 uint16_t min_external_loopid; /* First external loop Id */
2307 2266
2308#define PORT_SPEED_UNKNOWN 0xFFFF 2267#define PORT_SPEED_UNKNOWN 0xFFFF
@@ -2458,15 +2417,6 @@ struct qla_hw_data {
2458 struct completion mbx_cmd_comp; /* Serialize mbx access */ 2417 struct completion mbx_cmd_comp; /* Serialize mbx access */
2459 struct completion mbx_intr_comp; /* Used for completion notification */ 2418 struct completion mbx_intr_comp; /* Used for completion notification */
2460 2419
2461 uint32_t mbx_flags;
2462#define MBX_IN_PROGRESS BIT_0
2463#define MBX_BUSY BIT_1 /* Got the Access */
2464#define MBX_SLEEPING_ON_SEM BIT_2
2465#define MBX_POLLING_FOR_COMP BIT_3
2466#define MBX_COMPLETED BIT_4
2467#define MBX_TIMEDOUT BIT_5
2468#define MBX_ACCESS_TIMEDOUT BIT_6
2469
2470 /* Basic firmware related information. */ 2420 /* Basic firmware related information. */
2471 uint16_t fw_major_version; 2421 uint16_t fw_major_version;
2472 uint16_t fw_minor_version; 2422 uint16_t fw_minor_version;
@@ -2619,36 +2569,19 @@ typedef struct scsi_qla_host {
2619#define LOOP_RESYNC_ACTIVE 5 2569#define LOOP_RESYNC_ACTIVE 5
2620#define LOCAL_LOOP_UPDATE 6 /* Perform a local loop update. */ 2570#define LOCAL_LOOP_UPDATE 6 /* Perform a local loop update. */
2621#define RSCN_UPDATE 7 /* Perform an RSCN update. */ 2571#define RSCN_UPDATE 7 /* Perform an RSCN update. */
2622#define MAILBOX_RETRY 8 2572#define RELOGIN_NEEDED 8
2623#define ISP_RESET_NEEDED 9 /* Initiate a ISP reset. */ 2573#define REGISTER_FC4_NEEDED 9 /* SNS FC4 registration required. */
2624#define FAILOVER_EVENT_NEEDED 10 2574#define ISP_ABORT_RETRY 10 /* ISP aborted. */
2625#define FAILOVER_EVENT 11 2575#define BEACON_BLINK_NEEDED 11
2626#define FAILOVER_NEEDED 12 2576#define REGISTER_FDMI_NEEDED 12
2627#define SCSI_RESTART_NEEDED 13 /* Processes SCSI retry queue. */ 2577#define FCPORT_UPDATE_NEEDED 13
2628#define PORT_RESTART_NEEDED 14 /* Processes Retry queue. */ 2578#define VP_DPC_NEEDED 14 /* wake up for VP dpc handling */
2629#define RESTART_QUEUES_NEEDED 15 /* Restarts the Lun queue. */ 2579#define UNLOADING 15
2630#define ABORT_QUEUES_NEEDED 16 2580#define NPIV_CONFIG_NEEDED 16
2631#define RELOGIN_NEEDED 17
2632#define LOGIN_RETRY_NEEDED 18 /* Initiate required fabric logins. */
2633#define REGISTER_FC4_NEEDED 19 /* SNS FC4 registration required. */
2634#define ISP_ABORT_RETRY 20 /* ISP aborted. */
2635#define FCPORT_RESCAN_NEEDED 21 /* IO descriptor processing needed */
2636#define IODESC_PROCESS_NEEDED 22 /* IO descriptor processing needed */
2637#define IOCTL_ERROR_RECOVERY 23
2638#define LOOP_RESET_NEEDED 24
2639#define BEACON_BLINK_NEEDED 25
2640#define REGISTER_FDMI_NEEDED 26
2641#define FCPORT_UPDATE_NEEDED 27
2642#define VP_DPC_NEEDED 28 /* wake up for VP dpc handling */
2643#define UNLOADING 29
2644#define NPIV_CONFIG_NEEDED 30
2645 2581
2646 uint32_t device_flags; 2582 uint32_t device_flags;
2647#define DFLG_LOCAL_DEVICES BIT_0 2583#define SWITCH_FOUND BIT_0
2648#define DFLG_RETRY_LOCAL_DEVICES BIT_1 2584#define DFLG_NO_CABLE BIT_1
2649#define DFLG_FABRIC_DEVICES BIT_2
2650#define SWITCH_FOUND BIT_3
2651#define DFLG_NO_CABLE BIT_4
2652 2585
2653 srb_t *status_srb; /* Status continuation entry. */ 2586 srb_t *status_srb; /* Status continuation entry. */
2654 2587
@@ -2761,10 +2694,5 @@ typedef struct scsi_qla_host {
2761#include "qla_inline.h" 2694#include "qla_inline.h"
2762 2695
2763#define CMD_SP(Cmnd) ((Cmnd)->SCp.ptr) 2696#define CMD_SP(Cmnd) ((Cmnd)->SCp.ptr)
2764#define CMD_COMPL_STATUS(Cmnd) ((Cmnd)->SCp.this_residual)
2765#define CMD_RESID_LEN(Cmnd) ((Cmnd)->SCp.buffers_residual)
2766#define CMD_SCSI_STATUS(Cmnd) ((Cmnd)->SCp.Status)
2767#define CMD_ACTUAL_SNSLEN(Cmnd) ((Cmnd)->SCp.Message)
2768#define CMD_ENTRY_STATUS(Cmnd) ((Cmnd)->SCp.have_data_in)
2769 2697
2770#endif 2698#endif
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index a2747501fdde..d525808afc4e 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -72,7 +72,6 @@ qla2x00_initialize_adapter(scsi_qla_host_t *vha)
72 vha->dpc_flags = 0; 72 vha->dpc_flags = 0;
73 vha->flags.management_server_logged_in = 0; 73 vha->flags.management_server_logged_in = 0;
74 vha->marker_needed = 0; 74 vha->marker_needed = 0;
75 ha->mbx_flags = 0;
76 ha->isp_abort_cnt = 0; 75 ha->isp_abort_cnt = 0;
77 ha->beacon_blink_led = 0; 76 ha->beacon_blink_led = 0;
78 set_bit(REGISTER_FDMI_NEEDED, &vha->dpc_flags); 77 set_bit(REGISTER_FDMI_NEEDED, &vha->dpc_flags);
@@ -515,7 +514,6 @@ qla2x00_reset_chip(scsi_qla_host_t *vha)
515static inline void 514static inline void
516qla24xx_reset_risc(scsi_qla_host_t *vha) 515qla24xx_reset_risc(scsi_qla_host_t *vha)
517{ 516{
518 int hw_evt = 0;
519 unsigned long flags = 0; 517 unsigned long flags = 0;
520 struct qla_hw_data *ha = vha->hw; 518 struct qla_hw_data *ha = vha->hw;
521 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24; 519 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24;
@@ -545,8 +543,6 @@ qla24xx_reset_risc(scsi_qla_host_t *vha)
545 d2 = (uint32_t) RD_REG_WORD(&reg->mailbox0); 543 d2 = (uint32_t) RD_REG_WORD(&reg->mailbox0);
546 barrier(); 544 barrier();
547 } 545 }
548 if (cnt == 0)
549 hw_evt = 1;
550 546
551 /* Wait for soft-reset to complete. */ 547 /* Wait for soft-reset to complete. */
552 d2 = RD_REG_DWORD(&reg->ctrl_status); 548 d2 = RD_REG_DWORD(&reg->ctrl_status);
@@ -2011,7 +2007,6 @@ qla2x00_alloc_fcport(scsi_qla_host_t *vha, gfp_t flags)
2011 fcport->port_type = FCT_UNKNOWN; 2007 fcport->port_type = FCT_UNKNOWN;
2012 fcport->loop_id = FC_NO_LOOP_ID; 2008 fcport->loop_id = FC_NO_LOOP_ID;
2013 atomic_set(&fcport->state, FCS_UNCONFIGURED); 2009 atomic_set(&fcport->state, FCS_UNCONFIGURED);
2014 fcport->flags = FCF_RLC_SUPPORT;
2015 fcport->supported_classes = FC_COS_UNSPECIFIED; 2010 fcport->supported_classes = FC_COS_UNSPECIFIED;
2016 2011
2017 return fcport; 2012 return fcport;
@@ -2193,7 +2188,6 @@ qla2x00_configure_local_loop(scsi_qla_host_t *vha)
2193 vha->host_no, fcport->loop_id)); 2188 vha->host_no, fcport->loop_id));
2194 2189
2195 atomic_set(&fcport->state, FCS_DEVICE_LOST); 2190 atomic_set(&fcport->state, FCS_DEVICE_LOST);
2196 fcport->flags &= ~FCF_FARP_DONE;
2197 } 2191 }
2198 } 2192 }
2199 2193
@@ -2250,8 +2244,7 @@ qla2x00_configure_local_loop(scsi_qla_host_t *vha)
2250 WWN_SIZE)) 2244 WWN_SIZE))
2251 continue; 2245 continue;
2252 2246
2253 fcport->flags &= ~(FCF_FABRIC_DEVICE | 2247 fcport->flags &= ~FCF_FABRIC_DEVICE;
2254 FCF_PERSISTENT_BOUND);
2255 fcport->loop_id = new_fcport->loop_id; 2248 fcport->loop_id = new_fcport->loop_id;
2256 fcport->port_type = new_fcport->port_type; 2249 fcport->port_type = new_fcport->port_type;
2257 fcport->d_id.b24 = new_fcport->d_id.b24; 2250 fcport->d_id.b24 = new_fcport->d_id.b24;
@@ -2264,7 +2257,6 @@ qla2x00_configure_local_loop(scsi_qla_host_t *vha)
2264 2257
2265 if (!found) { 2258 if (!found) {
2266 /* New device, add to fcports list. */ 2259 /* New device, add to fcports list. */
2267 new_fcport->flags &= ~FCF_PERSISTENT_BOUND;
2268 if (vha->vp_idx) { 2260 if (vha->vp_idx) {
2269 new_fcport->vha = vha; 2261 new_fcport->vha = vha;
2270 new_fcport->vp_idx = vha->vp_idx; 2262 new_fcport->vp_idx = vha->vp_idx;
@@ -2297,11 +2289,6 @@ cleanup_allocation:
2297 "rval=%x\n", vha->host_no, rval)); 2289 "rval=%x\n", vha->host_no, rval));
2298 } 2290 }
2299 2291
2300 if (found_devs) {
2301 vha->device_flags |= DFLG_LOCAL_DEVICES;
2302 vha->device_flags &= ~DFLG_RETRY_LOCAL_DEVICES;
2303 }
2304
2305 return (rval); 2292 return (rval);
2306} 2293}
2307 2294
@@ -2787,7 +2774,6 @@ qla2x00_find_all_fabric_devs(scsi_qla_host_t *vha,
2787 fcport->loop_id = FC_NO_LOOP_ID; 2774 fcport->loop_id = FC_NO_LOOP_ID;
2788 fcport->flags |= (FCF_FABRIC_DEVICE | 2775 fcport->flags |= (FCF_FABRIC_DEVICE |
2789 FCF_LOGIN_NEEDED); 2776 FCF_LOGIN_NEEDED);
2790 fcport->flags &= ~FCF_PERSISTENT_BOUND;
2791 break; 2777 break;
2792 } 2778 }
2793 2779
@@ -2830,9 +2816,6 @@ qla2x00_find_all_fabric_devs(scsi_qla_host_t *vha,
2830 kfree(swl); 2816 kfree(swl);
2831 kfree(new_fcport); 2817 kfree(new_fcport);
2832 2818
2833 if (!list_empty(new_fcports))
2834 vha->device_flags |= DFLG_FABRIC_DEVICES;
2835
2836 return (rval); 2819 return (rval);
2837} 2820}
2838 2821
@@ -3015,7 +2998,6 @@ qla2x00_device_resync(scsi_qla_host_t *vha)
3015 0, 0); 2998 0, 0);
3016 } 2999 }
3017 } 3000 }
3018 fcport->flags &= ~FCF_FARP_DONE;
3019 } 3001 }
3020 } 3002 }
3021 return (rval); 3003 return (rval);
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index 8e91f4aec977..0f03812861b3 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -852,9 +852,6 @@ qla2x00_process_completed_request(struct scsi_qla_host *vha,
852 /* Free outstanding command slot. */ 852 /* Free outstanding command slot. */
853 req->outstanding_cmds[index] = NULL; 853 req->outstanding_cmds[index] = NULL;
854 854
855 CMD_COMPL_STATUS(sp->cmd) = 0L;
856 CMD_SCSI_STATUS(sp->cmd) = 0L;
857
858 /* Save ISP completion status */ 855 /* Save ISP completion status */
859 sp->cmd->result = DID_OK << 16; 856 sp->cmd->result = DID_OK << 16;
860 857
@@ -955,7 +952,6 @@ qla2x00_handle_sense(srb_t *sp, uint8_t *sense_data, uint32_t sense_len)
955 if (sense_len >= SCSI_SENSE_BUFFERSIZE) 952 if (sense_len >= SCSI_SENSE_BUFFERSIZE)
956 sense_len = SCSI_SENSE_BUFFERSIZE; 953 sense_len = SCSI_SENSE_BUFFERSIZE;
957 954
958 CMD_ACTUAL_SNSLEN(cp) = sense_len;
959 sp->request_sense_length = sense_len; 955 sp->request_sense_length = sense_len;
960 sp->request_sense_ptr = cp->sense_buffer; 956 sp->request_sense_ptr = cp->sense_buffer;
961 if (sp->request_sense_length > 32) 957 if (sp->request_sense_length > 32)
@@ -973,8 +969,7 @@ qla2x00_handle_sense(srb_t *sp, uint8_t *sense_data, uint32_t sense_len)
973 cp->device->channel, cp->device->id, cp->device->lun, cp, 969 cp->device->channel, cp->device->id, cp->device->lun, cp,
974 cp->serial_number)); 970 cp->serial_number));
975 if (sense_len) 971 if (sense_len)
976 DEBUG5(qla2x00_dump_buffer(cp->sense_buffer, 972 DEBUG5(qla2x00_dump_buffer(cp->sense_buffer, sense_len));
977 CMD_ACTUAL_SNSLEN(cp)));
978} 973}
979 974
980/** 975/**
@@ -1043,9 +1038,6 @@ qla2x00_status_entry(scsi_qla_host_t *vha, struct rsp_que *rsp, void *pkt)
1043 } 1038 }
1044 1039
1045 lscsi_status = scsi_status & STATUS_MASK; 1040 lscsi_status = scsi_status & STATUS_MASK;
1046 CMD_ENTRY_STATUS(cp) = sts->entry_status;
1047 CMD_COMPL_STATUS(cp) = comp_status;
1048 CMD_SCSI_STATUS(cp) = scsi_status;
1049 1041
1050 fcport = sp->fcport; 1042 fcport = sp->fcport;
1051 1043
@@ -1104,7 +1096,6 @@ qla2x00_status_entry(scsi_qla_host_t *vha, struct rsp_que *rsp, void *pkt)
1104 if (scsi_status & (SS_RESIDUAL_UNDER | SS_RESIDUAL_OVER)) { 1096 if (scsi_status & (SS_RESIDUAL_UNDER | SS_RESIDUAL_OVER)) {
1105 resid = resid_len; 1097 resid = resid_len;
1106 scsi_set_resid(cp, resid); 1098 scsi_set_resid(cp, resid);
1107 CMD_RESID_LEN(cp) = resid;
1108 1099
1109 if (!lscsi_status && 1100 if (!lscsi_status &&
1110 ((unsigned)(scsi_bufflen(cp) - resid) < 1101 ((unsigned)(scsi_bufflen(cp) - resid) <
@@ -1160,7 +1151,6 @@ qla2x00_status_entry(scsi_qla_host_t *vha, struct rsp_que *rsp, void *pkt)
1160 1151
1161 if (scsi_status & SS_RESIDUAL_UNDER) { 1152 if (scsi_status & SS_RESIDUAL_UNDER) {
1162 scsi_set_resid(cp, resid); 1153 scsi_set_resid(cp, resid);
1163 CMD_RESID_LEN(cp) = resid;
1164 } else { 1154 } else {
1165 DEBUG2(printk(KERN_INFO 1155 DEBUG2(printk(KERN_INFO
1166 "scsi(%ld:%d:%d) UNDERRUN status detected " 1156 "scsi(%ld:%d:%d) UNDERRUN status detected "
diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c
index dc5e5d9530c1..7af9bd73a10d 100644
--- a/drivers/scsi/qla2xxx/qla_mbx.c
+++ b/drivers/scsi/qla2xxx/qla_mbx.c
@@ -1197,10 +1197,6 @@ qla2x00_get_port_database(scsi_qla_host_t *vha, fc_port_t *fcport, uint8_t opt)
1197 fcport->d_id.b.al_pa = pd->port_id[2]; 1197 fcport->d_id.b.al_pa = pd->port_id[2];
1198 fcport->d_id.b.rsvd_1 = 0; 1198 fcport->d_id.b.rsvd_1 = 0;
1199 1199
1200 /* Check for device require authentication. */
1201 pd->common_features & BIT_5 ? (fcport->flags |= FCF_AUTH_REQ) :
1202 (fcport->flags &= ~FCF_AUTH_REQ);
1203
1204 /* If not target must be initiator or unknown type. */ 1200 /* If not target must be initiator or unknown type. */
1205 if ((pd->prli_svc_param_word_3[0] & BIT_4) == 0) 1201 if ((pd->prli_svc_param_word_3[0] & BIT_4) == 0)
1206 fcport->port_type = FCT_INITIATOR; 1202 fcport->port_type = FCT_INITIATOR;
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 1c3d165c035b..ba3309f85560 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -2856,19 +2856,11 @@ qla2x00_timer(scsi_qla_host_t *vha)
2856 spin_unlock_irqrestore(&ha->hardware_lock, 2856 spin_unlock_irqrestore(&ha->hardware_lock,
2857 cpu_flags); 2857 cpu_flags);
2858 } 2858 }
2859 set_bit(ABORT_QUEUES_NEEDED, &vha->dpc_flags);
2860 start_dpc++; 2859 start_dpc++;
2861 } 2860 }
2862 2861
2863 /* if the loop has been down for 4 minutes, reinit adapter */ 2862 /* if the loop has been down for 4 minutes, reinit adapter */
2864 if (atomic_dec_and_test(&vha->loop_down_timer) != 0) { 2863 if (atomic_dec_and_test(&vha->loop_down_timer) != 0) {
2865 DEBUG(printk("scsi(%ld): Loop down exceed 4 mins - "
2866 "restarting queues.\n",
2867 vha->host_no));
2868
2869 set_bit(RESTART_QUEUES_NEEDED, &vha->dpc_flags);
2870 start_dpc++;
2871
2872 if (!(vha->device_flags & DFLG_NO_CABLE) && 2864 if (!(vha->device_flags & DFLG_NO_CABLE) &&
2873 !vha->vp_idx) { 2865 !vha->vp_idx) {
2874 DEBUG(printk("scsi(%ld): Loop down - " 2866 DEBUG(printk("scsi(%ld): Loop down - "