net/ice: fix error setting for L2TAG
Checks
Commit Message
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: c68a52b8b38c ("net/ice: support vector SSE in Rx")
Signed-off-by: Jeff Guo <jia.guo@intel.com>
---
drivers/net/ice/ice_rxtx_vec_common.h | 1 +
1 file changed, 1 insertion(+)
Comments
> -----Original Message-----
> From: Guo, Jia <jia.guo@intel.com>
> Sent: Thursday, May 21, 2020 5:46 AM
> To: Zhang, Qi Z <qi.z.zhang@intel.com>; Yang, Qiming
> <qiming.yang@intel.com>
> Cc: Ye, Xiaolong <xiaolong.ye@intel.com>; dev@dpdk.org; Guo, Jia
> <jia.guo@intel.com>
> Subject: [dpdk-dev] net/ice: 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: c68a52b8b38c ("net/ice: support vector SSE in Rx")
>
> Signed-off-by: Jeff Guo <jia.guo@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
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: c68a52b8b38c ("net/ice: support vector SSE in Rx")
>
>Signed-off-by: Jeff Guo <jia.guo@intel.com>
>---
> drivers/net/ice/ice_rxtx_vec_common.h | 1 +
> 1 file changed, 1 insertion(+)
>
>diff --git a/drivers/net/ice/ice_rxtx_vec_common.h b/drivers/net/ice/ice_rxtx_vec_common.h
>index 6b57ff2ae..46e3be98a 100644
>--- a/drivers/net/ice/ice_rxtx_vec_common.h
>+++ b/drivers/net/ice/ice_rxtx_vec_common.h
>@@ -29,6 +29,7 @@ ice_rx_reassemble_packets(struct ice_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.
@@ -29,6 +29,7 @@ ice_rx_reassemble_packets(struct ice_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;