[v3,1/1] net: fix bad checksum in offloaded TSOv6 packets

Message ID 20200730020043.17546-1-yuying.zhang@intel.com (mailing list archive)
State Not Applicable, archived
Delegated to: Ferruh Yigit
Headers
Series [v3,1/1] net: fix bad checksum in offloaded TSOv6 packets |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/iol-intel-Performance success Performance Testing PASS
ci/travis-robot success Travis build: passed
ci/iol-testing success Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS

Commit Message

Zhang, Yuying July 30, 2020, 2 a.m. UTC
  The rte_net_intel_cksum_flags_prepare() function prepares the
pseudoheader checksum in packet data when doing checksum or TSO
offload.

It does nothing when no checksum offload flag is set in mbuf. But
in case of a IPv6/TCP TSO packet, it is not mandatory to have a
checksum flag. We also need to check the PKT_TX_TCP_SEG flag in addition
to checksum flags to fix offload preparation for such packets.

Fixes: 520059a41aa9 ("net: check fragmented headers in non-debug as well")

Signed-off-by: Yuying Zhang <yuying.zhang@intel.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
---
 lib/librte_net/rte_net.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Zhang, Yuying July 30, 2020, 2:25 a.m. UTC | #1
> -----Original Message-----
> From: Zhang, Yuying <yuying.zhang@intel.com>
> Sent: 2020年7月30日 10:01
> To: dev@dpdk.org; olivier.matz@6wind.com; Zhang, Qi Z
> <qi.z.zhang@intel.com>; Yang, Qiming <qiming.yang@intel.com>
> Cc: Zhang, Yuying <yuying.zhang@intel.com>; David Marchand
> <david.marchand@redhat.com>
> Subject: [PATCH v3 1/1] net: fix bad checksum in offloaded TSOv6 packets
> 
> The rte_net_intel_cksum_flags_prepare() function prepares the pseudoheader
> checksum in packet data when doing checksum or TSO offload.
> 
> It does nothing when no checksum offload flag is set in mbuf. But in case of a
> IPv6/TCP TSO packet, it is not mandatory to have a checksum flag. We also need
> to check the PKT_TX_TCP_SEG flag in addition to checksum flags to fix offload
> preparation for such packets.
> 
> Fixes: 520059a41aa9 ("net: check fragmented headers in non-debug as well")
> 
> Signed-off-by: Yuying Zhang <yuying.zhang@intel.com>
> Acked-by: Olivier Matz <olivier.matz@6wind.com>
> Reviewed-by: David Marchand <david.marchand@redhat.com>
> ---
>  lib/librte_net/rte_net.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/lib/librte_net/rte_net.h b/lib/librte_net/rte_net.h index
> 1edc283a4..94b06d9ee 100644
> --- a/lib/librte_net/rte_net.h
> +++ b/lib/librte_net/rte_net.h
> @@ -125,7 +125,7 @@ rte_net_intel_cksum_flags_prepare(struct rte_mbuf *m,
> uint64_t ol_flags)
>  	 * Mainly it is required to avoid fragmented headers check if
>  	 * no offloads are requested.
>  	 */
> -	if (!(ol_flags & (PKT_TX_IP_CKSUM | PKT_TX_L4_MASK)))
> +	if (!(ol_flags & (PKT_TX_IP_CKSUM | PKT_TX_L4_MASK |
> PKT_TX_TCP_SEG)))
>  		return 0;
> 
>  	if (ol_flags & (PKT_TX_OUTER_IPV4 | PKT_TX_OUTER_IPV6))
> --
> 2.25.1

Please drop this patch since it has been merged into dpdk-next-net/master.
I am so sorry.
  

Patch

diff --git a/lib/librte_net/rte_net.h b/lib/librte_net/rte_net.h
index 1edc283a4..94b06d9ee 100644
--- a/lib/librte_net/rte_net.h
+++ b/lib/librte_net/rte_net.h
@@ -125,7 +125,7 @@  rte_net_intel_cksum_flags_prepare(struct rte_mbuf *m, uint64_t ol_flags)
 	 * Mainly it is required to avoid fragmented headers check if
 	 * no offloads are requested.
 	 */
-	if (!(ol_flags & (PKT_TX_IP_CKSUM | PKT_TX_L4_MASK)))
+	if (!(ol_flags & (PKT_TX_IP_CKSUM | PKT_TX_L4_MASK | PKT_TX_TCP_SEG)))
 		return 0;
 
 	if (ol_flags & (PKT_TX_OUTER_IPV4 | PKT_TX_OUTER_IPV6))