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

Loftus, Ciara
2026-02-06T10:54:52Z

> 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@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;
> +