From: <zhangsha.zh...@huawei.com> Date: Wed, 18 Sep 2019 21:06:20 +0800
> From: Sha Zhang <zhangsha.zh...@huawei.com> > > After the commit 334031219a84 ("bonding/802.3ad: fix slave link > initialization transition states") merged, > the slave's link status will be changed to BOND_LINK_FAIL > from BOND_LINK_DOWN in the following scenario: > - Driver reports loss of carrier and > bonding driver receives NETDEV_DOWN notifier > - slave's duplex and speed is zerod and > its port->is_enabled is cleard to 'false'; > - Driver reports link recovery and > bonding driver receives NETDEV_UP notifier; > - If speed/duplex getting failed here, the link status > will be changed to BOND_LINK_FAIL; > - The MII monotor later recover the slave's speed/duplex > and set link status to BOND_LINK_UP, but remains > the 'port->is_enabled' to 'false'. > > In this scenario, the lacp port will not be enabled even its speed > and duplex are valid. The bond will not send LACPDU's, and its > state is 'AD_STATE_DEFAULTED' forever. The simplest fix I think > is to call bond_3ad_handle_link_change() in bond_miimon_commit, > this function can enable lacp after port slave speed check. > As enabled, the lacp port can run its state machine normally > after link recovery. > > Signed-off-by: Sha Zhang <zhangsha.zh...@huawei.com> Please work out with Jay and Aleksei how to properly fix this.