net/i40e: fix error setting for L2TAG

Message ID 20200520212521.34197-1-jia.guo@intel.com (mailing list archive)
State Accepted, archived
Delegated to: xiaolong ye
Headers
Series net/i40e: fix error setting for L2TAG |

Checks

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

Commit Message

Guo, Jia May 20, 2020, 9:25 p.m. UTC
  Base on HW, if a packet be split into multiple segments, the L2TAG
should only be valid on the last Rx descriptor. So fix it by setting
L2TAG into mbuf when processing the last split packet.

Fixes: ca74903b75cf ("net/i40e: extract non-x86 specific code from vector driver")

Signed-off-by: Jeff Guo <jia.guo@intel.com>
---
 drivers/net/i40e/i40e_rxtx_vec_common.h | 1 +
 1 file changed, 1 insertion(+)
  

Comments

Qi Zhang May 20, 2020, 10:01 a.m. UTC | #1
> -----Original Message-----
> From: Guo, Jia <jia.guo@intel.com>
> Sent: Thursday, May 21, 2020 5:25 AM
> To: Xing, Beilei <beilei.xing@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com>;
> jianbo.liu@linaro.org; xiaoping.yan@nokia-sbell.com
> Cc: Ye, Xiaolong <xiaolong.ye@intel.com>; dev@dpdk.org; Guo, Jia
> <jia.guo@intel.com>; olivier.matz@6wind.com
> Subject: [dpdk-dev] net/i40e: fix error setting for L2TAG
> 
> Base on HW, if a packet be split into multiple segments, the L2TAG should
> only be valid on the last Rx descriptor. So fix it by setting L2TAG into mbuf
> when processing the last split packet.
> 
> Fixes: ca74903b75cf ("net/i40e: extract non-x86 specific code from vector
> driver")
> 
> Signed-off-by: Jeff Guo <jia.guo@intel.com>

Acked-by: Qi Zhang <qi.z.zhang@intel.com>
  
Xiaolong Ye May 21, 2020, 12:22 a.m. UTC | #2
On 05/20, Jeff Guo wrote:
>Base on HW, if a packet be split into multiple segments, the L2TAG
>should only be valid on the last Rx descriptor. So fix it by setting
>L2TAG into mbuf when processing the last split packet.
>
>Fixes: ca74903b75cf ("net/i40e: extract non-x86 specific code from vector driver")
>
>Signed-off-by: Jeff Guo <jia.guo@intel.com>
>---
> drivers/net/i40e/i40e_rxtx_vec_common.h | 1 +
> 1 file changed, 1 insertion(+)
>
>diff --git a/drivers/net/i40e/i40e_rxtx_vec_common.h b/drivers/net/i40e/i40e_rxtx_vec_common.h
>index 0e6ffa007..31f73f605 100644
>--- a/drivers/net/i40e/i40e_rxtx_vec_common.h
>+++ b/drivers/net/i40e/i40e_rxtx_vec_common.h
>@@ -33,6 +33,7 @@ reassemble_packets(struct i40e_rx_queue *rxq, struct rte_mbuf **rx_bufs,
> 			if (!split_flags[buf_idx]) {
> 				/* it's the last packet of the set */
> 				start->hash = end->hash;
>+				start->vlan_tci = end->vlan_tci;
> 				start->ol_flags = end->ol_flags;
> 				/* we need to strip crc for the whole packet */
> 				start->pkt_len -= rxq->crc_len;
>-- 
>2.20.1
>

Applied to dpdk-next-net-intel, Thanks.
  
Yan, Xiaoping (NSB - CN/Hangzhou) May 21, 2020, 1:33 a.m. UTC | #3
Hi,

In which dpdk release, this fix will be available?
Thank you.

Best regards
Yan Xiaoping

-----Original Message-----
From: Ye Xiaolong <xiaolong.ye@intel.com> 
Sent: 2020年5月21日 8:23
To: Jeff Guo <jia.guo@intel.com>
Cc: beilei.xing@intel.com; qi.z.zhang@intel.com; jianbo.liu@linaro.org; Yan, Xiaoping (NSB - CN/Hangzhou) <xiaoping.yan@nokia-sbell.com>; dev@dpdk.org; olivier.matz@6wind.com
Subject: Re: [dpdk-dev] net/i40e: fix error setting for L2TAG

On 05/20, Jeff Guo wrote:
>Base on HW, if a packet be split into multiple segments, the L2TAG 
>should only be valid on the last Rx descriptor. So fix it by setting 
>L2TAG into mbuf when processing the last split packet.
>
>Fixes: ca74903b75cf ("net/i40e: extract non-x86 specific code from 
>vector driver")
>
>Signed-off-by: Jeff Guo <jia.guo@intel.com>
>---
> drivers/net/i40e/i40e_rxtx_vec_common.h | 1 +
> 1 file changed, 1 insertion(+)
>
>diff --git a/drivers/net/i40e/i40e_rxtx_vec_common.h 
>b/drivers/net/i40e/i40e_rxtx_vec_common.h
>index 0e6ffa007..31f73f605 100644
>--- a/drivers/net/i40e/i40e_rxtx_vec_common.h
>+++ b/drivers/net/i40e/i40e_rxtx_vec_common.h
>@@ -33,6 +33,7 @@ reassemble_packets(struct i40e_rx_queue *rxq, struct rte_mbuf **rx_bufs,
> 			if (!split_flags[buf_idx]) {
> 				/* it's the last packet of the set */
> 				start->hash = end->hash;
>+				start->vlan_tci = end->vlan_tci;
> 				start->ol_flags = end->ol_flags;
> 				/* we need to strip crc for the whole packet */
> 				start->pkt_len -= rxq->crc_len;
>--
>2.20.1
>

Applied to dpdk-next-net-intel, Thanks.
  

Patch

diff --git a/drivers/net/i40e/i40e_rxtx_vec_common.h b/drivers/net/i40e/i40e_rxtx_vec_common.h
index 0e6ffa007..31f73f605 100644
--- a/drivers/net/i40e/i40e_rxtx_vec_common.h
+++ b/drivers/net/i40e/i40e_rxtx_vec_common.h
@@ -33,6 +33,7 @@  reassemble_packets(struct i40e_rx_queue *rxq, struct rte_mbuf **rx_bufs,
 			if (!split_flags[buf_idx]) {
 				/* it's the last packet of the set */
 				start->hash = end->hash;
+				start->vlan_tci = end->vlan_tci;
 				start->ol_flags = end->ol_flags;
 				/* we need to strip crc for the whole packet */
 				start->pkt_len -= rxq->crc_len;