Changeset View
Changeset View
Standalone View
Standalone View
head/sys/dev/ixgbe/if_ix.c
Show First 20 Lines • Show All 1,748 Lines • ▼ Show 20 Lines | ixgbe_setup_vlan_hw_support(struct adapter *adapter) | ||||
* a soft reset, this has already cleared | * a soft reset, this has already cleared | ||||
* the VFTA and other state, so if there | * the VFTA and other state, so if there | ||||
* have been no vlan's registered do nothing. | * have been no vlan's registered do nothing. | ||||
*/ | */ | ||||
if (adapter->num_vlans == 0) | if (adapter->num_vlans == 0) | ||||
return; | return; | ||||
/* Setup the queues for vlans */ | /* Setup the queues for vlans */ | ||||
if (ifp->if_capenable & IFCAP_VLAN_HWTAGGING) { | |||||
for (i = 0; i < adapter->num_queues; i++) { | for (i = 0; i < adapter->num_queues; i++) { | ||||
rxr = &adapter->rx_rings[i]; | rxr = &adapter->rx_rings[i]; | ||||
/* On 82599 the VLAN enable is per/queue in RXDCTL */ | /* On 82599 the VLAN enable is per/queue in RXDCTL */ | ||||
if (hw->mac.type != ixgbe_mac_82598EB) { | if (hw->mac.type != ixgbe_mac_82598EB) { | ||||
ctrl = IXGBE_READ_REG(hw, IXGBE_RXDCTL(rxr->me)); | ctrl = IXGBE_READ_REG(hw, IXGBE_RXDCTL(rxr->me)); | ||||
ctrl |= IXGBE_RXDCTL_VME; | ctrl |= IXGBE_RXDCTL_VME; | ||||
IXGBE_WRITE_REG(hw, IXGBE_RXDCTL(rxr->me), ctrl); | 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) | if ((ifp->if_capenable & IFCAP_VLAN_HWFILTER) == 0) | ||||
return; | return; | ||||
/* | /* | ||||
* A soft reset zero's out the VFTA, so | * A soft reset zero's out the VFTA, so | ||||
* we need to repopulate it now. | * we need to repopulate it now. | ||||
*/ | */ | ||||
▲ Show 20 Lines • Show All 3,497 Lines • Show Last 20 Lines |