[SCSI] qla2xxx: Remove port down retry count.
This patch removes the use of the port down retry counter as a mechanism to update a fcport state. The internal driver counter is a residual carry-over from pre-FC-transport aware driver inteaction. The ql2xport_down_retry module parameter and NVRAM set ha->port_down_retry_count remain in order to seed the fc-host's default dev-loss-tmo. Signed-off-by: Chad Dupuis <chad.dupuis@qlogic.com> Signed-off-by: Madhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
committed by
James Bottomley
parent
542bce1f25
commit
1e6d067092
@@ -1547,6 +1547,10 @@ qla2x00_dev_loss_tmo_callbk(struct fc_rport *rport)
|
|||||||
*((fc_port_t **)rport->dd_data) = NULL;
|
*((fc_port_t **)rport->dd_data) = NULL;
|
||||||
spin_unlock_irq(host->host_lock);
|
spin_unlock_irq(host->host_lock);
|
||||||
|
|
||||||
|
/* Now that the rport has been deleted, set the fcport state to
|
||||||
|
FCS_DEVICE_DEAD */
|
||||||
|
atomic_set(&fcport->state, FCS_DEVICE_DEAD);
|
||||||
|
|
||||||
if (test_bit(ABORT_ISP_ACTIVE, &fcport->vha->dpc_flags))
|
if (test_bit(ABORT_ISP_ACTIVE, &fcport->vha->dpc_flags))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@@ -1700,9 +1700,7 @@ typedef struct fc_port {
|
|||||||
atomic_t state;
|
atomic_t state;
|
||||||
uint32_t flags;
|
uint32_t flags;
|
||||||
|
|
||||||
int port_login_retry_count;
|
|
||||||
int login_retry;
|
int login_retry;
|
||||||
atomic_t port_down_timer;
|
|
||||||
|
|
||||||
struct fc_rport *rport, *drport;
|
struct fc_rport *rport, *drport;
|
||||||
u32 supported_classes;
|
u32 supported_classes;
|
||||||
|
@@ -2916,20 +2916,12 @@ qla2x00_reg_remote_port(scsi_qla_host_t *vha, fc_port_t *fcport)
|
|||||||
void
|
void
|
||||||
qla2x00_update_fcport(scsi_qla_host_t *vha, fc_port_t *fcport)
|
qla2x00_update_fcport(scsi_qla_host_t *vha, fc_port_t *fcport)
|
||||||
{
|
{
|
||||||
struct qla_hw_data *ha = vha->hw;
|
|
||||||
|
|
||||||
fcport->vha = vha;
|
fcport->vha = vha;
|
||||||
fcport->login_retry = 0;
|
fcport->login_retry = 0;
|
||||||
fcport->port_login_retry_count = ha->port_down_retry_count *
|
|
||||||
PORT_RETRY_TIME;
|
|
||||||
atomic_set(&fcport->port_down_timer, ha->port_down_retry_count *
|
|
||||||
PORT_RETRY_TIME);
|
|
||||||
fcport->flags &= ~(FCF_LOGIN_NEEDED | FCF_ASYNC_SENT);
|
fcport->flags &= ~(FCF_LOGIN_NEEDED | FCF_ASYNC_SENT);
|
||||||
|
|
||||||
qla2x00_iidma_fcport(vha, fcport);
|
qla2x00_iidma_fcport(vha, fcport);
|
||||||
|
|
||||||
atomic_set(&fcport->state, FCS_ONLINE);
|
atomic_set(&fcport->state, FCS_ONLINE);
|
||||||
|
|
||||||
qla2x00_reg_remote_port(vha, fcport);
|
qla2x00_reg_remote_port(vha, fcport);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3547,11 +3547,9 @@ void
|
|||||||
qla2x00_timer(scsi_qla_host_t *vha)
|
qla2x00_timer(scsi_qla_host_t *vha)
|
||||||
{
|
{
|
||||||
unsigned long cpu_flags = 0;
|
unsigned long cpu_flags = 0;
|
||||||
fc_port_t *fcport;
|
|
||||||
int start_dpc = 0;
|
int start_dpc = 0;
|
||||||
int index;
|
int index;
|
||||||
srb_t *sp;
|
srb_t *sp;
|
||||||
int t;
|
|
||||||
uint16_t w;
|
uint16_t w;
|
||||||
struct qla_hw_data *ha = vha->hw;
|
struct qla_hw_data *ha = vha->hw;
|
||||||
struct req_que *req;
|
struct req_que *req;
|
||||||
@@ -3567,34 +3565,6 @@ qla2x00_timer(scsi_qla_host_t *vha)
|
|||||||
/* Hardware read to raise pending EEH errors during mailbox waits. */
|
/* Hardware read to raise pending EEH errors during mailbox waits. */
|
||||||
if (!pci_channel_offline(ha->pdev))
|
if (!pci_channel_offline(ha->pdev))
|
||||||
pci_read_config_word(ha->pdev, PCI_VENDOR_ID, &w);
|
pci_read_config_word(ha->pdev, PCI_VENDOR_ID, &w);
|
||||||
/*
|
|
||||||
* Ports - Port down timer.
|
|
||||||
*
|
|
||||||
* Whenever, a port is in the LOST state we start decrementing its port
|
|
||||||
* down timer every second until it reaches zero. Once it reaches zero
|
|
||||||
* the port it marked DEAD.
|
|
||||||
*/
|
|
||||||
t = 0;
|
|
||||||
list_for_each_entry(fcport, &vha->vp_fcports, list) {
|
|
||||||
if (fcport->port_type != FCT_TARGET)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (atomic_read(&fcport->state) == FCS_DEVICE_LOST) {
|
|
||||||
|
|
||||||
if (atomic_read(&fcport->port_down_timer) == 0)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (atomic_dec_and_test(&fcport->port_down_timer) != 0)
|
|
||||||
atomic_set(&fcport->state, FCS_DEVICE_DEAD);
|
|
||||||
|
|
||||||
DEBUG(printk("scsi(%ld): fcport-%d - port retry count: "
|
|
||||||
"%d remaining\n",
|
|
||||||
vha->host_no,
|
|
||||||
t, atomic_read(&fcport->port_down_timer)));
|
|
||||||
}
|
|
||||||
t++;
|
|
||||||
} /* End of for fcport */
|
|
||||||
|
|
||||||
|
|
||||||
/* Loop down handler. */
|
/* Loop down handler. */
|
||||||
if (atomic_read(&vha->loop_down_timer) > 0 &&
|
if (atomic_read(&vha->loop_down_timer) > 0 &&
|
||||||
|
Reference in New Issue
Block a user