Loading drivers/scsi/qla2xxx/qla_bsg.c +11 −3 Original line number Diff line number Diff line Loading @@ -568,9 +568,17 @@ qla81xx_set_loopback_mode(scsi_qla_host_t *vha, uint16_t *config, if (!wait_for_completion_timeout(&ha->dcbx_comp, (20 * HZ))) { ql_dbg(ql_dbg_user, vha, 0x7022, "State change notification not received.\n"); rval = -EINVAL; } else { if (ha->flags.idc_compl_status) { ql_dbg(ql_dbg_user, vha, 0x70c3, "Bad status in IDC Completion AEN\n"); rval = -EINVAL; ha->flags.idc_compl_status = 0; } else ql_dbg(ql_dbg_user, vha, 0x7023, "State change received.\n"); } ha->notify_dcbx_comp = 0; Loading drivers/scsi/qla2xxx/qla_dbg.c +1 −1 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ * | Async Events | 0x5071 | 0x502b-0x502f | * | | | 0x5047,0x5052 | * | Timer Routines | 0x6011 | | * | User Space Interactions | 0x70c2 | 0x7018,0x702e, | * | User Space Interactions | 0x70c3 | 0x7018,0x702e, | * | | | 0x7039,0x7045, | * | | | 0x7073-0x7075, | * | | | 0x708c, | Loading drivers/scsi/qla2xxx/qla_def.h +2 −1 Original line number Diff line number Diff line Loading @@ -2622,7 +2622,8 @@ struct qla_hw_data { uint32_t nic_core_reset_owner:1; uint32_t isp82xx_no_md_cap:1; uint32_t host_shutting_down:1; /* 30 bits */ uint32_t idc_compl_status:1; /* 32 bits */ } flags; /* This spinlock is used to protect "io transactions", you must Loading drivers/scsi/qla2xxx/qla_isr.c +13 −12 Original line number Diff line number Diff line Loading @@ -294,8 +294,12 @@ qla81xx_idc_event(scsi_qla_host_t *vha, uint16_t aen, uint16_t descr) "%04x %04x %04x %04x %04x %04x %04x.\n", event[aen & 0xff], mb[0], mb[1], mb[2], mb[3], mb[4], mb[5], mb[6]); if ((aen == MBA_IDC_COMPLETE && mb[1] >> 15)) { vha->hw->flags.idc_compl_status = 1; if (vha->hw->notify_dcbx_comp) complete(&vha->hw->dcbx_comp); } if (IS_QLA81XX(vha->hw)) { /* Acknowledgement needed? [Notify && non-zero timeout]. */ timeout = (descr >> 8) & 0xf; if (aen != MBA_IDC_NOTIFY || !timeout) Loading @@ -304,7 +308,6 @@ qla81xx_idc_event(scsi_qla_host_t *vha, uint16_t aen, uint16_t descr) ql_dbg(ql_dbg_async, vha, 0x5022, "%lu Inter-Driver Communication %s -- ACK timeout=%d.\n", vha->host_no, event[aen & 0xff], timeout); } rval = qla2x00_post_idc_ack_work(vha, mb); if (rval != QLA_SUCCESS) Loading Loading @@ -989,13 +992,11 @@ qla2x00_async_event(scsi_qla_host_t *vha, struct rsp_que *rsp, uint16_t *mb) if ((mb[2] & 0x7fff) == MBC_PORT_RESET || (mb[2] & 0x7fff) == MBC_SET_PORT_CONFIG) { set_bit(ISP_QUIESCE_NEEDED, &vha->dpc_flags); /* Ack that we have quiesced I/O */ qla81xx_idc_event(vha, mb[0], mb[1]); qla2xxx_wake_dpc(vha); } case MBA_IDC_COMPLETE: case MBA_IDC_TIME_EXT: if (IS_QLA81XX(vha->hw)) if (IS_QLA81XX(vha->hw) || IS_QLA8031(vha->hw)) qla81xx_idc_event(vha, mb[0], mb[1]); break; Loading Loading
drivers/scsi/qla2xxx/qla_bsg.c +11 −3 Original line number Diff line number Diff line Loading @@ -568,9 +568,17 @@ qla81xx_set_loopback_mode(scsi_qla_host_t *vha, uint16_t *config, if (!wait_for_completion_timeout(&ha->dcbx_comp, (20 * HZ))) { ql_dbg(ql_dbg_user, vha, 0x7022, "State change notification not received.\n"); rval = -EINVAL; } else { if (ha->flags.idc_compl_status) { ql_dbg(ql_dbg_user, vha, 0x70c3, "Bad status in IDC Completion AEN\n"); rval = -EINVAL; ha->flags.idc_compl_status = 0; } else ql_dbg(ql_dbg_user, vha, 0x7023, "State change received.\n"); } ha->notify_dcbx_comp = 0; Loading
drivers/scsi/qla2xxx/qla_dbg.c +1 −1 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ * | Async Events | 0x5071 | 0x502b-0x502f | * | | | 0x5047,0x5052 | * | Timer Routines | 0x6011 | | * | User Space Interactions | 0x70c2 | 0x7018,0x702e, | * | User Space Interactions | 0x70c3 | 0x7018,0x702e, | * | | | 0x7039,0x7045, | * | | | 0x7073-0x7075, | * | | | 0x708c, | Loading
drivers/scsi/qla2xxx/qla_def.h +2 −1 Original line number Diff line number Diff line Loading @@ -2622,7 +2622,8 @@ struct qla_hw_data { uint32_t nic_core_reset_owner:1; uint32_t isp82xx_no_md_cap:1; uint32_t host_shutting_down:1; /* 30 bits */ uint32_t idc_compl_status:1; /* 32 bits */ } flags; /* This spinlock is used to protect "io transactions", you must Loading
drivers/scsi/qla2xxx/qla_isr.c +13 −12 Original line number Diff line number Diff line Loading @@ -294,8 +294,12 @@ qla81xx_idc_event(scsi_qla_host_t *vha, uint16_t aen, uint16_t descr) "%04x %04x %04x %04x %04x %04x %04x.\n", event[aen & 0xff], mb[0], mb[1], mb[2], mb[3], mb[4], mb[5], mb[6]); if ((aen == MBA_IDC_COMPLETE && mb[1] >> 15)) { vha->hw->flags.idc_compl_status = 1; if (vha->hw->notify_dcbx_comp) complete(&vha->hw->dcbx_comp); } if (IS_QLA81XX(vha->hw)) { /* Acknowledgement needed? [Notify && non-zero timeout]. */ timeout = (descr >> 8) & 0xf; if (aen != MBA_IDC_NOTIFY || !timeout) Loading @@ -304,7 +308,6 @@ qla81xx_idc_event(scsi_qla_host_t *vha, uint16_t aen, uint16_t descr) ql_dbg(ql_dbg_async, vha, 0x5022, "%lu Inter-Driver Communication %s -- ACK timeout=%d.\n", vha->host_no, event[aen & 0xff], timeout); } rval = qla2x00_post_idc_ack_work(vha, mb); if (rval != QLA_SUCCESS) Loading Loading @@ -989,13 +992,11 @@ qla2x00_async_event(scsi_qla_host_t *vha, struct rsp_que *rsp, uint16_t *mb) if ((mb[2] & 0x7fff) == MBC_PORT_RESET || (mb[2] & 0x7fff) == MBC_SET_PORT_CONFIG) { set_bit(ISP_QUIESCE_NEEDED, &vha->dpc_flags); /* Ack that we have quiesced I/O */ qla81xx_idc_event(vha, mb[0], mb[1]); qla2xxx_wake_dpc(vha); } case MBA_IDC_COMPLETE: case MBA_IDC_TIME_EXT: if (IS_QLA81XX(vha->hw)) if (IS_QLA81XX(vha->hw) || IS_QLA8031(vha->hw)) qla81xx_idc_event(vha, mb[0], mb[1]); break; Loading