svn commit: r325492 - head/sys/dev/ixgbe

Sean Bruno sbruno at FreeBSD.org
Mon Nov 6 18:09:01 UTC 2017


Author: sbruno
Date: Mon Nov  6 18:08:59 2017
New Revision: 325492
URL: https://svnweb.freebsd.org/changeset/base/325492

Log:
  Fix ixgbe(4) support for ifconfig's vlanhwtag flag.  Disabling this flag
  will now prevent the driver from stripping vlan tags from packets.
  
  PR:		219390
  Submitted by:	Piotr Pietruszewski <piotr.pietruszewski at intel.com>
  Reported by:	Charles Goncalves <halfling at halfling.com.br>
  Obtained from:	1 week
  Sponsored by:	Intel Corporation
  Differential Revision:	https://reviews.freebsd.org/D12795

Modified:
  head/sys/dev/ixgbe/if_ix.c

Modified: head/sys/dev/ixgbe/if_ix.c
==============================================================================
--- head/sys/dev/ixgbe/if_ix.c	Mon Nov  6 18:07:23 2017	(r325491)
+++ head/sys/dev/ixgbe/if_ix.c	Mon Nov  6 18:08:59 2017	(r325492)
@@ -1754,15 +1754,17 @@ ixgbe_setup_vlan_hw_support(struct adapter *adapter)
 		return;
 
 	/* Setup the queues for vlans */
-	for (i = 0; i < adapter->num_queues; i++) {
-		rxr = &adapter->rx_rings[i];
-		/* On 82599 the VLAN enable is per/queue in RXDCTL */
-		if (hw->mac.type != ixgbe_mac_82598EB) {
-			ctrl = IXGBE_READ_REG(hw, IXGBE_RXDCTL(rxr->me));
-			ctrl |= IXGBE_RXDCTL_VME;
-			IXGBE_WRITE_REG(hw, IXGBE_RXDCTL(rxr->me), ctrl);
+	if (ifp->if_capenable & IFCAP_VLAN_HWTAGGING) {
+		for (i = 0; i < adapter->num_queues; i++) {
+			rxr = &adapter->rx_rings[i];
+			/* On 82599 the VLAN enable is per/queue in RXDCTL */
+			if (hw->mac.type != ixgbe_mac_82598EB) {
+				ctrl = IXGBE_READ_REG(hw, IXGBE_RXDCTL(rxr->me));
+				ctrl |= IXGBE_RXDCTL_VME;
+				IXGBE_WRITE_REG(hw, IXGBE_RXDCTL(rxr->me), ctrl);
+			}
+			rxr->vtag_strip = TRUE;
 		}
-		rxr->vtag_strip = TRUE;
 	}
 
 	if ((ifp->if_capenable & IFCAP_VLAN_HWFILTER) == 0)


More information about the svn-src-all mailing list