ice: Preserve VLAN Rx stripping settings
authorTony Nguyen <anthony.l.nguyen@intel.com>
Tue, 16 Apr 2019 17:21:15 +0000 (10:21 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 31 May 2019 13:43:15 +0000 (06:43 -0700)
[ Upstream commit e80e76db6c5bbc7a8f8512f3dc630a2170745b0b ]

When Tx insertion is set, we are not accounting for the state of Rx
stripping.  This causes Rx stripping to be enabled any time Tx
insertion is changed, even when it's supposed to be disabled.

Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/intel/ice/ice_lib.c

index fa61203bee2694d028a0186c82f9ace77dd544ba..b710545cf7d1a42aa74cb585f32b61692ac1fb62 100644 (file)
@@ -1848,6 +1848,10 @@ int ice_vsi_manage_vlan_insertion(struct ice_vsi *vsi)
         */
        ctxt->info.vlan_flags = ICE_AQ_VSI_VLAN_MODE_ALL;
 
+       /* Preserve existing VLAN strip setting */
+       ctxt->info.vlan_flags |= (vsi->info.vlan_flags &
+                                 ICE_AQ_VSI_VLAN_EMOD_M);
+
        ctxt->info.valid_sections = cpu_to_le16(ICE_AQ_VSI_PROP_VLAN_VALID);
 
        status = ice_update_vsi(hw, vsi->idx, ctxt, NULL);