Olaf Hering 01a210
From: Haiyang Zhang <haiyangz@microsoft.com>
Olaf Hering 01a210
Date: Fri, 4 Feb 2022 14:45:44 -0800
Olaf Hering 01a210
Patch-mainline: v5.18-rc1
Olaf Hering 01a210
Subject: net: mana: Add handling of CQE_RX_TRUNCATED
Olaf Hering 01a210
Git-commit: e4b7621982d29f26ff4d39af389e5e675a4ffed4
Olaf Hering 01a210
References: bsc#1195651
Olaf Hering 01a210
Olaf Hering 01a210
The proper way to drop this kind of CQE is advancing rxq tail
Olaf Hering 01a210
without indicating the packet to the upper network layer.
Olaf Hering 01a210
Olaf Hering 01a210
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Olaf Hering 01a210
Reviewed-by: Dexuan Cui <decui@microsoft.com>
Olaf Hering 01a210
Signed-off-by: David S. Miller <davem@davemloft.net>
Olaf Hering 01a210
Acked-by: Olaf Hering <ohering@suse.de>
Olaf Hering 01a210
---
Olaf Hering 01a210
 drivers/net/ethernet/microsoft/mana/mana_en.c | 7 +++++--
Olaf Hering 01a210
 1 file changed, 5 insertions(+), 2 deletions(-)
Olaf Hering 01a210
Olaf Hering 01a210
diff --git a/drivers/net/ethernet/microsoft/mana/mana_en.c b/drivers/net/ethernet/microsoft/mana/mana_en.c
Olaf Hering 01a210
--- a/drivers/net/ethernet/microsoft/mana/mana_en.c
Olaf Hering 01a210
+++ b/drivers/net/ethernet/microsoft/mana/mana_en.c
Olaf Hering 01a210
@@ -1085,8 +1085,10 @@ static void mana_process_rx_cqe(struct mana_rxq *rxq, struct mana_cq *cq,
Olaf Hering 01a210
 		break;
Olaf Hering 01a210
 
Olaf Hering 01a210
 	case CQE_RX_TRUNCATED:
Olaf Hering 01a210
-		netdev_err(ndev, "Dropped a truncated packet\n");
Olaf Hering 01a210
-		return;
Olaf Hering 01a210
+		++ndev->stats.rx_dropped;
Olaf Hering 01a210
+		rxbuf_oob = &rxq->rx_oobs[rxq->buf_index];
Olaf Hering 01a210
+		netdev_warn_once(ndev, "Dropped a truncated packet\n");
Olaf Hering 01a210
+		goto drop;
Olaf Hering 01a210
 
Olaf Hering 01a210
 	case CQE_RX_COALESCED_4:
Olaf Hering 01a210
 		netdev_err(ndev, "RX coalescing is unsupported\n");
Olaf Hering 01a210
@@ -1154,6 +1156,7 @@ static void mana_process_rx_cqe(struct mana_rxq *rxq, struct mana_cq *cq,
Olaf Hering 01a210
 
Olaf Hering 01a210
 	mana_rx_skb(old_buf, oob, rxq);
Olaf Hering 01a210
 
Olaf Hering 01a210
+drop:
Olaf Hering 01a210
 	mana_move_wq_tail(rxq->gdma_rq, rxbuf_oob->wqe_inf.wqe_size_in_bu);
Olaf Hering 01a210
 
Olaf Hering 01a210
 	mana_post_pkt_rxq(rxq);