IXGBE_WRITE_REG(hw, IXGBE_VFRE(reg_offset ^ 1), reg_offset - 1);
        IXGBE_WRITE_REG(hw, IXGBE_VFTE(reg_offset), (~0) << vf_shift);
        IXGBE_WRITE_REG(hw, IXGBE_VFTE(reg_offset ^ 1), reg_offset - 1);
-       if (adapter->flags2 & IXGBE_FLAG2_BRIDGE_MODE_VEB)
+       if (adapter->bridge_mode == BRIDGE_MODE_VEB)
                IXGBE_WRITE_REG(hw, IXGBE_PFDTXGSWC, IXGBE_PFDTXGSWC_VT_LBEN);
 
        /* Map PF MAC address in RAR Entry 0 to first pool following VFs */
 
        nla_for_each_nested(attr, br_spec, rem) {
                __u16 mode;
-               u32 reg = 0;
 
                if (nla_type(attr) != IFLA_BRIDGE_MODE)
                        continue;
                        return -EINVAL;
 
                mode = nla_get_u16(attr);
-               if (mode == BRIDGE_MODE_VEPA) {
-                       reg = 0;
-                       adapter->flags2 &= ~IXGBE_FLAG2_BRIDGE_MODE_VEB;
-               } else if (mode == BRIDGE_MODE_VEB) {
-                       reg = IXGBE_PFDTXGSWC_VT_LBEN;
-                       adapter->flags2 |= IXGBE_FLAG2_BRIDGE_MODE_VEB;
-               } else
+               switch (mode) {
+               case BRIDGE_MODE_VEPA:
+                       IXGBE_WRITE_REG(&adapter->hw, IXGBE_PFDTXGSWC, 0);
+                       break;
+               case BRIDGE_MODE_VEB:
+                       IXGBE_WRITE_REG(&adapter->hw, IXGBE_PFDTXGSWC,
+                                       IXGBE_PFDTXGSWC_VT_LBEN);
+                       break;
+               default:
                        return -EINVAL;
+               }
 
-               IXGBE_WRITE_REG(&adapter->hw, IXGBE_PFDTXGSWC, reg);
+               adapter->bridge_mode = mode;
 
                e_info(drv, "enabling bridge mode: %s\n",
                        mode == BRIDGE_MODE_VEPA ? "VEPA" : "VEB");
+
+               break;
        }
 
        return 0;
                                    u32 filter_mask)
 {
        struct ixgbe_adapter *adapter = netdev_priv(dev);
-       u16 mode;
 
        if (!(adapter->flags & IXGBE_FLAG_SRIOV_ENABLED))
                return 0;
 
-       if (adapter->flags2 & IXGBE_FLAG2_BRIDGE_MODE_VEB)
-               mode = BRIDGE_MODE_VEB;
-       else
-               mode = BRIDGE_MODE_VEPA;
-
-       return ndo_dflt_bridge_getlink(skb, pid, seq, dev, mode, 0, 0);
+       return ndo_dflt_bridge_getlink(skb, pid, seq, dev,
+                                      adapter->bridge_mode, 0, 0);
 }
 
 static void *ixgbe_fwd_add(struct net_device *pdev, struct net_device *vdev)
 
 #include <linux/ip.h>
 #include <linux/tcp.h>
 #include <linux/ipv6.h>
+#include <linux/if_bridge.h>
 #ifdef NETIF_F_HW_VLAN_CTAG_TX
 #include <linux/if_vlan.h>
 #endif
 
        /* Initialize default switching mode VEB */
        IXGBE_WRITE_REG(hw, IXGBE_PFDTXGSWC, IXGBE_PFDTXGSWC_VT_LBEN);
-       adapter->flags2 |= IXGBE_FLAG2_BRIDGE_MODE_VEB;
+       adapter->bridge_mode = BRIDGE_MODE_VEB;
 
        /* If call to enable VFs succeeded then allocate memory
         * for per VF control structures.