net/i40e: fix tunnel packet TX descriptor error
Checks
Commit Message
The TX descriptor of tunnel packet filled incorrectly due to the MACLEN
is not set.
This patch fixes this issue by setting MACLEN to correctly fill the
TX descriptor.
Fixes: c59faf3fe8fe ("net/i40e: support TSO on tunneling packet")
Cc: stable@dpdk.org
Signed-off-by: Shiyang He <shiyangx.he@intel.com>
---
drivers/net/i40e/i40e_rxtx.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
Comments
> -----Original Message-----
> From: Shiyang He <shiyangx.he@intel.com>
> Sent: Wednesday, June 14, 2023 5:59 PM
> To: dev@dpdk.org
> Cc: Zhou, YidingX <yidingx.zhou@intel.com>; He, ShiyangX
> <shiyangx.he@intel.com>; stable@dpdk.org; Zhang, Yuying
> <yuying.zhang@intel.com>; Xing, Beilei <beilei.xing@intel.com>; Zhe Tao
> <zhe.tao@intel.com>; Jianfeng Tan <jianfeng.tan@intel.com>
> Subject: [PATCH] net/i40e: fix tunnel packet TX descriptor error
>
> The TX descriptor of tunnel packet filled incorrectly due to the MACLEN is
> not set.
>
> This patch fixes this issue by setting MACLEN to correctly fill the TX
> descriptor.
>
> Fixes: c59faf3fe8fe ("net/i40e: support TSO on tunneling packet")
> Cc: stable@dpdk.org
>
> Signed-off-by: Shiyang He <shiyangx.he@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
Applied to dpdk-next-net-intel.
Thanks
Qi
@@ -304,10 +304,7 @@ i40e_txd_enable_checksum(uint64_t ol_flags,
union i40e_tx_offload tx_offload)
{
/* Set MACLEN */
- if (ol_flags & RTE_MBUF_F_TX_TUNNEL_MASK)
- *td_offset |= (tx_offload.outer_l2_len >> 1)
- << I40E_TX_DESC_LENGTH_MACLEN_SHIFT;
- else
+ if (!(ol_flags & RTE_MBUF_F_TX_TUNNEL_MASK))
*td_offset |= (tx_offload.l2_len >> 1)
<< I40E_TX_DESC_LENGTH_MACLEN_SHIFT;
@@ -1171,9 +1168,12 @@ i40e_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
/* Fill in tunneling parameters if necessary */
cd_tunneling_params = 0;
- if (ol_flags & RTE_MBUF_F_TX_TUNNEL_MASK)
+ if (ol_flags & RTE_MBUF_F_TX_TUNNEL_MASK) {
+ td_offset |= (tx_offload.outer_l2_len >> 1)
+ << I40E_TX_DESC_LENGTH_MACLEN_SHIFT;
i40e_parse_tunneling_params(ol_flags, tx_offload,
&cd_tunneling_params);
+ }
/* Enable checksum offloading */
if (ol_flags & I40E_TX_CKSUM_OFFLOAD_MASK)
i40e_txd_enable_checksum(ol_flags, &td_cmd,