[1/5] net/bnx2x: fix packet drop

Message ID 20190604185352.28629-1-shshaikh@marvell.com (mailing list archive)
State Accepted, archived
Delegated to: Ferruh Yigit
Headers
Series [1/5] net/bnx2x: fix packet drop |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/mellanox-Performance-Testing success Performance Testing PASS
ci/intel-Performance-Testing success Performance Testing PASS
ci/Intel-compilation fail Compilation issues

Commit Message

Shahed Shaikh June 4, 2019, 6:53 p.m. UTC
  Patch "8bd31421c593 ("net/bnx2x: fix ramrod timeout")"
introduced a regression where sc->scan_fp flags is
set for unexpectedly long time. So the slow path completion
handler flow is run unnecessarily which walks over receive
descriptor ring of fast path and drops the data packets while looking
for slow path completion descriptor out of fast path ring.

This issue is seen under heavy traffic with link events happening
in background.

Fixes: 8bd31421c593 ("net/bnx2x: fix ramrod timeout")
Cc: stable@dpdk.org

Signed-off-by: Shahed Shaikh <shshaikh@marvell.com>
---
 drivers/net/bnx2x/bnx2x.c    | 2 ++
 drivers/net/bnx2x/ecore_sp.c | 4 ----
 2 files changed, 2 insertions(+), 4 deletions(-)
  

Comments

Rasesh Mody June 5, 2019, 5:17 a.m. UTC | #1
>From: Shahed Shaikh <shshaikh@marvell.com>
>Sent: Tuesday, June 04, 2019 11:54 AM
>
>Patch "8bd31421c593 ("net/bnx2x: fix ramrod timeout")"
>introduced a regression where sc->scan_fp flags is set for unexpectedly long
>time. So the slow path completion handler flow is run unnecessarily which
>walks over receive descriptor ring of fast path and drops the data packets
>while looking for slow path completion descriptor out of fast path ring.
>
>This issue is seen under heavy traffic with link events happening in
>background.
>
>Fixes: 8bd31421c593 ("net/bnx2x: fix ramrod timeout")
>Cc: stable@dpdk.org
>
>Signed-off-by: Shahed Shaikh <shshaikh@marvell.com>
>---

For the whole series.

Acked-by: Rasesh Mody <rmody@marvell.com>
  
Ferruh Yigit June 11, 2019, 11:12 a.m. UTC | #2
On 6/5/2019 6:17 AM, Rasesh Mody wrote:
>> From: Shahed Shaikh <shshaikh@marvell.com>
>> Sent: Tuesday, June 04, 2019 11:54 AM
>>
>> Patch "8bd31421c593 ("net/bnx2x: fix ramrod timeout")"
>> introduced a regression where sc->scan_fp flags is set for unexpectedly long
>> time. So the slow path completion handler flow is run unnecessarily which
>> walks over receive descriptor ring of fast path and drops the data packets
>> while looking for slow path completion descriptor out of fast path ring.
>>
>> This issue is seen under heavy traffic with link events happening in
>> background.
>>
>> Fixes: 8bd31421c593 ("net/bnx2x: fix ramrod timeout")
>> Cc: stable@dpdk.org
>>
>> Signed-off-by: Shahed Shaikh <shshaikh@marvell.com>
>> ---
> 
> For the whole series.
> 
> Acked-by: Rasesh Mody <rmody@marvell.com>
> 

Series applied to dpdk-next-net/master, thanks.
  

Patch

diff --git a/drivers/net/bnx2x/bnx2x.c b/drivers/net/bnx2x/bnx2x.c
index 3e705c7a1..0698b1a8a 100644
--- a/drivers/net/bnx2x/bnx2x.c
+++ b/drivers/net/bnx2x/bnx2x.c
@@ -4572,6 +4572,8 @@  static void bnx2x_handle_fp_tq(struct bnx2x_fastpath *fp)
 		}
 	}
 
+	/* Assuming we have completed slow path completion, clear the flag */
+	rte_atomic32_set(&sc->scan_fp, 0);
 	bnx2x_ack_sb(sc, fp->igu_sb_id, USTORM_ID,
 		   le16toh(fp->fp_hc_idx), IGU_INT_ENABLE, 1);
 }
diff --git a/drivers/net/bnx2x/ecore_sp.c b/drivers/net/bnx2x/ecore_sp.c
index 43194095b..5ac22e725 100644
--- a/drivers/net/bnx2x/ecore_sp.c
+++ b/drivers/net/bnx2x/ecore_sp.c
@@ -291,10 +291,6 @@  static int ecore_state_wait(struct bnx2x_softc *sc, int state,
 		cnt *= 20;
 
 	ECORE_MSG(sc, "waiting for state to become %d", state);
-	/* being over protective to remind bnx2x_intr_legacy() to
-	 * process RAMROD
-	 */
-	rte_atomic32_set(&sc->scan_fp, 1);
 
 	ECORE_MIGHT_SLEEP();
 	while (cnt--) {