net/bnx2x: fix DMAE timeout
authorShahed Shaikh <shshaikh@marvell.com>
Fri, 12 Apr 2019 01:47:40 +0000 (18:47 -0700)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 19 Apr 2019 12:51:54 +0000 (14:51 +0200)
commite166e0db8cf6c0e391a40f1a75a678bec930c970
treed563b1e06a054cc0a336db4ad7b3826ff9de1db0
parent8bd31421c593e5f3e2ee2a4d7d3c6a74489838c6
net/bnx2x: fix DMAE timeout

In some cases, DPDK application may send packets
while PMD is going through load or unload flow.
This causes firmware to access invalid/unallocated
memory to process transmit buffer. Which results in
error on PCI bus and chip further blocks access to host,
causing a DMAE timeout.

Fix this issue by installing dummy empty transmit and receive
handlers at the beginning of unload path (rte_eth_dev_stop())
and install actual transmit and receive handlers after successful
load of the PMD port (rte_eth_dev_start()). This way, application
won't be able to send packets while device is going through
load/unload flow.

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