Patch "ice: fix VLAN replay after reset" has been added to the 6.6-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

    ice: fix VLAN replay after reset

to the 6.6-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:
     ice-fix-vlan-replay-after-reset.patch
and it can be found in the queue-6.6 subdirectory.

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



commit c2bd3912ff9efc4fefb47c4b20fc1937d204e2a3
Author: Dave Ertman <david.m.ertman@xxxxxxxxx>
Date:   Wed Sep 18 14:02:56 2024 -0400

    ice: fix VLAN replay after reset
    
    [ Upstream commit 0eae2c136cb624e4050092feb59f18159b4f2512 ]
    
    There is a bug currently when there are more than one VLAN defined
    and any reset that affects the PF is initiated, after the reset rebuild
    no traffic will pass on any VLAN but the last one created.
    
    This is caused by the iteration though the VLANs during replay each
    clearing the vsi_map bitmap of the VSI that is being replayed.  The
    problem is that during rhe replay, the pointer to the vsi_map bitmap
    is used by each successive vlan to determine if it should be replayed
    on this VSI.
    
    The logic was that the replay of the VLAN would replace the bit in the map
    before the next VLAN would iterate through.  But, since the replay copies
    the old bitmap pointer to filt_replay_rules and creates a new one for the
    recreated VLANS, it does not do this, and leaves the old bitmap broken
    to be used to replay the remaining VLANs.
    
    Since the old bitmap will be cleaned up in post replay cleanup, there is
    no need to alter it and break following VLAN replay, so don't clear the
    bit.
    
    Fixes: 334cb0626de1 ("ice: Implement VSI replay framework")
    Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@xxxxxxxxx>
    Signed-off-by: Dave Ertman <david.m.ertman@xxxxxxxxx>
    Reviewed-by: Jacob Keller <jacob.e.keller@xxxxxxxxx>
    Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@xxxxxxxxx> (A Contingent worker at Intel)
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@xxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/intel/ice/ice_switch.c b/drivers/net/ethernet/intel/ice/ice_switch.c
index 355716e6bcc82..19f730a68fa21 100644
--- a/drivers/net/ethernet/intel/ice/ice_switch.c
+++ b/drivers/net/ethernet/intel/ice/ice_switch.c
@@ -6326,8 +6326,6 @@ ice_replay_vsi_fltr(struct ice_hw *hw, u16 vsi_handle, u8 recp_id,
 		if (!itr->vsi_list_info ||
 		    !test_bit(vsi_handle, itr->vsi_list_info->vsi_map))
 			continue;
-		/* Clearing it so that the logic can add it back */
-		clear_bit(vsi_handle, itr->vsi_list_info->vsi_map);
 		f_entry.fltr_info.vsi_handle = vsi_handle;
 		f_entry.fltr_info.fltr_act = ICE_FWD_TO_VSI;
 		/* update the src in case it is VSI num */




[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