[PATCH v3 08/36] net/i40e: refactor context descriptor handling

Loftus, Ciara ciara.loftus at intel.com
Fri Feb 6 11:54:40 CET 2026


> Subject: [PATCH v3 08/36] net/i40e: refactor context descriptor handling
> 
> move all context descriptor handling to a single function, as with the

Nit: capitalise

> ice driver, and use the same function signature as that driver.
> 
> Signed-off-by: Bruce Richardson <bruce.richardson at intel.com>
> ---
>  drivers/net/intel/i40e/i40e_rxtx.c | 123 +++++++++++++++--------------
>  1 file changed, 63 insertions(+), 60 deletions(-)
> 
> diff --git a/drivers/net/intel/i40e/i40e_rxtx.c
> b/drivers/net/intel/i40e/i40e_rxtx.c
> index b75306931a..183b70c63f 100644
> --- a/drivers/net/intel/i40e/i40e_rxtx.c
> +++ b/drivers/net/intel/i40e/i40e_rxtx.c
> @@ -321,11 +321,6 @@ i40e_txd_enable_checksum(uint64_t ol_flags,
>  			uint32_t *td_offset,
>  			union ci_tx_offload tx_offload)
>  {
> -	/* Set MACLEN */
> -	if (!(ol_flags & RTE_MBUF_F_TX_TUNNEL_MASK))
> -		*td_offset |= (tx_offload.l2_len >> 1)
> -			<< CI_TX_DESC_LEN_MACLEN_S;
> -
>  	/* Enable L3 checksum offloads */
>  	if (ol_flags & RTE_MBUF_F_TX_IP_CKSUM) {
>  		*td_cmd |= CI_TX_DESC_CMD_IIPT_IPV4_CSUM;
> @@ -1004,7 +999,7 @@ 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 ci_tx_offload tx_offload)
> +i40e_set_tso_ctx(uint64_t ol_flags, const struct rte_mbuf *mbuf, union
> ci_tx_offload tx_offload)
>  {
>  	uint64_t ctx_desc = 0;
>  	uint32_t cd_cmd, hdr_len, cd_tso_len;
> @@ -1015,7 +1010,7 @@ i40e_set_tso_ctx(struct rte_mbuf *mbuf, union
> ci_tx_offload tx_offload)
>  	}
> 
>  	hdr_len = tx_offload.l2_len + tx_offload.l3_len + tx_offload.l4_len;
> -	hdr_len += (mbuf->ol_flags & RTE_MBUF_F_TX_TUNNEL_MASK) ?
> +	hdr_len += (ol_flags & RTE_MBUF_F_TX_TUNNEL_MASK) ?
>  		   tx_offload.outer_l2_len + tx_offload.outer_l3_len : 0;
> 
>  	cd_cmd = I40E_TX_CTX_DESC_TSO;
> @@ -1029,6 +1024,52 @@ i40e_set_tso_ctx(struct rte_mbuf *mbuf, union
> ci_tx_offload tx_offload)
>  	return ctx_desc;
>  }
> 
> +/* compute a context descriptor if one is necessary based on the ol_flags
> + *
> + * Returns 0 if no descriptor is necessary.
> + * Returns 1 if one is necessary and the contents of the descriptor are
> returned
> + *   in the values pointed to by qw0 and qw1. td_offset may also be modified.

Same comment as previous patch re td_offset comment

> + */
> +static __rte_always_inline uint16_t
> +get_context_desc(uint64_t ol_flags, const struct rte_mbuf *tx_pkt,
> +		 const union ci_tx_offload *tx_offload,
> +		 const struct ci_tx_queue *txq __rte_unused,
> +		 uint64_t *qw0, uint64_t *qw1)
> +{
> +	uint16_t cd_l2tag2 = 0;
> +	uint64_t cd_type_cmd_tso_mss = I40E_TX_DESC_DTYPE_CONTEXT;

CI_TX_DESC_DTYPE_CTX could now be used

> +	uint32_t cd_tunneling_params = 0;
> +




More information about the dev mailing list