FAILED: patch "[PATCH] bonding/802.3ad: fix link_failure_count tracking" failed to apply to 4.14-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 4.14-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
Quoted 1 line
From
ea53abfab960909d622ca37bcfb8e1c5378d21ccMon Sep 17 00:00:00 2001
From: Jarod Wilson <[email protected]>
Date: Sun, 4 Nov 2018 14:59:46 -0500
Subject: [PATCH] bonding/802.3ad: fix link_failure_count tracking
Commit 4d2c0cda07448ea6980f00102dc3964eb25e241c set slave->link to BOND_LINK_DOWN for 802.3ad bonds whenever invalid speed/duplex values were read, to fix a problem with slaves getting into weird states, but in the process, broke tracking of link failures, as going straight to BOND_LINK_DOWN when a link is indeed down (cable pulled, switch rebooted) means we broke out of bond_miimon_inspect()'s BOND_LINK_DOWN case because !link_state was already true, we never incremented commit, and never got a chance to call bond_miimon_commit(), where slave->link_failure_count would be incremented. I believe the simple fix here is to mark the slave as BOND_LINK_FAIL, and let bond_miimon_inspect() transition the link from _FAIL to either _UP or _DOWN, and in the latter case, we now get proper incrementing of link_failure_count again.
drivers/net/bonding/bond_main.c +2 -2
@@ -3112,13 +3112,13 @@ static int bond_slave_netdev_event(unsigned long event,case NETDEV_CHANGE :/* For 802.3ad mode only: * Getting invalid Speed/Duplex values here will put slave -* in weird state. So mark it as link-down for the time +* in weird state. So mark it as link-fail for the time * being and let link-monitoring (miimon) set it right when * correct speeds/duplex are available. */ if (bond_update_speed_duplex (slave) &&BOND_MODE (bond) ==BOND_MODE_8023AD ) - slave->link =BOND_LINK_DOWN ; + slave->link =BOND_LINK_FAIL ;if (BOND_MODE (bond) ==BOND_MODE_8023AD )bond_3ad_adapter_speed_duplex_changed (slave);