]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - drivers/net/ixgbe/ixgbe_main.c
ixgbe: always enable vlan strip/insert when DCB is enabled
[net-next-2.6.git] / drivers / net / ixgbe / ixgbe_main.c
index a9e091cb54991b95c43c2632d527b763869540ff..f0f7329ea35756437c0b52c8800d487ab0ff9192 100644 (file)
@@ -2845,7 +2845,11 @@ static void ixgbe_vlan_filter_disable(struct ixgbe_adapter *adapter)
 
        switch (hw->mac.type) {
        case ixgbe_mac_82598EB:
-               vlnctrl &= ~(IXGBE_VLNCTRL_VME | IXGBE_VLNCTRL_VFE);
+               vlnctrl &= ~IXGBE_VLNCTRL_VFE;
+#ifdef CONFIG_IXGBE_DCB
+               if (!(adapter->flags & IXGBE_FLAG_DCB_ENABLED))
+                       vlnctrl &= ~IXGBE_VLNCTRL_VME;
+#endif
                vlnctrl &= ~IXGBE_VLNCTRL_CFIEN;
                IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, vlnctrl);
                break;
@@ -2853,6 +2857,10 @@ static void ixgbe_vlan_filter_disable(struct ixgbe_adapter *adapter)
                vlnctrl &= ~IXGBE_VLNCTRL_VFE;
                vlnctrl &= ~IXGBE_VLNCTRL_CFIEN;
                IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, vlnctrl);
+#ifdef CONFIG_IXGBE_DCB
+               if (adapter->flags & IXGBE_FLAG_DCB_ENABLED)
+                       break;
+#endif
                for (i = 0; i < adapter->num_rx_queues; i++) {
                        j = adapter->rx_ring[i]->reg_idx;
                        vlnctrl = IXGBE_READ_REG(hw, IXGBE_RXDCTL(j));