[dpdk-dev] RX checksum offloading

Benson, Bryan bmbenson at amazon.com
Thu Nov 7 22:50:03 CET 2013


All,
I have prepared a patch for the issue.  If it is not in the correct format, please advise.  I also changed the array to be uint32_t to be consistent with the other functions that pull the status flags.

== PATCH BEGIN ==
>From 2ab73e88d92044c1d840f896d87e9a8cbcf29ce4 Mon Sep 17 00:00:00 2001
From: Bryan Benson <bmbenson at amazon.com>
Date: Thu, 7 Nov 2013 21:38:57 +0000
Subject: [PATCH] Do not unset the status bits in the scan_hw_ring function
 when counting the number of done descriptors.

---
 inteldpdk/DPDK/lib/librte_pmd_ixgbe/ixgbe_rxtx.c |   13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/inteldpdk/DPDK/lib/librte_pmd_ixgbe/ixgbe_rxtx.c b/inteldpdk/DPDK/lib/librte_pmd_ixgbe/ixgbe_rxtx.c
index 2be9979..c4abf9a 100755
--- a/inteldpdk/DPDK/lib/librte_pmd_ixgbe/ixgbe_rxtx.c
+++ b/inteldpdk/DPDK/lib/librte_pmd_ixgbe/ixgbe_rxtx.c
@@ -1037,7 +1037,8 @@ ixgbe_rx_scan_hw_ring(struct igb_rx_queue *rxq)
        struct igb_rx_entry *rxep;
        struct rte_mbuf *mb;
        uint16_t pkt_len;
-       int s[LOOK_AHEAD], nb_dd;
+       uint32_t s[LOOK_AHEAD];
+       int nb_dd;
        int i, j, nb_rx = 0;
 
 
@@ -1060,12 +1061,12 @@ ixgbe_rx_scan_hw_ring(struct igb_rx_queue *rxq)
                for (j = LOOK_AHEAD-1; j >= 0; --j)
                        s[j] = rxdp[j].wb.upper.status_error;
 
-               /* Clear everything but the status bits (LSB) */
-               for (j = 0; j < LOOK_AHEAD; ++j)
-                       s[j] &= IXGBE_RXDADV_STAT_DD;
+               nb_dd = 0;
+               /* add to nd_dd when the status bit is set (LSB) */
+               for (j = 0; j < LOOK_AHEAD; ++j) {
+                       nb_dd += s[j] & IXGBE_RXDADV_STAT_DD;
+               }
 
-               /* Compute how many status bits were set */
-               nb_dd = s[0]+s[1]+s[2]+s[3]+s[4]+s[5]+s[6]+s[7];
                nb_rx += nb_dd;
 
                /* Translate descriptor info to mbuf format */
-- 
1.7.9.5

== PATCH END ==

A validation text email will follow.

Thank you,
Bryan Benson
Amazon Web Services
________________________________________
From: Thomas Monjalon [thomas.monjalon at 6wind.com]
Sent: Thursday, November 07, 2013 3:44 AM
To: Benson, Bryan
Cc: dev at dpdk.org; LiuFeng
Subject: Re: [dpdk-dev] RX checksum offloading

07/11/2013 10:06, Thomas Monjalon :
> 07/11/2013 04:44, Benson, Bryan :
> >   RX queues=1 - RX desc=1024 - RX free threshold=16
> >
> > ---------------------- Forward statistics for port 0
> >
> >  RX-total: 543761 Bad-ipcsum: 543558         Bad-l4csum: 0
> >
> > ---------------------- Forward statistics for port 1
> >
> >  RX-total: 542226 Bad-ipcsum: 0              Bad-l4csum: 542005
> >
> >   RX queues=1 - RX desc=1024 - RX free threshold=32
> >
> > ---------------------- Forward statistics for port 0
> >
> >  RX-total: 378894 Bad-ipcsum: 0              Bad-l4csum: 0
> >
> > ---------------------- Forward statistics for port 1
> >
> >  RX-total: 381197 Bad-ipcsum: 0              Bad-l4csum: 0
>
> Excellent report, thank you !
>
> We need to fix it now :)

LiuFeng had seen this issue with additonal comments:
        http://www.dpdk.org/ml/archives/dev/2013-September/000529.html

--
Thomas




More information about the dev mailing list