> 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 <[email protected]> > --- > 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; > +

