[dpdk-stable] [dpdk-dev] [PATCH] net/thunderx: fix Tx desc corruption in scatter-gather mode

Verma, Shally Shally.Verma at cavium.com
Mon Nov 12 08:21:42 CET 2018



>-----Original Message-----
>From: dev <dev-bounces at dpdk.org> On Behalf Of Nithin Dabilpuram
>Sent: 09 November 2018 11:21
>To: dev at dpdk.org; Jacob, Jerin <Jerin.JacobKollanukkaran at cavium.com>; Czekaj, Maciej <Maciej.Czekaj at cavium.com>
>Cc: Nilla, Subrahmanyam <Subrahmanyam.Nilla at cavium.com>; stable at dpdk.org; Dabilpuram, Nithin
><Nithin.Dabilpuram at cavium.com>
>Subject: [dpdk-dev] [PATCH] net/thunderx: fix Tx desc corruption in scatter-gather mode
>
>External Email
>
>From: Subrahmanyam Nilla <snilla at caviumnetworks.com>
>
>For performance reasons, word1 of send_hdr_s
>sub descriptor was not cleared assuming it is always
>having default value of zero since it comes from fixed
>offsets of SQ buffer.
>This is causing issues in case of SG mode because,
>the size of send command might change and hence the word1
>of send_hdr_s is not always at fixed offsets of the SQ buffer
>and hence not having default value of zero.
>
>This fixes the issue by clearing the word1 in case of SG mode
>for every packet.
>
>Fixes: 1c421f18e0 ("net/thunderx: add single and multi-segment Tx")
>Cc: stable at dpdk.org
>
>Signed-off-by: Subrahmanyam Nilla <snilla at caviumnetworks.com>
>Signed-off-by: Nithin Dabilpuram <ndabilpuram at caviumnetworks.com>
>---
> drivers/net/thunderx/nicvf_rxtx.c | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
>
>diff --git a/drivers/net/thunderx/nicvf_rxtx.c b/drivers/net/thunderx/nicvf_rxtx.c
>index 247c356..1c42874 100644
>--- a/drivers/net/thunderx/nicvf_rxtx.c
>+++ b/drivers/net/thunderx/nicvf_rxtx.c
>@@ -61,6 +61,14 @@
>        entry->buff[0] = sqe.buff[0];
> }
>
>+static inline void __hot
>+fill_sq_desc_header_zero_w1(union sq_entry_t *entry,
>+                               struct rte_mbuf *pkt)
>+{
>+       fill_sq_desc_header(entry, pkt);
>+       entry->buff[1] = 0ULL;
>+}
>+
> void __hot
> nicvf_single_pool_free_xmited_buffers(struct nicvf_txq *sq)
> {
>@@ -204,7 +212,7 @@
>                used_bufs += nb_segs;
>
>                txbuffs[tail] = NULL;
>-               fill_sq_desc_header(desc_ptr + tail, pkt);
>+               fill_sq_desc_header_zero_w1(desc_ptr + tail, pkt);
>                tail = (tail + 1) & qlen_mask;
>
>                txbuffs[tail] = pkt;
>--
Acked-by: Shally Verma <shally.verma at caviumnetworks.com>

Thanks
Shally
>1.8.3.1



More information about the stable mailing list