Patch "ibmvnic: Allow extra failures before disabling" has been added to the 5.15-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

    ibmvnic: Allow extra failures before disabling

to the 5.15-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:
     ibmvnic-allow-extra-failures-before-disabling.patch
and it can be found in the queue-5.15 subdirectory.

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



commit 789793e8a86796b357702a310fa5a368233ca34d
Author: Sukadev Bhattiprolu <sukadev@xxxxxxxxxxxxx>
Date:   Fri Jan 21 18:59:18 2022 -0800

    ibmvnic: Allow extra failures before disabling
    
    [ Upstream commit db9f0e8bf79e6da7068b5818fea0ffd9d0d4b4da ]
    
    If auto-priority-failover (APF) is enabled and there are at least two
    backing devices of different priorities, some resets like fail-over,
    change-param etc can cause at least two back to back failovers. (Failover
    from high priority backing device to lower priority one and then back
    to the higher priority one if that is still functional).
    
    Depending on the timimg of the two failovers it is possible to trigger
    a "hard" reset and for the hard reset to fail due to failovers. When this
    occurs, the driver assumes that the network is unstable and disables the
    VNIC for a 60-second "settling time". This in turn can cause the ethtool
    command to fail with "No such device" while the vnic automatically recovers
    a little while later.
    
    Given that it's possible to have two back to back failures, allow for extra
    failures before disabling the vnic for the settling time.
    
    Fixes: f15fde9d47b8 ("ibmvnic: delay next reset if hard reset fails")
    Signed-off-by: Sukadev Bhattiprolu <sukadev@xxxxxxxxxxxxx>
    Reviewed-by: Dany Madden <drt@xxxxxxxxxxxxx>
    Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c
index 352ffe982d849..191b3b7350182 100644
--- a/drivers/net/ethernet/ibm/ibmvnic.c
+++ b/drivers/net/ethernet/ibm/ibmvnic.c
@@ -2424,6 +2424,7 @@ static void __ibmvnic_reset(struct work_struct *work)
 	struct ibmvnic_rwi *rwi;
 	unsigned long flags;
 	u32 reset_state;
+	int num_fails = 0;
 	int rc = 0;
 
 	adapter = container_of(work, struct ibmvnic_adapter, ibmvnic_reset);
@@ -2477,11 +2478,23 @@ static void __ibmvnic_reset(struct work_struct *work)
 				rc = do_hard_reset(adapter, rwi, reset_state);
 				rtnl_unlock();
 			}
-			if (rc) {
-				/* give backing device time to settle down */
+			if (rc)
+				num_fails++;
+			else
+				num_fails = 0;
+
+			/* If auto-priority-failover is enabled we can get
+			 * back to back failovers during resets, resulting
+			 * in at least two failed resets (from high-priority
+			 * backing device to low-priority one and then back)
+			 * If resets continue to fail beyond that, give the
+			 * adapter some time to settle down before retrying.
+			 */
+			if (num_fails >= 3) {
 				netdev_dbg(adapter->netdev,
-					   "[S:%s] Hard reset failed, waiting 60 secs\n",
-					   adapter_state_to_string(adapter->state));
+					   "[S:%s] Hard reset failed %d times, waiting 60 secs\n",
+					   adapter_state_to_string(adapter->state),
+					   num_fails);
 				set_current_state(TASK_UNINTERRUPTIBLE);
 				schedule_timeout(60 * HZ);
 			}



[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