From 1942de1bbac30118a96255af1d14d1449aeb1a38 Mon Sep 17 00:00:00 2001 From: Marek Lindner Date: Fri, 30 Sep 2016 15:21:05 +0200 Subject: batman-adv: retrieve B.A.T.M.A.N. V WiFi neighbor stats from real interface Signed-off-by: Marek Lindner [sven.eckelmann@open-mesh.com: re-add batadv_get_real_netdev to take rtnl semaphore for batadv_get_real_netdevice] Signed-off-by: Sven Eckelmann Signed-off-by: Simon Wunderlich --- net/batman-adv/hard-interface.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'net/batman-adv/hard-interface.c') diff --git a/net/batman-adv/hard-interface.c b/net/batman-adv/hard-interface.c index df31f2fef636..ca743a5e5680 100644 --- a/net/batman-adv/hard-interface.c +++ b/net/batman-adv/hard-interface.c @@ -206,6 +206,9 @@ static bool batadv_is_valid_iface(const struct net_device *net_dev) * interface on top of another 'real' interface * @netdev: the device to check * + * Callers must hold the rtnl semaphore. You may want batadv_get_real_netdev() + * instead of this. + * * Return: the 'real' net device or the original net device and NULL in case * of an error. */ @@ -242,6 +245,25 @@ out: return real_netdev; } +/** + * batadv_get_real_netdev - check if the given net_device struct is a virtual + * interface on top of another 'real' interface + * @net_device: the device to check + * + * Return: the 'real' net device or the original net device and NULL in case + * of an error. + */ +struct net_device *batadv_get_real_netdev(struct net_device *net_device) +{ + struct net_device *real_netdev; + + rtnl_lock(); + real_netdev = batadv_get_real_netdevice(net_device); + rtnl_unlock(); + + return real_netdev; +} + /** * batadv_is_wext_netdev - check if the given net_device struct is a * wext wifi interface -- cgit