Patch "iavf: send VLAN offloading caps once after VFR" has been added to the 6.1-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    iavf: send VLAN offloading caps once after VFR

to the 6.1-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     iavf-send-vlan-offloading-caps-once-after-vfr.patch
and it can be found in the queue-6.1 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit c45878593282d7f12a92cae3b219aeb3889e32f7
Author: Ahmed Zaki <ahmed.zaki@xxxxxxxxx>
Date:   Mon Apr 17 12:09:39 2023 -0600

    iavf: send VLAN offloading caps once after VFR
    
    [ Upstream commit 7dcbdf29282fbcdb646dc785e8a57ed2c2fec8ba ]
    
    When the user disables rxvlan offloading and then changes the number of
    channels, all VLAN ports are unable to receive traffic.
    
    Changing the number of channels triggers a VFR reset. During re-init, when
    VIRTCHNL_OP_GET_OFFLOAD_VLAN_V2_CAPS is received, we do:
    1 - set the IAVF_FLAG_SETUP_NETDEV_FEATURES flag
    2 - call
        iavf_set_vlan_offload_features(adapter, 0, netdev->features);
    
    The second step sends to the PF the __default__ features, in this case
    aq_required |= IAVF_FLAG_AQ_ENABLE_CTAG_VLAN_STRIPPING
    
    While the first step forces the watchdog task to call
    netdev_update_features() ->  iavf_set_features() ->
    iavf_set_vlan_offload_features(adapter, netdev->features, features).
    Since the user disabled the "rxvlan", this sets:
    aq_required |= IAVF_FLAG_AQ_DISABLE_CTAG_VLAN_STRIPPING
    
    When we start processing the AQ commands, both flags are enabled. Since we
    process DISABLE_XTAG first then ENABLE_XTAG, this results in the PF
    enabling the rxvlan offload. This breaks all communications on the VLAN
    net devices.
    
    Fix by removing the call to iavf_set_vlan_offload_features() (second
    step). Calling netdev_update_features() from watchdog task is enough for
    both init and reset paths.
    
    Fixes: 7598f4b40bd6 ("iavf: Move netdev_update_features() into watchdog task")
    Signed-off-by: Ahmed Zaki <ahmed.zaki@xxxxxxxxx>
    Tested-by: Rafal Romanowski <rafal.romanowski@xxxxxxxxx>
    Reviewed-by: Leon Romanovsky <leonro@xxxxxxxxxx>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@xxxxxxxxx>
    Stable-dep-of: c2ed2403f12c ("iavf: Wait for reset in callbacks which trigger it")
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/intel/iavf/iavf_virtchnl.c b/drivers/net/ethernet/intel/iavf/iavf_virtchnl.c
index 07d37402a0df5..7b34111fd4eb1 100644
--- a/drivers/net/ethernet/intel/iavf/iavf_virtchnl.c
+++ b/drivers/net/ethernet/intel/iavf/iavf_virtchnl.c
@@ -2238,11 +2238,6 @@ void iavf_virtchnl_completion(struct iavf_adapter *adapter,
 		iavf_process_config(adapter);
 		adapter->flags |= IAVF_FLAG_SETUP_NETDEV_FEATURES;
 
-		/* Request VLAN offload settings */
-		if (VLAN_V2_ALLOWED(adapter))
-			iavf_set_vlan_offload_features(adapter, 0,
-						       netdev->features);
-
 		iavf_set_queue_vlan_tag_loc(adapter);
 
 		was_mac_changed = !ether_addr_equal(netdev->dev_addr,



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux