From: Bhagyada Modali <bhagyada.modali@amd.com>
To: <chandu@amd.com>, <ferruh.yigit@amd.com>
Cc: <dev@dpdk.org>, <stable@dpdk.org>,
Bhagyada Modali <bhagyada.modali@amd.com>
Subject: [PATCH 3/3] net/axgbe: save segment data in scattered Rx
Date: Wed, 7 Sep 2022 13:33:26 -0400 [thread overview]
Message-ID: <20220907173326.124914-3-bhagyada.modali@amd.com> (raw)
In-Reply-To: <20220907173326.124914-1-bhagyada.modali@amd.com>
Save the segments of the packet, when the next descriptor data is not ready.
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 | 11 +++++++++++
drivers/net/axgbe/axgbe_rxtx.h | 6 ++++++
2 files changed, 17 insertions(+)
diff --git a/drivers/net/axgbe/axgbe_rxtx.c b/drivers/net/axgbe/axgbe_rxtx.c
index c1f51ed6d6..65bda2a0d3 100644
--- a/drivers/net/axgbe/axgbe_rxtx.c
+++ b/drivers/net/axgbe/axgbe_rxtx.c
@@ -416,11 +416,17 @@ uint16_t eth_axgbe_recv_scattered_pkts(void *rx_queue,
mbuf->data_len = data_len;
mbuf->pkt_len = data_len;
+ if (rxq->saved_mbuf) {
+ first_seg = rxq->saved_mbuf;
+ rxq->saved_mbuf = NULL;
+ }
+
if (first_seg != NULL) {
if (rte_pktmbuf_chain(first_seg, mbuf) != 0) {
rte_pktmbuf_free(first_seg);
first_seg = NULL;
rte_pktmbuf_free(mbuf);
+ rxq->saved_mbuf = NULL;
rxq->errors++;
eop = 0;
break;
@@ -502,6 +508,11 @@ uint16_t eth_axgbe_recv_scattered_pkts(void *rx_queue,
first_seg = NULL;
}
+ /* Check if we need to save state before leaving */
+ if (first_seg != NULL && eop == 0)
+ rxq->saved_mbuf = first_seg;
+
+
/* Save receive context.*/
rxq->pkts += nb_rx;
diff --git a/drivers/net/axgbe/axgbe_rxtx.h b/drivers/net/axgbe/axgbe_rxtx.h
index 2a330339cd..2da3095547 100644
--- a/drivers/net/axgbe/axgbe_rxtx.h
+++ b/drivers/net/axgbe/axgbe_rxtx.h
@@ -65,6 +65,12 @@ struct axgbe_rx_queue {
uint16_t crc_len;
/* address of s/w rx buffers */
struct rte_mbuf **sw_ring;
+
+ /* For segemented packets - save the current state
+ * of packet, if next descriptor is not ready yet
+ */
+ struct rte_mbuf *saved_mbuf;
+
/* Port private data */
struct axgbe_port *pdata;
/* Number of Rx descriptors in queue */
--
2.25.1
next prev parent reply other threads:[~2022-09-07 17:34 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-07 17:33 [PATCH 1/3] net/axgbe: reset the end of packet in scattered rx Bhagyada Modali
2022-09-07 17:33 ` [PATCH 2/3] net/axgbe: clear buffers in failure scenario " Bhagyada Modali
2022-09-07 17:33 ` Bhagyada Modali [this message]
2022-09-08 3:31 ` [PATCH v2 1/3] net/axgbe: reset the end of packet " Bhagyada Modali
2022-09-08 3:31 ` [PATCH v2 2/3] net/axgbe: clear buffers in failure scenario " Bhagyada Modali
2022-09-08 3:31 ` [PATCH v2 3/3] net/axgbe: save segment data in scattered Rx Bhagyada Modali
2022-09-08 13:56 ` [PATCH v2 1/3] net/axgbe: reset the end of packet in scattered rx Namburu, Chandu-babu
2022-09-21 14:39 ` Ferruh Yigit
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220907173326.124914-3-bhagyada.modali@amd.com \
--to=bhagyada.modali@amd.com \
--cc=chandu@amd.com \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@amd.com \
--cc=stable@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).