mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 11:30:53 +07:00
net/bonding: Export bond_option_active_slave_get_rcu
Some consumers of the netdev events API would like to know who is the active slave when a NETDEV_CHANGEUPPER or NETDEV_BONDING_FAILOVER events occur. For example, when managing RoCE GIDs, GIDs based on the bond's ips should only be set on the port which corresponds to active slave netdevice. Signed-off-by: Matan Barak <matanb@mellanox.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
816dd19b3d
commit
e999869548
@ -730,19 +730,6 @@ static int bond_option_mode_set(struct bonding *bond,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct net_device *__bond_option_active_slave_get(struct bonding *bond,
|
||||
struct slave *slave)
|
||||
{
|
||||
return bond_uses_primary(bond) && slave ? slave->dev : NULL;
|
||||
}
|
||||
|
||||
struct net_device *bond_option_active_slave_get_rcu(struct bonding *bond)
|
||||
{
|
||||
struct slave *slave = rcu_dereference(bond->curr_active_slave);
|
||||
|
||||
return __bond_option_active_slave_get(bond, slave);
|
||||
}
|
||||
|
||||
static int bond_option_active_slave_set(struct bonding *bond,
|
||||
const struct bond_opt_value *newval)
|
||||
{
|
||||
|
@ -310,6 +310,13 @@ static inline bool bond_uses_primary(struct bonding *bond)
|
||||
return bond_mode_uses_primary(BOND_MODE(bond));
|
||||
}
|
||||
|
||||
static inline struct net_device *bond_option_active_slave_get_rcu(struct bonding *bond)
|
||||
{
|
||||
struct slave *slave = rcu_dereference(bond->curr_active_slave);
|
||||
|
||||
return bond_uses_primary(bond) && slave ? slave->dev : NULL;
|
||||
}
|
||||
|
||||
static inline bool bond_slave_is_up(struct slave *slave)
|
||||
{
|
||||
return netif_running(slave->dev) && netif_carrier_ok(slave->dev);
|
||||
|
Loading…
Reference in New Issue
Block a user