diff options
author | jhb <jhb@FreeBSD.org> | 2013-07-25 16:34:34 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2013-07-25 16:34:34 +0000 |
commit | f6535606ea17dfb84e0f664b8912bdb63d2b85b9 (patch) | |
tree | e99d60c5ae4262e30a77361208a018a6c4b424f9 /sys/ofed | |
parent | b4c061ba1137ccc9e851843568b78f68143be9ae (diff) | |
download | FreeBSD-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
Diffstat (limited to 'sys/ofed')
-rw-r--r-- | sys/ofed/drivers/net/mlx4/en_tx.c | 8 |
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++; } |