@@ -161,7 +161,9 @@ ipsec_txwqe_build_eseg_csum(struct mlx5e_txqsq *sq, struct sk_buff *skb,
161161}
162162
163163static inline void
164- mlx5e_txwqe_build_eseg_csum (struct mlx5e_txqsq * sq , struct sk_buff * skb , struct mlx5_wqe_eth_seg * eseg )
164+ mlx5e_txwqe_build_eseg_csum (struct mlx5e_txqsq * sq , struct sk_buff * skb ,
165+ struct mlx5e_accel_tx_state * accel ,
166+ struct mlx5_wqe_eth_seg * eseg )
165167{
166168 if (likely (skb -> ip_summed == CHECKSUM_PARTIAL )) {
167169 eseg -> cs_flags = MLX5_ETH_WQE_L3_CSUM ;
@@ -173,6 +175,11 @@ mlx5e_txwqe_build_eseg_csum(struct mlx5e_txqsq *sq, struct sk_buff *skb, struct
173175 eseg -> cs_flags |= MLX5_ETH_WQE_L4_CSUM ;
174176 sq -> stats -> csum_partial ++ ;
175177 }
178+ #ifdef CONFIG_MLX5_EN_TLS
179+ } else if (unlikely (accel && accel -> tls .tls_tisn )) {
180+ eseg -> cs_flags = MLX5_ETH_WQE_L3_CSUM | MLX5_ETH_WQE_L4_CSUM ;
181+ sq -> stats -> csum_partial ++ ;
182+ #endif
176183 } else if (unlikely (eseg -> flow_table_metadata & cpu_to_be32 (MLX5_ETH_WQE_FT_META_IPSEC ))) {
177184 ipsec_txwqe_build_eseg_csum (sq , skb , eseg );
178185
@@ -607,12 +614,13 @@ void mlx5e_tx_mpwqe_ensure_complete(struct mlx5e_txqsq *sq)
607614}
608615
609616static bool mlx5e_txwqe_build_eseg (struct mlx5e_priv * priv , struct mlx5e_txqsq * sq ,
610- struct sk_buff * skb , struct mlx5_wqe_eth_seg * eseg )
617+ struct sk_buff * skb , struct mlx5e_accel_tx_state * accel ,
618+ struct mlx5_wqe_eth_seg * eseg )
611619{
612620 if (unlikely (!mlx5e_accel_tx_eseg (priv , skb , eseg )))
613621 return false;
614622
615- mlx5e_txwqe_build_eseg_csum (sq , skb , eseg );
623+ mlx5e_txwqe_build_eseg_csum (sq , skb , accel , eseg );
616624
617625 return true;
618626}
@@ -639,7 +647,7 @@ netdev_tx_t mlx5e_xmit(struct sk_buff *skb, struct net_device *dev)
639647 if (mlx5e_tx_skb_supports_mpwqe (skb , & attr )) {
640648 struct mlx5_wqe_eth_seg eseg = {};
641649
642- if (unlikely (!mlx5e_txwqe_build_eseg (priv , sq , skb , & eseg )))
650+ if (unlikely (!mlx5e_txwqe_build_eseg (priv , sq , skb , & accel , & eseg )))
643651 return NETDEV_TX_OK ;
644652
645653 mlx5e_sq_xmit_mpwqe (sq , skb , & eseg , netdev_xmit_more ());
@@ -656,7 +664,7 @@ netdev_tx_t mlx5e_xmit(struct sk_buff *skb, struct net_device *dev)
656664 /* May update the WQE, but may not post other WQEs. */
657665 mlx5e_accel_tx_finish (sq , wqe , & accel ,
658666 (struct mlx5_wqe_inline_seg * )(wqe -> data + wqe_attr .ds_cnt_inl ));
659- if (unlikely (!mlx5e_txwqe_build_eseg (priv , sq , skb , & wqe -> eth )))
667+ if (unlikely (!mlx5e_txwqe_build_eseg (priv , sq , skb , & accel , & wqe -> eth )))
660668 return NETDEV_TX_OK ;
661669
662670 mlx5e_sq_xmit_wqe (sq , skb , & attr , & wqe_attr , wqe , pi , netdev_xmit_more ());
@@ -675,7 +683,7 @@ void mlx5e_sq_xmit_simple(struct mlx5e_txqsq *sq, struct sk_buff *skb, bool xmit
675683 mlx5e_sq_calc_wqe_attr (skb , & attr , & wqe_attr );
676684 pi = mlx5e_txqsq_get_next_pi (sq , wqe_attr .num_wqebbs );
677685 wqe = MLX5E_TX_FETCH_WQE (sq , pi );
678- mlx5e_txwqe_build_eseg_csum (sq , skb , & wqe -> eth );
686+ mlx5e_txwqe_build_eseg_csum (sq , skb , NULL , & wqe -> eth );
679687 mlx5e_sq_xmit_wqe (sq , skb , & attr , & wqe_attr , wqe , pi , xmit_more );
680688}
681689
@@ -944,7 +952,7 @@ void mlx5i_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb,
944952
945953 mlx5i_txwqe_build_datagram (av , dqpn , dqkey , datagram );
946954
947- mlx5e_txwqe_build_eseg_csum (sq , skb , eseg );
955+ mlx5e_txwqe_build_eseg_csum (sq , skb , NULL , eseg );
948956
949957 eseg -> mss = attr .mss ;
950958
0 commit comments