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