diff options
| author | Darren Trapp <darren.trapp@cavium.com> | 2018-03-21 02:09:34 -0400 |
|---|---|---|
| committer | Martin K. Petersen <martin.petersen@oracle.com> | 2018-03-21 18:38:54 -0400 |
| commit | 1763c1fd76d8e26c5e6d5a3e415e7deeeda3c5da (patch) | |
| tree | f8b9abcfcb3dad0702d68734ded6af242232a0ac /drivers/scsi | |
| parent | e473b3074104ee09227cfbba5f872e3ea15dd280 (diff) | |
scsi: qla2xxx: Fix n2n_ae flag to prevent dev_loss on PDB change
On a port db changes, this patch will set n2n_ae flag for N2N
connection when requesting for Report ID Acquition MBX, instead
of Loop Initialization or point to point asynchronous events.
Signed-off-by: Darren Trapp <darren.trapp@cavium.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/scsi')
| -rw-r--r-- | drivers/scsi/qla2xxx/qla_def.h | 2 | ||||
| -rw-r--r-- | drivers/scsi/qla2xxx/qla_isr.c | 3 | ||||
| -rw-r--r-- | drivers/scsi/qla2xxx/qla_mbx.c | 3 |
3 files changed, 3 insertions, 5 deletions
diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index 56f78dce4d3c..cba749d27154 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h | |||
| @@ -4281,8 +4281,6 @@ typedef struct scsi_qla_host { | |||
| 4281 | struct nvme_fc_local_port *nvme_local_port; | 4281 | struct nvme_fc_local_port *nvme_local_port; |
| 4282 | struct completion nvme_del_done; | 4282 | struct completion nvme_del_done; |
| 4283 | struct list_head nvme_rport_list; | 4283 | struct list_head nvme_rport_list; |
| 4284 | atomic_t nvme_active_aen_cnt; | ||
| 4285 | uint16_t nvme_last_rptd_aen; | ||
| 4286 | 4284 | ||
| 4287 | uint16_t fcoe_vlan_id; | 4285 | uint16_t fcoe_vlan_id; |
| 4288 | uint16_t fcoe_fcf_idx; | 4286 | uint16_t fcoe_fcf_idx; |
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c index 93f2f1df7168..913cd6cf5907 100644 --- a/drivers/scsi/qla2xxx/qla_isr.c +++ b/drivers/scsi/qla2xxx/qla_isr.c | |||
| @@ -767,7 +767,6 @@ skip_rio: | |||
| 767 | 767 | ||
| 768 | case MBA_LIP_OCCURRED: /* Loop Initialization Procedure */ | 768 | case MBA_LIP_OCCURRED: /* Loop Initialization Procedure */ |
| 769 | ha->flags.lip_ae = 1; | 769 | ha->flags.lip_ae = 1; |
| 770 | ha->flags.n2n_ae = 0; | ||
| 771 | 770 | ||
| 772 | ql_dbg(ql_dbg_async, vha, 0x5009, | 771 | ql_dbg(ql_dbg_async, vha, 0x5009, |
| 773 | "LIP occurred (%x).\n", mb[1]); | 772 | "LIP occurred (%x).\n", mb[1]); |
| @@ -811,7 +810,6 @@ skip_rio: | |||
| 811 | 810 | ||
| 812 | case MBA_LOOP_DOWN: /* Loop Down Event */ | 811 | case MBA_LOOP_DOWN: /* Loop Down Event */ |
| 813 | SAVE_TOPO(ha); | 812 | SAVE_TOPO(ha); |
| 814 | ha->flags.n2n_ae = 0; | ||
| 815 | ha->flags.lip_ae = 0; | 813 | ha->flags.lip_ae = 0; |
| 816 | ha->current_topology = 0; | 814 | ha->current_topology = 0; |
| 817 | 815 | ||
| @@ -885,7 +883,6 @@ skip_rio: | |||
| 885 | /* case MBA_DCBX_COMPLETE: */ | 883 | /* case MBA_DCBX_COMPLETE: */ |
| 886 | case MBA_POINT_TO_POINT: /* Point-to-Point */ | 884 | case MBA_POINT_TO_POINT: /* Point-to-Point */ |
| 887 | ha->flags.lip_ae = 0; | 885 | ha->flags.lip_ae = 0; |
| 888 | ha->flags.n2n_ae = 1; | ||
| 889 | 886 | ||
| 890 | if (IS_QLA2100(ha)) | 887 | if (IS_QLA2100(ha)) |
| 891 | break; | 888 | break; |
diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c index 41b0ee47c6a1..735079ba691c 100644 --- a/drivers/scsi/qla2xxx/qla_mbx.c +++ b/drivers/scsi/qla2xxx/qla_mbx.c | |||
| @@ -3747,6 +3747,7 @@ qla24xx_report_id_acquisition(scsi_qla_host_t *vha, | |||
| 3747 | id.b.area = rptid_entry->port_id[1]; | 3747 | id.b.area = rptid_entry->port_id[1]; |
| 3748 | id.b.al_pa = rptid_entry->port_id[0]; | 3748 | id.b.al_pa = rptid_entry->port_id[0]; |
| 3749 | id.b.rsvd_1 = 0; | 3749 | id.b.rsvd_1 = 0; |
| 3750 | ha->flags.n2n_ae = 0; | ||
| 3750 | 3751 | ||
| 3751 | if (rptid_entry->format == 0) { | 3752 | if (rptid_entry->format == 0) { |
| 3752 | /* loop */ | 3753 | /* loop */ |
| @@ -3799,6 +3800,7 @@ qla24xx_report_id_acquisition(scsi_qla_host_t *vha, | |||
| 3799 | set_bit(N2N_LOGIN_NEEDED, &vha->dpc_flags); | 3800 | set_bit(N2N_LOGIN_NEEDED, &vha->dpc_flags); |
| 3800 | set_bit(REGISTER_FC4_NEEDED, &vha->dpc_flags); | 3801 | set_bit(REGISTER_FC4_NEEDED, &vha->dpc_flags); |
| 3801 | set_bit(REGISTER_FDMI_NEEDED, &vha->dpc_flags); | 3802 | set_bit(REGISTER_FDMI_NEEDED, &vha->dpc_flags); |
| 3803 | ha->flags.n2n_ae = 1; | ||
| 3802 | return; | 3804 | return; |
| 3803 | } | 3805 | } |
| 3804 | 3806 | ||
| @@ -3875,6 +3877,7 @@ qla24xx_report_id_acquisition(scsi_qla_host_t *vha, | |||
| 3875 | vha->d_id.b.area = rptid_entry->port_id[1]; | 3877 | vha->d_id.b.area = rptid_entry->port_id[1]; |
| 3876 | vha->d_id.b.al_pa = rptid_entry->port_id[0]; | 3878 | vha->d_id.b.al_pa = rptid_entry->port_id[0]; |
| 3877 | 3879 | ||
| 3880 | ha->flags.n2n_ae = 1; | ||
| 3878 | spin_lock_irqsave(&ha->vport_slock, flags); | 3881 | spin_lock_irqsave(&ha->vport_slock, flags); |
| 3879 | qlt_update_vp_map(vha, SET_AL_PA); | 3882 | qlt_update_vp_map(vha, SET_AL_PA); |
| 3880 | spin_unlock_irqrestore(&ha->vport_slock, flags); | 3883 | spin_unlock_irqrestore(&ha->vport_slock, flags); |
