svn commit: r341552 - head/sys/dev/mlx4/mlx4_en
Slava Shwartsman
slavash at FreeBSD.org
Wed Dec 5 13:39:36 UTC 2018
Author: slavash
Date: Wed Dec 5 13:39:35 2018
New Revision: 341552
URL: https://svnweb.freebsd.org/changeset/base/341552
Log:
mlx4en: Optimise reception of small packets.
Copy small packets like TCP ACKs into a new mbuf
reusing the existing mbuf to receive a new ethernet
frame. This avoids wasting buffer space for
small sized packets.
Submitted by: hselasky@
Approved by: hselasky (mentor)
MFC after: 1 week
Sponsored by: Mellanox Technologies
Modified:
head/sys/dev/mlx4/mlx4_en/mlx4_en_rx.c
Modified: head/sys/dev/mlx4/mlx4_en/mlx4_en_rx.c
==============================================================================
--- head/sys/dev/mlx4/mlx4_en/mlx4_en_rx.c Wed Dec 5 13:39:05 2018 (r341551)
+++ head/sys/dev/mlx4/mlx4_en/mlx4_en_rx.c Wed Dec 5 13:39:35 2018 (r341552)
@@ -629,6 +629,24 @@ mlx4_en_rx_mb(struct mlx4_en_priv *priv, struct mlx4_e
#endif
struct mbuf *mb;
+ /* optimise reception of small packets */
+ if (length <= (MHLEN - MLX4_NET_IP_ALIGN) &&
+ (mb = m_gethdr(M_NOWAIT, MT_DATA)) != NULL) {
+
+ /* set packet length */
+ mb->m_pkthdr.len = mb->m_len = length;
+
+ /* make sure IP header gets aligned */
+ mb->m_data += MLX4_NET_IP_ALIGN;
+
+ bus_dmamap_sync(ring->dma_tag, mb_list->dma_map,
+ BUS_DMASYNC_POSTREAD);
+
+ bcopy(mtod(mb_list->mbuf, caddr_t), mtod(mb, caddr_t), length);
+
+ return (mb);
+ }
+
/* get mbuf */
mb = mb_list->mbuf;
More information about the svn-src-head
mailing list