Commit e9998695 authored by Matan Barak's avatar Matan Barak Committed by Doug Ledford

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: default avatarMatan Barak <matanb@mellanox.com>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent 816dd19b
...@@ -730,19 +730,6 @@ static int bond_option_mode_set(struct bonding *bond, ...@@ -730,19 +730,6 @@ static int bond_option_mode_set(struct bonding *bond,
return 0; 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, static int bond_option_active_slave_set(struct bonding *bond,
const struct bond_opt_value *newval) const struct bond_opt_value *newval)
{ {
......
...@@ -310,6 +310,13 @@ static inline bool bond_uses_primary(struct bonding *bond) ...@@ -310,6 +310,13 @@ static inline bool bond_uses_primary(struct bonding *bond)
return bond_mode_uses_primary(BOND_MODE(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) static inline bool bond_slave_is_up(struct slave *slave)
{ {
return netif_running(slave->dev) && netif_carrier_ok(slave->dev); return netif_running(slave->dev) && netif_carrier_ok(slave->dev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment