[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