On Tue, Feb 10, 2026 at 02:04:55PM +0100, Burakov, Anatoly wrote:
> On 2/9/2026 5:45 PM, Bruce Richardson wrote:
> > Since i40e and ice have the same checksum offload logic, merge their
> > functions into one. Future rework should enable this to be used by more
> > drivers also.
> > 
> > Signed-off-by: Bruce Richardson <[email protected]> ---
> > drivers/net/intel/common/tx_scalar.h | 58 +++++++++++++++++++++++++++
> > drivers/net/intel/i40e/i40e_rxtx.c   | 52 +-----------------------
> > drivers/net/intel/i40e/i40e_rxtx.h   |  1 +
> > drivers/net/intel/ice/ice_rxtx.c     | 60 +---------------------------
> > drivers/net/intel/ice/ice_rxtx.h     |  1 + 5 files changed, 62
> > insertions(+), 110 deletions(-)
> > 
> > diff --git a/drivers/net/intel/common/tx_scalar.h
> > b/drivers/net/intel/common/tx_scalar.h index 573f5136a9..cf0dcb4b2c
> > 100644 --- a/drivers/net/intel/common/tx_scalar.h +++
> > b/drivers/net/intel/common/tx_scalar.h @@ -59,6 +59,64 @@
> > ci_tx_xmit_cleanup(struct ci_tx_queue *txq) return 0; } +/* Common
> > checksum enable function for Intel drivers (ice, i40e, etc.) */ +static
> > inline void +ci_txd_enable_checksum(uint64_t ol_flags, +
> > uint32_t *td_cmd, +                uint32_t *td_offset, +
> > union ci_tx_offload tx_offload) +{ +        /* Enable L3 checksum
> > offloads */ +       if (ol_flags & RTE_MBUF_F_TX_IP_CKSUM) { +
> > *td_cmd |= CI_TX_DESC_CMD_IIPT_IPV4_CSUM; +         *td_offset |=
> > (tx_offload.l3_len >> 2) << +
> > CI_TX_DESC_LEN_IPLEN_S; +   } else if (ol_flags & RTE_MBUF_F_TX_IPV4) {
> > +           *td_cmd |= CI_TX_DESC_CMD_IIPT_IPV4; +          *td_offset
> > |= (tx_offload.l3_len >> 2) << +
> > CI_TX_DESC_LEN_IPLEN_S; +   } else if (ol_flags & RTE_MBUF_F_TX_IPV6) {
> > +           *td_cmd |= CI_TX_DESC_CMD_IIPT_IPV6; +          *td_offset
> > |= (tx_offload.l3_len >> 2) << +
> > CI_TX_DESC_LEN_IPLEN_S; +   } + +   if (ol_flags &
> > RTE_MBUF_F_TX_TCP_SEG) { +          *td_cmd |=
> > CI_TX_DESC_CMD_L4T_EOFT_TCP; +              *td_offset |=
> > (tx_offload.l4_len >> 2) << +
> > CI_TX_DESC_LEN_L4_LEN_S; +          return; +       } + +   if
> > (ol_flags & RTE_MBUF_F_TX_UDP_SEG) { +              *td_cmd |=
> > CI_TX_DESC_CMD_L4T_EOFT_UDP; +              *td_offset |=
> > (tx_offload.l4_len >> 2) << +
> > CI_TX_DESC_LEN_L4_LEN_S; +          return; +       } + +   /* Enable
> > L4 checksum offloads */ +   switch (ol_flags & RTE_MBUF_F_TX_L4_MASK) {
> > +   case RTE_MBUF_F_TX_TCP_CKSUM: +         *td_cmd |=
> > CI_TX_DESC_CMD_L4T_EOFT_TCP; +              *td_offset |=
> > (sizeof(struct rte_tcp_hdr) >> 2) << +
> > CI_TX_DESC_LEN_L4_LEN_S; +          break; +        case
> > RTE_MBUF_F_TX_SCTP_CKSUM: +         *td_cmd |=
> > CI_TX_DESC_CMD_L4T_EOFT_SCTP; +             *td_offset |=
> > (sizeof(struct rte_sctp_hdr) >> 2) << +
> > CI_TX_DESC_LEN_L4_LEN_S; +          break; +        case
> > RTE_MBUF_F_TX_UDP_CKSUM: +          *td_cmd |=
> > CI_TX_DESC_CMD_L4T_EOFT_UDP; +              *td_offset |=
> > (sizeof(struct rte_udp_hdr) >> 2) << +
> > CI_TX_DESC_LEN_L4_LEN_S; +          break; +        default: +
> > break; +    }
> 
> Nitpick: some of the indentation here is inconststent. Perhaps enabling
> whitespace view in your editor would help, if you haven't done so?
> 
> (the inconsistency was already present in the ice function but that
> doesn't mean we have to copy it!)
> 
Yep, I suspect the indentation was meant to align with opening braces but
that of course gets messed up when renaming things in refactoring (or in
this case adding in an extra "*" dereference char). Will clean this up in
v5.

/Bruce

Reply via email to