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;
 
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to