net: dsa: move headers exported by slave.c to slave.h
authorVladimir Oltean <vladimir.oltean@nxp.com>
Mon, 21 Nov 2022 13:55:46 +0000 (15:55 +0200)
committerJakub Kicinski <kuba@kernel.org>
Wed, 23 Nov 2022 04:41:49 +0000 (20:41 -0800)
Minimize the use of the bloated dsa_priv.h by moving the prototypes
exported by slave.c to their own header file.

This is just approximate to get the code structure right. There are some
interdependencies with static inline code left in dsa_priv.h, so leave
slave.h included from there for now.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/dsa/dsa.c
net/dsa/dsa2.c
net/dsa/dsa_priv.h
net/dsa/netlink.c
net/dsa/port.c
net/dsa/slave.c
net/dsa/slave.h [new file with mode: 0644]
net/dsa/switch.c

index 842a1f2488b2f28ee21d949016c780675d88bb04..422f8853d1c453b5bebe53382a79de17e054a77f 100644 (file)
@@ -14,6 +14,7 @@
 #include <net/dst_metadata.h>
 
 #include "dsa_priv.h"
+#include "slave.h"
 
 static LIST_HEAD(dsa_tag_drivers_list);
 static DEFINE_MUTEX(dsa_tag_drivers_lock);
index 10cd4ea9afe1c0bd1474656edb5943028b810563..f917e695d38c04240413f8d00c39852684ca88ee 100644 (file)
@@ -21,6 +21,7 @@
 #include "dsa_priv.h"
 #include "master.h"
 #include "port.h"
+#include "slave.h"
 
 static DEFINE_MUTEX(dsa2_mutex);
 LIST_HEAD(dsa_tree_list);
index 94e385ec6da5e42456125e0f3a3a802d9a813fe1..fcff35b15dd42e540166239805ace7c3db86aa42 100644 (file)
@@ -7,13 +7,11 @@
 #ifndef __DSA_PRIV_H
 #define __DSA_PRIV_H
 
-#include <linux/if_bridge.h>
-#include <linux/if_vlan.h>
 #include <linux/phy.h>
 #include <linux/netdevice.h>
-#include <linux/netpoll.h>
 #include <net/dsa.h>
-#include <net/gro_cells.h>
+
+#include "slave.h"
 
 #define DSA_MAX_NUM_OFFLOADING_BRIDGES         BITS_PER_LONG
 
@@ -224,24 +222,6 @@ struct dsa_standalone_event_work {
        u16 vid;
 };
 
-struct dsa_slave_priv {
-       /* Copy of CPU port xmit for faster access in slave transmit hot path */
-       struct sk_buff *        (*xmit)(struct sk_buff *skb,
-                                       struct net_device *dev);
-
-       struct gro_cells        gcells;
-
-       /* DSA port data, such as switch, port index, etc. */
-       struct dsa_port         *dp;
-
-#ifdef CONFIG_NET_POLL_CONTROLLER
-       struct netpoll          *netpoll;
-#endif
-
-       /* TC context */
-       struct list_head        mall_tc_list;
-};
-
 /* dsa.c */
 const struct dsa_device_ops *dsa_tag_driver_get_by_id(int tag_protocol);
 const struct dsa_device_ops *dsa_tag_driver_get_by_name(const char *name);
@@ -277,41 +257,6 @@ static inline struct net_device *dsa_master_find_slave(struct net_device *dev,
 /* netlink.c */
 extern struct rtnl_link_ops dsa_link_ops __read_mostly;
 
-/* slave.c */
-extern struct notifier_block dsa_slave_switchdev_notifier;
-extern struct notifier_block dsa_slave_switchdev_blocking_notifier;
-
-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);
-int dsa_slave_suspend(struct net_device *slave_dev);
-int dsa_slave_resume(struct net_device *slave_dev);
-int dsa_slave_register_notifier(void);
-void dsa_slave_unregister_notifier(void);
-void dsa_slave_sync_ha(struct net_device *dev);
-void dsa_slave_unsync_ha(struct net_device *dev);
-void dsa_slave_setup_tagger(struct net_device *slave);
-int dsa_slave_change_mtu(struct net_device *dev, int new_mtu);
-int dsa_slave_change_master(struct net_device *dev, struct net_device *master,
-                           struct netlink_ext_ack *extack);
-int dsa_slave_manage_vlan_filtering(struct net_device *dev,
-                                   bool vlan_filtering);
-
-static inline struct dsa_port *dsa_slave_to_port(const struct net_device *dev)
-{
-       struct dsa_slave_priv *p = netdev_priv(dev);
-
-       return p->dp;
-}
-
-static inline struct net_device *
-dsa_slave_to_master(const struct net_device *dev)
-{
-       struct dsa_port *dp = dsa_slave_to_port(dev);
-
-       return dsa_port_to_master(dp);
-}
-
 /* If under a bridge with vlan_filtering=0, make sure to send pvid-tagged
  * frames as untagged, since the bridge will not untag them.
  */
index ecf9ed1de1857be64d82761e3fe31e0bf4bc8c98..824b09d904cc298ef792204f346299c6fb58d572 100644 (file)
@@ -5,6 +5,7 @@
 #include <net/rtnetlink.h>
 
 #include "dsa_priv.h"
+#include "slave.h"
 
 static const struct nla_policy dsa_policy[IFLA_DSA_MAX + 1] = {
        [IFLA_DSA_MASTER]       = { .type = NLA_U32 },
index 0708fe8d473681ee5f6f5ff365c042369a4c7fee..56728242f07914a9d1da53764335652db4ee188d 100644 (file)
@@ -14,6 +14,7 @@
 
 #include "dsa_priv.h"
 #include "port.h"
+#include "slave.h"
 
 /**
  * dsa_port_notify - Notify the switching fabric of changes to a port
index 523f9ebeb45b3f4e4a9b01ef568ead0ee105da7e..2cf83892072f79802df35a248e8128ebdb99c7a2 100644 (file)
@@ -25,6 +25,7 @@
 #include "dsa_priv.h"
 #include "port.h"
 #include "master.h"
+#include "slave.h"
 
 static void dsa_slave_standalone_event_work(struct work_struct *work)
 {
diff --git a/net/dsa/slave.h b/net/dsa/slave.h
new file mode 100644 (file)
index 0000000..d0abe60
--- /dev/null
@@ -0,0 +1,69 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#ifndef __DSA_SLAVE_H
+#define __DSA_SLAVE_H
+
+#include <linux/if_bridge.h>
+#include <linux/if_vlan.h>
+#include <linux/list.h>
+#include <linux/netpoll.h>
+#include <linux/types.h>
+#include <net/dsa.h>
+#include <net/gro_cells.h>
+
+struct net_device;
+struct netlink_ext_ack;
+
+extern struct notifier_block dsa_slave_switchdev_notifier;
+extern struct notifier_block dsa_slave_switchdev_blocking_notifier;
+
+struct dsa_slave_priv {
+       /* Copy of CPU port xmit for faster access in slave transmit hot path */
+       struct sk_buff *        (*xmit)(struct sk_buff *skb,
+                                       struct net_device *dev);
+
+       struct gro_cells        gcells;
+
+       /* DSA port data, such as switch, port index, etc. */
+       struct dsa_port         *dp;
+
+#ifdef CONFIG_NET_POLL_CONTROLLER
+       struct netpoll          *netpoll;
+#endif
+
+       /* TC context */
+       struct list_head        mall_tc_list;
+};
+
+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);
+int dsa_slave_suspend(struct net_device *slave_dev);
+int dsa_slave_resume(struct net_device *slave_dev);
+int dsa_slave_register_notifier(void);
+void dsa_slave_unregister_notifier(void);
+void dsa_slave_sync_ha(struct net_device *dev);
+void dsa_slave_unsync_ha(struct net_device *dev);
+void dsa_slave_setup_tagger(struct net_device *slave);
+int dsa_slave_change_mtu(struct net_device *dev, int new_mtu);
+int dsa_slave_change_master(struct net_device *dev, struct net_device *master,
+                           struct netlink_ext_ack *extack);
+int dsa_slave_manage_vlan_filtering(struct net_device *dev,
+                                   bool vlan_filtering);
+
+static inline struct dsa_port *dsa_slave_to_port(const struct net_device *dev)
+{
+       struct dsa_slave_priv *p = netdev_priv(dev);
+
+       return p->dp;
+}
+
+static inline struct net_device *
+dsa_slave_to_master(const struct net_device *dev)
+{
+       struct dsa_port *dp = dsa_slave_to_port(dev);
+
+       return dsa_port_to_master(dp);
+}
+
+#endif
index 5ece5c5c2acf4a3351181ac510b39758b685db12..d0d5a1c7e6f69b7d3e0959060ceb364b9407394b 100644 (file)
@@ -14,6 +14,7 @@
 
 #include "dsa_priv.h"
 #include "port.h"
+#include "slave.h"
 
 static unsigned int dsa_switch_fastest_ageing_time(struct dsa_switch *ds,
                                                   unsigned int ageing_time)