diff options
author | Paul Mundt <lethal@linux-sh.org> | 2011-05-23 04:35:33 +0200 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2011-05-23 04:35:33 +0200 |
commit | 8ace5c4698ec8da53e69095596718d5a936433de (patch) | |
tree | 1f5959b3ac289e3bde420cc14109be0cc518a75a /net/batman-adv/hard-interface.h | |
parent | sh: fixup fpu.o compile order (diff) | |
parent | Merge branch 'viafb-next' of git://github.com/schandinat/linux-2.6 (diff) | |
download | linux-8ace5c4698ec8da53e69095596718d5a936433de.tar.xz linux-8ace5c4698ec8da53e69095596718d5a936433de.zip |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into sh-latest
Diffstat (limited to 'net/batman-adv/hard-interface.h')
-rw-r--r-- | net/batman-adv/hard-interface.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/net/batman-adv/hard-interface.h b/net/batman-adv/hard-interface.h index a9ddf36e51c8..64265991460b 100644 --- a/net/batman-adv/hard-interface.h +++ b/net/batman-adv/hard-interface.h @@ -45,4 +45,22 @@ static inline void hardif_free_ref(struct hard_iface *hard_iface) call_rcu(&hard_iface->rcu, hardif_free_rcu); } +static inline struct hard_iface *primary_if_get_selected( + struct bat_priv *bat_priv) +{ + struct hard_iface *hard_iface; + + rcu_read_lock(); + hard_iface = rcu_dereference(bat_priv->primary_if); + if (!hard_iface) + goto out; + + if (!atomic_inc_not_zero(&hard_iface->refcount)) + hard_iface = NULL; + +out: + rcu_read_unlock(); + return hard_iface; +} + #endif /* _NET_BATMAN_ADV_HARD_INTERFACE_H_ */ |