• Jarod Wilson's avatar
    bonding: fix accounting of active ports in 3ad · 751da2a6
    Jarod Wilson authored
    As of 7bb11dc9 and 0622cab0, bond slaves in a 3ad bond are not
    removed from the aggregator when they are down, and the active slave count
    is NOT equal to number of ports in the aggregator, but rather the number
    of ports in the aggregator that are still enabled. The sysfs spew for
    bonding_show_ad_num_ports() has a comment that says "Show number of active
    802.3ad ports.", but it's currently showing total number of ports, both
    active and inactive. Remedy it by using the same logic introduced in
    0622cab0 in __bond_3ad_get_active_agg_info(), so sysfs, procfs and
    netlink all report the number of active ports. Note that this means that
    IFLA_BOND_AD_INFO_NUM_PORTS really means NUM_ACTIVE_PORTS instead of
    NUM_PORTS, and thus perhaps should be renamed for clarity.
    
    Lightly tested on a dual i40e lacp bond, simulating link downs with an ip
    link set dev <slave2> down, was able to produce the state where I could
    see both in the same aggregator, but a number of ports count of 1.
    
    MII Status: up
    Active Aggregator Info:
            Aggregator ID: 1
            Number of ports: 2 <---
    Slave Interface: ens10
    MII Status: up <---
    Aggregator ID: 1
    Slave Interface: ens11
    MII Status: up
    Aggregator ID: 1
    
    MII Status: up
    Active Aggregator Info:
            Aggregator ID: 1
            Number of ports: 1 <---
    Slave Interface: ens10
    MII Status: down <---
    Aggregator ID: 1
    Slave Interface: ens11
    MII Status: up
    Aggregator ID: 1
    
    CC: Jay Vosburgh <j.vosburgh@gmail.com>
    CC: Veaceslav Falico <vfalico@gmail.com>
    CC: Andy Gospodarek <andy@greyhouse.net>
    CC: netdev@vger.kernel.org
    Signed-off-by: default avatarJarod Wilson <jarod@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    751da2a6
bond_3ad.c 80.6 KB