• Jarod Wilson's avatar
    bonding/802.3ad: fix link_failure_count tracking · ea53abfa
    Jarod Wilson authored
    Commit 4d2c0cda 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: 4d2c0cda ("bonding: speed/duplex update at NETDEV_UP event")
    CC: Mahesh Bandewar <maheshb@google.com>
    CC: David S. Miller <davem@davemloft.net>
    CC: netdev@vger.kernel.org
    CC: stable@vger.kernel.org
    Signed-off-by: default avatarJarod Wilson <jarod@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    ea53abfa
bond_main.c 136 KB