Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 12 Dec 2018 11:57:25 +0000 (UTC)
From:      Hans Petter Selasky <hselasky@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject:   svn commit: r341917 - stable/12/sys/dev/mlx4/mlx4_en
Message-ID:  <201812121157.wBCBvPBS063974@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: hselasky
Date: Wed Dec 12 11:57:25 2018
New Revision: 341917
URL: https://svnweb.freebsd.org/changeset/base/341917

Log:
  MFC r341552:
  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.
  
  Sponsored by:   Mellanox Technologies

Modified:
  stable/12/sys/dev/mlx4/mlx4_en/mlx4_en_rx.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/dev/mlx4/mlx4_en/mlx4_en_rx.c
==============================================================================
--- stable/12/sys/dev/mlx4/mlx4_en/mlx4_en_rx.c	Wed Dec 12 11:55:43 2018	(r341916)
+++ stable/12/sys/dev/mlx4/mlx4_en/mlx4_en_rx.c	Wed Dec 12 11:57:25 2018	(r341917)
@@ -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;
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201812121157.wBCBvPBS063974>