[PATCH net-next 2/5] net/mlx4: factor csum flags into mlx4_en_csum_flags()
From: Joe Damato
Date: Tue Nov 10 2026 - 18:16:20 EST
Extract the code which converts skb csum fields to WQE fields into a
helper. This helper will be used by a follow-up series implementing
software USO, to reduce code duplication.
Signed-off-by: Joe Damato <joe@xxxxxxx>
---
drivers/net/ethernet/mellanox/mlx4/en_tx.c | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_tx.c b/drivers/net/ethernet/mellanox/mlx4/en_tx.c
index 00210dbae1c3..f6059b533eac 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_tx.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_tx.c
@@ -861,6 +861,16 @@ static bool mlx4_en_build_dma_wqe(struct mlx4_en_priv *priv,
return false;
}
+static __be32 mlx4_en_csum_flags(const struct sk_buff *skb)
+{
+ if (unlikely(skb->ip_summed != CHECKSUM_PARTIAL))
+ return 0;
+ if (skb->encapsulation)
+ return cpu_to_be32(MLX4_WQE_CTRL_IP_CSUM);
+
+ return cpu_to_be32(MLX4_WQE_CTRL_IP_CSUM | MLX4_WQE_CTRL_TCP_UDP_CSUM);
+}
+
static bool mlx4_en_prep_vlan(const struct sk_buff *skb,
union mlx4_wqe_qpn_vlan *qpn_vlan)
{
@@ -891,12 +901,12 @@ netdev_tx_t mlx4_en_xmit(struct sk_buff *skb, struct net_device *dev)
struct mlx4_wqe_data_seg *data;
struct mlx4_en_tx_info *tx_info;
u32 __maybe_unused ring_cons;
+ __be32 op_own, csum_flags;
int tx_ind;
int nr_txbb;
int desc_size;
int real_size;
u32 index, bf_index;
- __be32 op_own;
int lso_header_size;
void *fragptr = NULL;
bool bounce = false;
@@ -991,12 +1001,10 @@ netdev_tx_t mlx4_en_xmit(struct sk_buff *skb, struct net_device *dev)
/* Prepare ctrl segment apart opcode+ownership, which depends on
* whether LSO is used */
tx_desc->ctrl.srcrb_flags = priv->ctrl_flags;
- if (likely(skb->ip_summed == CHECKSUM_PARTIAL)) {
- if (!skb->encapsulation)
- tx_desc->ctrl.srcrb_flags |= cpu_to_be32(MLX4_WQE_CTRL_IP_CSUM |
- MLX4_WQE_CTRL_TCP_UDP_CSUM);
- else
- tx_desc->ctrl.srcrb_flags |= cpu_to_be32(MLX4_WQE_CTRL_IP_CSUM);
+
+ csum_flags = mlx4_en_csum_flags(skb);
+ if (csum_flags) {
+ tx_desc->ctrl.srcrb_flags |= csum_flags;
ring->tx_csum++;
}
--
2.53.0-Meta