svn commit: r285764 - stable/10/sys/dev/ixgbe

Hiren Panchasara hiren at FreeBSD.org
Tue Jul 21 19:41:40 UTC 2015


Author: hiren
Date: Tue Jul 21 19:41:39 2015
New Revision: 285764
URL: https://svnweb.freebsd.org/changeset/base/285764

Log:
  Partial MFC of r285528 as full RSS support is not available in FreeBSD 10.
  Expose full 32bit RSS hash from card regardless of whether RSS is defined or
  not. When doing multiqueue, we are all setup to have full 32bit RSS hash from
  the card. We do not need to hide that under "ifdef RSS" and should expose that
  by default so others like lagg(4) can use that and avoid hashing the traffic by
  themselves.
  
  Approved by:	    re (gjb)
  Sponsored by:	    Limelight Networks

Modified:
  stable/10/sys/dev/ixgbe/ix_txrx.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/dev/ixgbe/ix_txrx.c
==============================================================================
--- stable/10/sys/dev/ixgbe/ix_txrx.c	Tue Jul 21 18:54:38 2015	(r285763)
+++ stable/10/sys/dev/ixgbe/ix_txrx.c	Tue Jul 21 19:41:39 2015	(r285764)
@@ -1892,9 +1892,27 @@ ixgbe_rxeof(struct ix_queue *que)
 			}
 			if ((ifp->if_capenable & IFCAP_RXCSUM) != 0)
 				ixgbe_rx_checksum(staterr, sendmp, ptype);
+
+			/*
+			 * In case of multiqueue, we have RXCSUM.PCSD bit set
+			 * and never cleared. This means we have RSS hash
+			 * available to be used.
+			 */
+			if (adapter->num_queues > 1) {
+				sendmp->m_pkthdr.flowid =
+					le32toh(cur->wb.lower.hi_dword.rss);
+				/*
+				 * Full RSS support is not avilable in
+				 * FreeBSD 10 so setting the hash type to
+				 * OPAQUE.
+				 */
+				M_HASHTYPE_SET(sendmp, M_HASHTYPE_OPAQUE);
+			} else {
 #if __FreeBSD_version >= 800000
-			sendmp->m_pkthdr.flowid = que->msix;
+				sendmp->m_pkthdr.flowid = que->msix;
+				M_HASHTYPE_SET(sendmp, M_HASHTYPE_OPAQUE);
 #endif /* FreeBSD_version */
+			}
 		}
 next_desc:
 		bus_dmamap_sync(rxr->rxdma.dma_tag, rxr->rxdma.dma_map,


More information about the svn-src-stable mailing list