net/bnx2x: fix ramrod timeout
authorShahed Shaikh <shshaikh@marvell.com>
Fri, 12 Apr 2019 01:47:39 +0000 (18:47 -0700)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 19 Apr 2019 12:51:54 +0000 (14:51 +0200)
commit8bd31421c593e5f3e2ee2a4d7d3c6a74489838c6
tree811ca9e74ff7e5f4c321905f91822cb24aa1efaf
parent68ed0742256dde2335cb1f6560ef94e7b29febed
net/bnx2x: fix ramrod timeout

There is a race condition while processing RAMROD
completion in fast path queue through interrupt handler
and polling method.

Interrupt handler invoked from actual interrupt event
and from RAMROD processing polling flow may create a
situation where one flow will read and clear a fastpath
interrupt without actually processing the RAMROD completion.
Thus, causing a RAMROD timeout even though HW sent an
completion event.

Fix this by introducing an atomic variable which will be
set only when interrupt handler needs to process RAMROD
completion.

Fixes: 540a211084a7 ("bnx2x: driver core")
Cc: stable@dpdk.org
Signed-off-by: Shahed Shaikh <shshaikh@marvell.com>
drivers/net/bnx2x/bnx2x.c
drivers/net/bnx2x/bnx2x.h
drivers/net/bnx2x/bnx2x_ethdev.c
drivers/net/bnx2x/ecore_sp.c