mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-25 05:04:09 +08:00
net: dsa: move tag_8021q headers to their proper place
tag_8021q definitions are all over the place. Some are exported to
linux/dsa/8021q.h (visible by DSA core, taggers, switch drivers and
everyone else), and some are in dsa_priv.h.
Move the structures that don't need external visibility into tag_8021q.c,
and the ones which don't need the world or switch drivers to see them
into tag_8021q.h.
We also have the tag_8021q.h inclusion from switch.c, which is basically
the entire reason why tag_8021q.c was built into DSA in commit
8b6e638b4b
("net: dsa: build tag_8021q.c as part of DSA core").
I still don't know how to better deal with that, so leave it alone.
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>
This commit is contained in:
parent
8e396fec21
commit
19d05ea712
@ -5,28 +5,8 @@
|
||||
#ifndef _NET_DSA_8021Q_H
|
||||
#define _NET_DSA_8021Q_H
|
||||
|
||||
#include <linux/refcount.h>
|
||||
#include <linux/types.h>
|
||||
#include <net/dsa.h>
|
||||
|
||||
struct dsa_switch;
|
||||
struct dsa_port;
|
||||
struct sk_buff;
|
||||
struct net_device;
|
||||
|
||||
struct dsa_tag_8021q_vlan {
|
||||
struct list_head list;
|
||||
int port;
|
||||
u16 vid;
|
||||
refcount_t refcount;
|
||||
};
|
||||
|
||||
struct dsa_8021q_context {
|
||||
struct dsa_switch *ds;
|
||||
struct list_head vlans;
|
||||
/* EtherType of RX VID, used for filtering on master interface */
|
||||
__be16 proto;
|
||||
};
|
||||
#include <linux/types.h>
|
||||
|
||||
int dsa_tag_8021q_register(struct dsa_switch *ds, __be16 proto);
|
||||
|
||||
@ -38,15 +18,6 @@ int dsa_tag_8021q_bridge_join(struct dsa_switch *ds, int port,
|
||||
void dsa_tag_8021q_bridge_leave(struct dsa_switch *ds, int port,
|
||||
struct dsa_bridge bridge);
|
||||
|
||||
struct sk_buff *dsa_8021q_xmit(struct sk_buff *skb, struct net_device *netdev,
|
||||
u16 tpid, u16 tci);
|
||||
|
||||
void dsa_8021q_rcv(struct sk_buff *skb, int *source_port, int *switch_id,
|
||||
int *vbid);
|
||||
|
||||
struct net_device *dsa_tag_8021q_find_port_by_vbid(struct net_device *master,
|
||||
int vbid);
|
||||
|
||||
u16 dsa_tag_8021q_bridge_vid(unsigned int bridge_num);
|
||||
|
||||
u16 dsa_tag_8021q_standalone_vid(const struct dsa_port *dp);
|
||||
|
@ -22,6 +22,7 @@
|
||||
#include <net/devlink.h>
|
||||
#include <net/switchdev.h>
|
||||
|
||||
struct dsa_8021q_context;
|
||||
struct tc_action;
|
||||
struct phy_device;
|
||||
struct fixed_phy_status;
|
||||
|
@ -13,15 +13,7 @@
|
||||
|
||||
#define DSA_MAX_NUM_OFFLOADING_BRIDGES BITS_PER_LONG
|
||||
|
||||
struct dsa_notifier_tag_8021q_vlan_info;
|
||||
|
||||
/* netlink.c */
|
||||
extern struct rtnl_link_ops dsa_link_ops __read_mostly;
|
||||
|
||||
/* tag_8021q.c */
|
||||
int dsa_switch_tag_8021q_vlan_add(struct dsa_switch *ds,
|
||||
struct dsa_notifier_tag_8021q_vlan_info *info);
|
||||
int dsa_switch_tag_8021q_vlan_del(struct dsa_switch *ds,
|
||||
struct dsa_notifier_tag_8021q_vlan_info *info);
|
||||
|
||||
#endif
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include "port.h"
|
||||
#include "slave.h"
|
||||
#include "switch.h"
|
||||
#include "tag_8021q.h"
|
||||
|
||||
/**
|
||||
* dsa_port_notify - Notify the switching fabric of changes to a port
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include "port.h"
|
||||
#include "slave.h"
|
||||
#include "switch.h"
|
||||
#include "tag_8021q.h"
|
||||
|
||||
static unsigned int dsa_switch_fastest_ageing_time(struct dsa_switch *ds,
|
||||
unsigned int ageing_time)
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include "port.h"
|
||||
#include "switch.h"
|
||||
#include "tag.h"
|
||||
#include "tag_8021q.h"
|
||||
|
||||
/* Binary structure of the fake 12-bit VID field (when the TPID is
|
||||
* ETH_P_DSA_8021Q):
|
||||
@ -63,6 +64,20 @@
|
||||
#define DSA_8021Q_PORT(x) (((x) << DSA_8021Q_PORT_SHIFT) & \
|
||||
DSA_8021Q_PORT_MASK)
|
||||
|
||||
struct dsa_tag_8021q_vlan {
|
||||
struct list_head list;
|
||||
int port;
|
||||
u16 vid;
|
||||
refcount_t refcount;
|
||||
};
|
||||
|
||||
struct dsa_8021q_context {
|
||||
struct dsa_switch *ds;
|
||||
struct list_head vlans;
|
||||
/* EtherType of RX VID, used for filtering on master interface */
|
||||
__be16 proto;
|
||||
};
|
||||
|
||||
u16 dsa_tag_8021q_bridge_vid(unsigned int bridge_num)
|
||||
{
|
||||
/* The VBID value of 0 is reserved for precise TX, but it is also
|
||||
|
27
net/dsa/tag_8021q.h
Normal file
27
net/dsa/tag_8021q.h
Normal file
@ -0,0 +1,27 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#ifndef __DSA_TAG_8021Q_H
|
||||
#define __DSA_TAG_8021Q_H
|
||||
|
||||
#include <net/dsa.h>
|
||||
|
||||
#include "switch.h"
|
||||
|
||||
struct sk_buff;
|
||||
struct net_device;
|
||||
|
||||
struct sk_buff *dsa_8021q_xmit(struct sk_buff *skb, struct net_device *netdev,
|
||||
u16 tpid, u16 tci);
|
||||
|
||||
void dsa_8021q_rcv(struct sk_buff *skb, int *source_port, int *switch_id,
|
||||
int *vbid);
|
||||
|
||||
struct net_device *dsa_tag_8021q_find_port_by_vbid(struct net_device *master,
|
||||
int vbid);
|
||||
|
||||
int dsa_switch_tag_8021q_vlan_add(struct dsa_switch *ds,
|
||||
struct dsa_notifier_tag_8021q_vlan_info *info);
|
||||
int dsa_switch_tag_8021q_vlan_del(struct dsa_switch *ds,
|
||||
struct dsa_notifier_tag_8021q_vlan_info *info);
|
||||
|
||||
#endif
|
@ -12,6 +12,7 @@
|
||||
#include <linux/dsa/ocelot.h>
|
||||
|
||||
#include "tag.h"
|
||||
#include "tag_8021q.h"
|
||||
|
||||
#define OCELOT_8021Q_NAME "ocelot-8021q"
|
||||
|
||||
|
@ -7,6 +7,7 @@
|
||||
#include <linux/packing.h>
|
||||
|
||||
#include "tag.h"
|
||||
#include "tag_8021q.h"
|
||||
|
||||
#define SJA1105_NAME "sja1105"
|
||||
#define SJA1110_NAME "sja1110"
|
||||
|
Loading…
Reference in New Issue
Block a user