[dpdk-dev] [PATCH v1] i40: fix the VXLAN TSO issue
Wu, Jingjing
jingjing.wu at intel.com
Wed Jul 6 07:38:53 CEST 2016
> --- a/drivers/net/i40e/i40e_rxtx.c
> +++ b/drivers/net/i40e/i40e_rxtx.c
> @@ -801,6 +801,12 @@ i40e_txd_enable_checksum(uint64_t ol_flags,
> union i40e_tx_offload tx_offload,
> uint32_t *cd_tunneling)
> {
> + /* Tx pkts tunnel type*/
> + if ((ol_flags & PKT_TX_TUNNEL_MASK) == PKT_TX_TUNNEL_VXLAN)
> + *cd_tunneling |= I40E_TXD_CTX_UDP_TUNNELING;
> + else if ((ol_flags & PKT_TX_TUNNEL_MASK) ==
> PKT_TX_TUNNEL_GRE)
> + *cd_tunneling |= I40E_TXD_CTX_GRE_TUNNELING;
> +
> /* UDP tunneling packet TX checksum offload */
> if (ol_flags & PKT_TX_OUTER_IP_CKSUM) {
>
Besides the tunnel type programming, please also check the L4TUNLEN in tunnel parameters.
> @@ -1510,7 +1516,8 @@ i40e_calc_context_desc(uint64_t flags)
>
> /* set i40e TSO context descriptor */
> static inline uint64_t
> -i40e_set_tso_ctx(struct rte_mbuf *mbuf, union i40e_tx_offload tx_offload)
> +i40e_set_tso_ctx(struct rte_mbuf *mbuf,
> + union i40e_tx_offload tx_offload)
> {
> uint64_t ctx_desc = 0;
> uint32_t cd_cmd, hdr_len, cd_tso_len;
> @@ -1537,7 +1544,6 @@ i40e_set_tso_ctx(struct rte_mbuf *mbuf, union
> i40e_tx_offload tx_offload)
Please have a look at the calculation of tso length here. Only tunnel type added may not be enogh.
> I40E_TXD_CTX_QW1_TSO_LEN_SHIFT) |
> ((uint64_t)mbuf->tso_segsz <<
> I40E_TXD_CTX_QW1_MSS_SHIFT);
> -
> return ctx_desc;
> }
>
This patch contains changes on testpmd, driver and mbuf definition. It's better to split them and sent to the maintainers.
More information about the dev
mailing list