diff options
author | Chad Dupuis <chad.dupuis@qlogic.com> | 2010-10-15 14:27:39 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2010-10-25 16:57:25 -0400 |
commit | 1e6d0670921ea4e736b172e9a3c32a2ba0c33f6a (patch) | |
tree | a8a89594c9b88a33a0e0d24dd79e7260c3125d39 /drivers/scsi | |
parent | 542bce1f255673816e82eaebb422ead5ad3f5a17 (diff) |
[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>
Diffstat (limited to 'drivers/scsi')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_attr.c | 4 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_def.h | 2 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_init.c | 8 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_os.c | 30 |
4 files changed, 4 insertions, 40 deletions
diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c index 2ff4342ae362..a9ceb39751a1 100644 --- a/drivers/scsi/qla2xxx/qla_attr.c +++ b/drivers/scsi/qla2xxx/qla_attr.c | |||
@@ -1547,6 +1547,10 @@ qla2x00_dev_loss_tmo_callbk(struct fc_rport *rport) | |||
1547 | *((fc_port_t **)rport->dd_data) = NULL; | 1547 | *((fc_port_t **)rport->dd_data) = NULL; |
1548 | spin_unlock_irq(host->host_lock); | 1548 | spin_unlock_irq(host->host_lock); |
1549 | 1549 | ||
1550 | /* Now that the rport has been deleted, set the fcport state to | ||
1551 | FCS_DEVICE_DEAD */ | ||
1552 | atomic_set(&fcport->state, FCS_DEVICE_DEAD); | ||
1553 | |||
1550 | if (test_bit(ABORT_ISP_ACTIVE, &fcport->vha->dpc_flags)) | 1554 | if (test_bit(ABORT_ISP_ACTIVE, &fcport->vha->dpc_flags)) |
1551 | return; | 1555 | return; |
1552 | 1556 | ||
diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index e1d3ad40a946..3a22effced5f 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h | |||
@@ -1700,9 +1700,7 @@ typedef struct fc_port { | |||
1700 | atomic_t state; | 1700 | atomic_t state; |
1701 | uint32_t flags; | 1701 | uint32_t flags; |
1702 | 1702 | ||
1703 | int port_login_retry_count; | ||
1704 | int login_retry; | 1703 | int login_retry; |
1705 | atomic_t port_down_timer; | ||
1706 | 1704 | ||
1707 | struct fc_rport *rport, *drport; | 1705 | struct fc_rport *rport, *drport; |
1708 | u32 supported_classes; | 1706 | u32 supported_classes; |
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c index c8d0b121560d..8c486609244c 100644 --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c | |||
@@ -2916,20 +2916,12 @@ qla2x00_reg_remote_port(scsi_qla_host_t *vha, fc_port_t *fcport) | |||
2916 | void | 2916 | void |
2917 | qla2x00_update_fcport(scsi_qla_host_t *vha, fc_port_t *fcport) | 2917 | qla2x00_update_fcport(scsi_qla_host_t *vha, fc_port_t *fcport) |
2918 | { | 2918 | { |
2919 | struct qla_hw_data *ha = vha->hw; | ||
2920 | |||
2921 | fcport->vha = vha; | 2919 | fcport->vha = vha; |
2922 | fcport->login_retry = 0; | 2920 | fcport->login_retry = 0; |
2923 | fcport->port_login_retry_count = ha->port_down_retry_count * | ||
2924 | PORT_RETRY_TIME; | ||
2925 | atomic_set(&fcport->port_down_timer, ha->port_down_retry_count * | ||
2926 | PORT_RETRY_TIME); | ||
2927 | fcport->flags &= ~(FCF_LOGIN_NEEDED | FCF_ASYNC_SENT); | 2921 | fcport->flags &= ~(FCF_LOGIN_NEEDED | FCF_ASYNC_SENT); |
2928 | 2922 | ||
2929 | qla2x00_iidma_fcport(vha, fcport); | 2923 | qla2x00_iidma_fcport(vha, fcport); |
2930 | |||
2931 | atomic_set(&fcport->state, FCS_ONLINE); | 2924 | atomic_set(&fcport->state, FCS_ONLINE); |
2932 | |||
2933 | qla2x00_reg_remote_port(vha, fcport); | 2925 | qla2x00_reg_remote_port(vha, fcport); |
2934 | } | 2926 | } |
2935 | 2927 | ||
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 800ea9269752..efbb8e7ba568 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c | |||
@@ -3547,11 +3547,9 @@ void | |||
3547 | qla2x00_timer(scsi_qla_host_t *vha) | 3547 | qla2x00_timer(scsi_qla_host_t *vha) |
3548 | { | 3548 | { |
3549 | unsigned long cpu_flags = 0; | 3549 | unsigned long cpu_flags = 0; |
3550 | fc_port_t *fcport; | ||
3551 | int start_dpc = 0; | 3550 | int start_dpc = 0; |
3552 | int index; | 3551 | int index; |
3553 | srb_t *sp; | 3552 | srb_t *sp; |
3554 | int t; | ||
3555 | uint16_t w; | 3553 | uint16_t w; |
3556 | struct qla_hw_data *ha = vha->hw; | 3554 | struct qla_hw_data *ha = vha->hw; |
3557 | struct req_que *req; | 3555 | struct req_que *req; |
@@ -3567,34 +3565,6 @@ qla2x00_timer(scsi_qla_host_t *vha) | |||
3567 | /* Hardware read to raise pending EEH errors during mailbox waits. */ | 3565 | /* Hardware read to raise pending EEH errors during mailbox waits. */ |
3568 | if (!pci_channel_offline(ha->pdev)) | 3566 | if (!pci_channel_offline(ha->pdev)) |
3569 | pci_read_config_word(ha->pdev, PCI_VENDOR_ID, &w); | 3567 | pci_read_config_word(ha->pdev, PCI_VENDOR_ID, &w); |
3570 | /* | ||
3571 | * Ports - Port down timer. | ||
3572 | * | ||
3573 | * Whenever, a port is in the LOST state we start decrementing its port | ||
3574 | * down timer every second until it reaches zero. Once it reaches zero | ||
3575 | * the port it marked DEAD. | ||
3576 | */ | ||
3577 | t = 0; | ||
3578 | list_for_each_entry(fcport, &vha->vp_fcports, list) { | ||
3579 | if (fcport->port_type != FCT_TARGET) | ||
3580 | continue; | ||
3581 | |||
3582 | if (atomic_read(&fcport->state) == FCS_DEVICE_LOST) { | ||
3583 | |||
3584 | if (atomic_read(&fcport->port_down_timer) == 0) | ||
3585 | continue; | ||
3586 | |||
3587 | if (atomic_dec_and_test(&fcport->port_down_timer) != 0) | ||
3588 | atomic_set(&fcport->state, FCS_DEVICE_DEAD); | ||
3589 | |||
3590 | DEBUG(printk("scsi(%ld): fcport-%d - port retry count: " | ||
3591 | "%d remaining\n", | ||
3592 | vha->host_no, | ||
3593 | t, atomic_read(&fcport->port_down_timer))); | ||
3594 | } | ||
3595 | t++; | ||
3596 | } /* End of for fcport */ | ||
3597 | |||
3598 | 3568 | ||
3599 | /* Loop down handler. */ | 3569 | /* Loop down handler. */ |
3600 | if (atomic_read(&vha->loop_down_timer) > 0 && | 3570 | if (atomic_read(&vha->loop_down_timer) > 0 && |