summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2013-07-25 16:34:34 +0000
committerjhb <jhb@FreeBSD.org>2013-07-25 16:34:34 +0000
commitf6535606ea17dfb84e0f664b8912bdb63d2b85b9 (patch)
treee99d60c5ae4262e30a77361208a018a6c4b424f9
parentb4c061ba1137ccc9e851843568b78f68143be9ae (diff)
downloadFreeBSD-src-f6535606ea17dfb84e0f664b8912bdb63d2b85b9.zip
FreeBSD-src-f6535606ea17dfb84e0f664b8912bdb63d2b85b9.tar.gz
Avoid trashing IP fragments:
- Only enable UDP/TCP hardware checksums if CSUM_UDP or CSUM_TCP is set. - Only enable IP hardware checksums if CSUM_IP is set. PR: kern/180430 Submitted by: Meny Yossefi <menyy@mellanox.com> MFC after: 1 week
-rw-r--r--sys/ofed/drivers/net/mlx4/en_tx.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/ofed/drivers/net/mlx4/en_tx.c b/sys/ofed/drivers/net/mlx4/en_tx.c
index d285220..9ad3c59 100644
--- a/sys/ofed/drivers/net/mlx4/en_tx.c
+++ b/sys/ofed/drivers/net/mlx4/en_tx.c
@@ -780,8 +780,12 @@ retry:
tx_desc->ctrl.srcrb_flags = cpu_to_be32(MLX4_WQE_CTRL_CQ_UPDATE |
MLX4_WQE_CTRL_SOLICITED);
if (mb->m_pkthdr.csum_flags & (CSUM_IP|CSUM_TCP|CSUM_UDP)) {
- tx_desc->ctrl.srcrb_flags |= cpu_to_be32(MLX4_WQE_CTRL_IP_CSUM |
- MLX4_WQE_CTRL_TCP_UDP_CSUM);
+ if (mb->m_pkthdr.csum_flags & CSUM_IP)
+ tx_desc->ctrl.srcrb_flags |=
+ cpu_to_be32(MLX4_WQE_CTRL_IP_CSUM);
+ if (mb->m_pkthdr.csum_flags & (CSUM_TCP|CSUM_UDP))
+ tx_desc->ctrl.srcrb_flags |=
+ cpu_to_be32(MLX4_WQE_CTRL_TCP_UDP_CSUM);
priv->port_stats.tx_chksum_offload++;
}
OpenPOWER on IntegriCloud