ice: Preserve VLAN Rx stripping settings
authorTony Nguyen <anthony.l.nguyen@intel.com>
Tue, 16 Apr 2019 17:21:15 +0000 (10:21 -0700)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Sat, 4 May 2019 20:45:00 +0000 (13:45 -0700)
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>
drivers/net/ethernet/intel/ice/ice_lib.c

index bda6ade755c382c73e3c4e7d6b90f6ebd0c5f599..947730d7461206dd281379c31246f14227fcd9df 100644 (file)
@@ -1932,6 +1932,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);