[v2,1/3] net/axgbe: reset the end of packet in scattered rx

Message ID 20220908033109.126547-1-bhagyada.modali@amd.com (mailing list archive)
State Accepted, archived
Delegated to: Ferruh Yigit
Headers
Series [v2,1/3] net/axgbe: reset the end of packet in scattered rx |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/iol-testing warning apply patch failure

Commit Message

Bhagyada Modali Sept. 8, 2022, 3:31 a.m. UTC
  Reset the eop in the failure scenario and also after the last segment.
Removed the packet length updation explicitly as it is done in Chaining.

Fixes: 965b3127d425 ("net/axgbe: support scattered Rx")
Cc: stable@dpdk.org

Signed-off-by: Bhagyada Modali <bhagyada.modali@amd.com>
---
 drivers/net/axgbe/axgbe_rxtx.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)
  

Comments

Namburu, Chandu-babu Sept. 8, 2022, 1:56 p.m. UTC | #1
[Public]

For the series,
Acked-by: Chandubabu Namburu <chandu@amd.com>

-----Original Message-----
From: Modali, Bhagyada <Bhagyada.Modali@amd.com> 
Sent: Thursday, September 8, 2022 9:01 AM
To: Namburu, Chandu-babu <chandu@amd.com>; Yigit, Ferruh <Ferruh.Yigit@amd.com>
Cc: dev@dpdk.org; stable@dpdk.org; Modali, Bhagyada <Bhagyada.Modali@amd.com>
Subject: [PATCH v2 1/3] net/axgbe: reset the end of packet in scattered rx

Reset the eop in the failure scenario and also after the last segment.
Removed the packet length updation explicitly as it is done in Chaining.

Fixes: 965b3127d425 ("net/axgbe: support scattered Rx")
Cc: stable@dpdk.org

Signed-off-by: Bhagyada Modali <bhagyada.modali@amd.com>
---
 drivers/net/axgbe/axgbe_rxtx.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/net/axgbe/axgbe_rxtx.c b/drivers/net/axgbe/axgbe_rxtx.c index 8b43e8160b..e1488483bc 100644
--- a/drivers/net/axgbe/axgbe_rxtx.c
+++ b/drivers/net/axgbe/axgbe_rxtx.c
@@ -346,10 +346,11 @@ uint16_t eth_axgbe_recv_scattered_pkts(void *rx_queue,
 	uint32_t error_status = 0;
 	uint16_t idx, pidx, data_len = 0, pkt_len = 0;
 	uint64_t offloads;
+	bool eop = 0;
 
 	idx = AXGBE_GET_DESC_IDX(rxq, rxq->cur);
+
 	while (nb_rx < nb_pkts) {
-		bool eop = 0;
 next_desc:
 		idx = AXGBE_GET_DESC_IDX(rxq, rxq->cur);
 
@@ -416,9 +417,12 @@ uint16_t eth_axgbe_recv_scattered_pkts(void *rx_queue,
 		mbuf->pkt_len = data_len;
 
 		if (first_seg != NULL) {
-			if (rte_pktmbuf_chain(first_seg, mbuf) != 0)
+			if (rte_pktmbuf_chain(first_seg, mbuf) != 0) {
 				rte_mempool_put(rxq->mb_pool,
 						first_seg);
+				eop = 0;
+				break;
+			}
 		} else {
 			first_seg = mbuf;
 		}
@@ -462,8 +466,8 @@ uint16_t eth_axgbe_recv_scattered_pkts(void *rx_queue,
 			rte_pktmbuf_free(mbuf);
 			goto next_desc;
 		}
+		eop = 0;
 
-		first_seg->pkt_len = pkt_len;
 		rxq->bytes += pkt_len;
 		mbuf->next = NULL;
 
--
2.25.1
  
Ferruh Yigit Sept. 21, 2022, 2:39 p.m. UTC | #2
On 9/8/2022 2:56 PM, Namburu, Chandu-babu wrote:

> From: Modali, Bhagyada <Bhagyada.Modali@amd.com>
> Sent: Thursday, September 8, 2022 9:01 AM
> To: Namburu, Chandu-babu <chandu@amd.com>; Yigit, Ferruh <Ferruh.Yigit@amd.com>
> Cc: dev@dpdk.org; stable@dpdk.org; Modali, Bhagyada <Bhagyada.Modali@amd.com>
> Subject: [PATCH v2 1/3] net/axgbe: reset the end of packet in scattered rx
> 
> Reset the eop in the failure scenario and also after the last segment.
> Removed the packet length updation explicitly as it is done in Chaining.
> 
> Fixes: 965b3127d425 ("net/axgbe: support scattered Rx")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Bhagyada Modali <bhagyada.modali@amd.com>
 >
> Acked-by: Chandubabu Namburu <chandu@amd.com>
> 
Series applied to dpdk-next-net/main, thanks.
  

Patch

diff --git a/drivers/net/axgbe/axgbe_rxtx.c b/drivers/net/axgbe/axgbe_rxtx.c
index 8b43e8160b..e1488483bc 100644
--- a/drivers/net/axgbe/axgbe_rxtx.c
+++ b/drivers/net/axgbe/axgbe_rxtx.c
@@ -346,10 +346,11 @@  uint16_t eth_axgbe_recv_scattered_pkts(void *rx_queue,
 	uint32_t error_status = 0;
 	uint16_t idx, pidx, data_len = 0, pkt_len = 0;
 	uint64_t offloads;
+	bool eop = 0;
 
 	idx = AXGBE_GET_DESC_IDX(rxq, rxq->cur);
+
 	while (nb_rx < nb_pkts) {
-		bool eop = 0;
 next_desc:
 		idx = AXGBE_GET_DESC_IDX(rxq, rxq->cur);
 
@@ -416,9 +417,12 @@  uint16_t eth_axgbe_recv_scattered_pkts(void *rx_queue,
 		mbuf->pkt_len = data_len;
 
 		if (first_seg != NULL) {
-			if (rte_pktmbuf_chain(first_seg, mbuf) != 0)
+			if (rte_pktmbuf_chain(first_seg, mbuf) != 0) {
 				rte_mempool_put(rxq->mb_pool,
 						first_seg);
+				eop = 0;
+				break;
+			}
 		} else {
 			first_seg = mbuf;
 		}
@@ -462,8 +466,8 @@  uint16_t eth_axgbe_recv_scattered_pkts(void *rx_queue,
 			rte_pktmbuf_free(mbuf);
 			goto next_desc;
 		}
+		eop = 0;
 
-		first_seg->pkt_len = pkt_len;
 		rxq->bytes += pkt_len;
 		mbuf->next = NULL;