Skip to content

Commit ea53abf

Browse files
jarodwilsondavem330
authored andcommitted
bonding/802.3ad: fix link_failure_count tracking
Commit 4d2c0cd 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. Fixes: 4d2c0cd ("bonding: speed/duplex update at NETDEV_UP event") CC: Mahesh Bandewar <[email protected]> CC: David S. Miller <[email protected]> CC: [email protected] CC: [email protected] Signed-off-by: Jarod Wilson <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 0432e83 commit ea53abf

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

drivers/net/bonding/bond_main.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3112,13 +3112,13 @@ static int bond_slave_netdev_event(unsigned long event,
31123112
case NETDEV_CHANGE:
31133113
/* For 802.3ad mode only:
31143114
* Getting invalid Speed/Duplex values here will put slave
3115-
* in weird state. So mark it as link-down for the time
3115+
* in weird state. So mark it as link-fail for the time
31163116
* being and let link-monitoring (miimon) set it right when
31173117
* correct speeds/duplex are available.
31183118
*/
31193119
if (bond_update_speed_duplex(slave) &&
31203120
BOND_MODE(bond) == BOND_MODE_8023AD)
3121-
slave->link = BOND_LINK_DOWN;
3121+
slave->link = BOND_LINK_FAIL;
31223122

31233123
if (BOND_MODE(bond) == BOND_MODE_8023AD)
31243124
bond_3ad_adapter_speed_duplex_changed(slave);

0 commit comments

Comments
 (0)