From: Thomas Falcon <tlfal...@linux.ibm.com> Date: Tue, 16 Jul 2019 17:25:10 -0500
> The following scenario was encountered during testing of logical > partition mobility on pseries partitions with bonded ibmvnic > adapters in LACP mode. > > 1. Driver receives a signal that the device has been > swapped, and it needs to reset to initialize the new > device. > > 2. Driver reports loss of carrier and begins initialization. > > 3. Bonding driver receives NETDEV_CHANGE notifier and checks > the slave's current speed and duplex settings. Because these > are unknown at the time, the bond sets its link state to > BOND_LINK_FAIL and handles the speed update, clearing > AD_PORT_LACP_ENABLE. > > 4. Driver finishes recovery and reports that the carrier is on. > > 5. Bond receives a new notification and checks the speed again. > The speeds are valid but miimon has not altered the link > state yet. AD_PORT_LACP_ENABLE remains off. > > Because the slave's link state is still BOND_LINK_FAIL, > no further port checks are made when it recovers. Though > the slave devices are operational and have valid speed > and duplex settings, the bond will not send LACPDU's. The > simplest fix I can see is to force another speed check > in bond_miimon_commit. This way the bond will update > AD_PORT_LACP_ENABLE if needed when transitioning from > BOND_LINK_FAIL to BOND_LINK_UP. > > CC: Jarod Wilson <ja...@redhat.com> > CC: Jay Vosburgh <j.vosbu...@gmail.com> > CC: Veaceslav Falico <vfal...@gmail.com> > CC: Andy Gospodarek <a...@greyhouse.net> > Signed-off-by: Thomas Falcon <tlfal...@linux.ibm.com> Applied, thanks Thomas.