Page MenuHomeFreeBSD

D36139.diff
No OneTemporary

D36139.diff

diff --git a/sys/dev/ixgbe/if_ix.c b/sys/dev/ixgbe/if_ix.c
--- a/sys/dev/ixgbe/if_ix.c
+++ b/sys/dev/ixgbe/if_ix.c
@@ -1925,8 +1925,27 @@
* the VFTA and other state, so if there
* have been no vlan's registered do nothing.
*/
- if (sc->num_vlans == 0)
+ if (sc->num_vlans == 0 || (ifp->if_capenable & IFCAP_VLAN_HWTAGGING) == 0) {
+ /* Clear the vlan hw flag */
+ for (i = 0; i < sc->num_rx_queues; i++) {
+ rxr = &sc->rx_queues[i].rxr;
+ /* 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 = false;
+ }
+ ctrl = IXGBE_READ_REG(hw, IXGBE_VLNCTRL);
+ /* Enable the Filter Table if enabled */
+ ctrl |= IXGBE_VLNCTRL_CFIEN;
+ ctrl &= ~IXGBE_VLNCTRL_VFE;
+ if (hw->mac.type == ixgbe_mac_82598EB)
+ ctrl &= ~IXGBE_VLNCTRL_VME;
+ IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, ctrl);
return;
+ }
/* Setup the queues for vlans */
if (ifp->if_capenable & IFCAP_VLAN_HWTAGGING) {

File Metadata

Mime Type
text/plain
Expires
Sun, Jan 12, 1:38 AM (20 h, 38 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15759674
Default Alt Text
D36139.diff (1 KB)

Event Timeline