|
@@ -1094,14 +1094,12 @@ static int ixgbe_enable_port_vlan(struct ixgbe_adapter *adapter, int vf,
|
|
|
u16 vlan, u8 qos)
|
|
|
{
|
|
|
struct ixgbe_hw *hw = &adapter->hw;
|
|
|
- int err = 0;
|
|
|
+ int err;
|
|
|
|
|
|
- if (adapter->vfinfo[vf].pf_vlan)
|
|
|
- err = ixgbe_set_vf_vlan(adapter, false,
|
|
|
- adapter->vfinfo[vf].pf_vlan,
|
|
|
- vf);
|
|
|
+ err = ixgbe_set_vf_vlan(adapter, true, vlan, vf);
|
|
|
if (err)
|
|
|
goto out;
|
|
|
+
|
|
|
ixgbe_set_vmvir(adapter, vlan, qos, vf);
|
|
|
ixgbe_set_vmolr(hw, vf, false);
|
|
|
if (adapter->vfinfo[vf].spoofchk_enabled)
|
|
@@ -1140,6 +1138,11 @@ static int ixgbe_disable_port_vlan(struct ixgbe_adapter *adapter, int vf)
|
|
|
hw->mac.ops.set_vlan_anti_spoofing(hw, false, vf);
|
|
|
if (adapter->vfinfo[vf].vlan_count)
|
|
|
adapter->vfinfo[vf].vlan_count--;
|
|
|
+
|
|
|
+ /* disable hide VLAN on X550 */
|
|
|
+ if (hw->mac.type >= ixgbe_mac_X550)
|
|
|
+ ixgbe_write_qde(adapter, vf, IXGBE_QDE_ENABLE);
|
|
|
+
|
|
|
adapter->vfinfo[vf].pf_vlan = 0;
|
|
|
adapter->vfinfo[vf].pf_qos = 0;
|
|
|
|