Skip to content

Commit

Permalink
net: dsa: move headers exported by slave.c to slave.h
Browse files Browse the repository at this point in the history
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 <[email protected]>
Reviewed-by: Florian Fainelli <[email protected]>
Signed-off-by: Jakub Kicinski <[email protected]>
  • Loading branch information
vladimiroltean authored and kuba-moo committed Nov 23, 2022
1 parent 94ef6fa commit 09f9234
Show file tree
Hide file tree
Showing 8 changed files with 77 additions and 57 deletions.
1 change: 1 addition & 0 deletions net/dsa/dsa.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
1 change: 1 addition & 0 deletions net/dsa/dsa2.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
59 changes: 2 additions & 57 deletions net/dsa/dsa_priv.h
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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.
*/
Expand Down
1 change: 1 addition & 0 deletions net/dsa/netlink.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 },
Expand Down
1 change: 1 addition & 0 deletions net/dsa/port.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions net/dsa/slave.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand Down
69 changes: 69 additions & 0 deletions net/dsa/slave.h
Original file line number Diff line number Diff line change
@@ -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
1 change: 1 addition & 0 deletions net/dsa/switch.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit 09f9234

Please sign in to comment.