Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
scsi: qedf: Avoid invoking response handler twice if ep is already co…
…mpleted. Issue :- race condition getting hit between the response handler get called because of the exchange_mgr_reset() which clear out all the active XID and the response we get via interrupt as the same time Below are the sequence of events occurring in case of "issue/race condition" :- rport ba0200: Port timeout, state PLOGI rport ba0200: Port entered PLOGI state from PLOGI state xid 1052: Exchange timer armed : 20000 msecs xid timer armed here rport ba0200: Received LOGO request while in state PLOGI rport ba0200: Delete port rport ba0200: work event 3 rport ba0200: lld callback ev 3 bnx2fc: rport_event_hdlr: event = 3, port_id = 0xba0200 bnx2fc: ba0200 - rport not created Yet!! /* Here we reset any outstanding exchanges before freeing rport using the exch_mgr_reset() */ xid 1052: Exchange timer canceled /*Here we got two response for one xid*/ xid 1052: invoking resp(), esb 20000000 state 3 xid 1052: invoking resp(), esb 20000000 state 3 xid 1052: fc_rport_plogi_resp() : ep->resp_active 2 xid 1052: fc_rport_plogi_resp() : ep->resp_active 2 Signed-off-by: Javed Hasan <jhasan@marvell.com>
- Loading branch information