summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Oltean <vladimir.oltean@nxp.com>2021-01-07 03:24:01 +0200
committerJakub Kicinski <kuba@kernel.org>2021-01-07 15:42:07 -0800
commita5e3c9ba9258dbe55cba0cc3804675c9f1eaa169 (patch)
treef2ab6844b4e4e92a0ff13140de09bd733dce26c2
parentf46b9b8ee89b52f6ee1f4da49d392e609746ab10 (diff)
net: dsa: export dsa_slave_dev_check
Using the NETDEV_CHANGEUPPER notifications, drivers can be aware when they are enslaved to e.g. a bridge by calling netif_is_bridge_master(). Export this helper from DSA to get the equivalent functionality of determining whether the upper interface of a CHANGEUPPER notifier is a DSA switch interface or not. Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Acked-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
-rw-r--r--include/net/dsa.h6
-rw-r--r--net/dsa/dsa_priv.h1
-rw-r--r--net/dsa/slave.c1
3 files changed, 7 insertions, 1 deletions
diff --git a/include/net/dsa.h b/include/net/dsa.h
index e92a09c77f96..e218eca128d1 100644
--- a/include/net/dsa.h
+++ b/include/net/dsa.h
@@ -860,6 +860,7 @@ int register_dsa_notifier(struct notifier_block *nb);
int unregister_dsa_notifier(struct notifier_block *nb);
int call_dsa_notifiers(unsigned long val, struct net_device *dev,
struct dsa_notifier_info *info);
+bool dsa_slave_dev_check(const struct net_device *dev);
#else
static inline int register_dsa_notifier(struct notifier_block *nb)
{
@@ -876,6 +877,11 @@ static inline int call_dsa_notifiers(unsigned long val, struct net_device *dev,
{
return NOTIFY_DONE;
}
+
+static inline bool dsa_slave_dev_check(const struct net_device *dev)
+{
+ return false;
+}
#endif
netdev_tx_t dsa_enqueue_skb(struct sk_buff *skb, struct net_device *dev);
diff --git a/net/dsa/dsa_priv.h b/net/dsa/dsa_priv.h
index c04225f74929..4f1bbaab72f2 100644
--- a/net/dsa/dsa_priv.h
+++ b/net/dsa/dsa_priv.h
@@ -184,7 +184,6 @@ extern const struct dsa_device_ops notag_netdev_ops;
void dsa_slave_mii_bus_init(struct dsa_switch *ds);
int dsa_slave_create(struct dsa_port *dp);
void dsa_slave_destroy(struct net_device *slave_dev);
-bool dsa_slave_dev_check(const struct net_device *dev);
int dsa_slave_suspend(struct net_device *slave_dev);
int dsa_slave_resume(struct net_device *slave_dev);
int dsa_slave_register_notifier(void);
diff --git a/net/dsa/slave.c b/net/dsa/slave.c
index 456576f75a50..d7f9fbb93589 100644
--- a/net/dsa/slave.c
+++ b/net/dsa/slave.c
@@ -1924,6 +1924,7 @@ bool dsa_slave_dev_check(const struct net_device *dev)
{
return dev->netdev_ops == &dsa_slave_netdev_ops;
}
+EXPORT_SYMBOL_GPL(dsa_slave_dev_check);
static int dsa_slave_changeupper(struct net_device *dev,
struct netdev_notifier_changeupper_info *info)