diff options
Diffstat (limited to 'drivers/net/ethernet/intel/ixgbe/ixgbe_main.c')
-rw-r--r-- | drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c index fc8cfad4ac9b..fee0f8c78041 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | |||
@@ -3247,6 +3247,8 @@ static void ixgbe_configure_virtualization(struct ixgbe_adapter *adapter) | |||
3247 | IXGBE_WRITE_REG(hw, IXGBE_VFRE(reg_offset ^ 1), reg_offset - 1); | 3247 | IXGBE_WRITE_REG(hw, IXGBE_VFRE(reg_offset ^ 1), reg_offset - 1); |
3248 | IXGBE_WRITE_REG(hw, IXGBE_VFTE(reg_offset), (~0) << vf_shift); | 3248 | IXGBE_WRITE_REG(hw, IXGBE_VFTE(reg_offset), (~0) << vf_shift); |
3249 | IXGBE_WRITE_REG(hw, IXGBE_VFTE(reg_offset ^ 1), reg_offset - 1); | 3249 | IXGBE_WRITE_REG(hw, IXGBE_VFTE(reg_offset ^ 1), reg_offset - 1); |
3250 | if (adapter->flags2 & IXGBE_FLAG2_BRIDGE_MODE_VEB) | ||
3251 | IXGBE_WRITE_REG(hw, IXGBE_PFDTXGSWC, IXGBE_PFDTXGSWC_VT_LBEN); | ||
3250 | 3252 | ||
3251 | /* Map PF MAC address in RAR Entry 0 to first pool following VFs */ | 3253 | /* Map PF MAC address in RAR Entry 0 to first pool following VFs */ |
3252 | hw->mac.ops.set_vmdq(hw, 0, VMDQ_P(0)); | 3254 | hw->mac.ops.set_vmdq(hw, 0, VMDQ_P(0)); |
@@ -7039,11 +7041,13 @@ static int ixgbe_ndo_bridge_setlink(struct net_device *dev, | |||
7039 | continue; | 7041 | continue; |
7040 | 7042 | ||
7041 | mode = nla_get_u16(attr); | 7043 | mode = nla_get_u16(attr); |
7042 | if (mode == BRIDGE_MODE_VEPA) | 7044 | if (mode == BRIDGE_MODE_VEPA) { |
7043 | reg = 0; | 7045 | reg = 0; |
7044 | else if (mode == BRIDGE_MODE_VEB) | 7046 | adapter->flags2 &= ~IXGBE_FLAG2_BRIDGE_MODE_VEB; |
7047 | } else if (mode == BRIDGE_MODE_VEB) { | ||
7045 | reg = IXGBE_PFDTXGSWC_VT_LBEN; | 7048 | reg = IXGBE_PFDTXGSWC_VT_LBEN; |
7046 | else | 7049 | adapter->flags2 |= IXGBE_FLAG2_BRIDGE_MODE_VEB; |
7050 | } else | ||
7047 | return -EINVAL; | 7051 | return -EINVAL; |
7048 | 7052 | ||
7049 | IXGBE_WRITE_REG(&adapter->hw, IXGBE_PFDTXGSWC, reg); | 7053 | IXGBE_WRITE_REG(&adapter->hw, IXGBE_PFDTXGSWC, reg); |
@@ -7064,7 +7068,7 @@ static int ixgbe_ndo_bridge_getlink(struct sk_buff *skb, u32 pid, u32 seq, | |||
7064 | if (!(adapter->flags & IXGBE_FLAG_SRIOV_ENABLED)) | 7068 | if (!(adapter->flags & IXGBE_FLAG_SRIOV_ENABLED)) |
7065 | return 0; | 7069 | return 0; |
7066 | 7070 | ||
7067 | if (IXGBE_READ_REG(&adapter->hw, IXGBE_PFDTXGSWC) & 1) | 7071 | if (adapter->flags2 & IXGBE_FLAG2_BRIDGE_MODE_VEB) |
7068 | mode = BRIDGE_MODE_VEB; | 7072 | mode = BRIDGE_MODE_VEB; |
7069 | else | 7073 | else |
7070 | mode = BRIDGE_MODE_VEPA; | 7074 | mode = BRIDGE_MODE_VEPA; |