1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
---|---|
2 | |
3 | #ifndef __DSA_USER_H |
4 | #define __DSA_USER_H |
5 | |
6 | #include <linux/if_bridge.h> |
7 | #include <linux/if_vlan.h> |
8 | #include <linux/list.h> |
9 | #include <linux/netpoll.h> |
10 | #include <linux/types.h> |
11 | #include <net/dsa.h> |
12 | #include <net/gro_cells.h> |
13 | |
14 | struct net_device; |
15 | struct netlink_ext_ack; |
16 | |
17 | extern struct notifier_block dsa_user_switchdev_notifier; |
18 | extern struct notifier_block dsa_user_switchdev_blocking_notifier; |
19 | |
20 | struct dsa_user_priv { |
21 | /* Copy of CPU port xmit for faster access in user transmit hot path */ |
22 | struct sk_buff * (*xmit)(struct sk_buff *skb, |
23 | struct net_device *dev); |
24 | |
25 | struct gro_cells gcells; |
26 | |
27 | /* DSA port data, such as switch, port index, etc. */ |
28 | struct dsa_port *dp; |
29 | |
30 | #ifdef CONFIG_NET_POLL_CONTROLLER |
31 | struct netpoll *netpoll; |
32 | #endif |
33 | |
34 | /* TC context */ |
35 | struct list_head mall_tc_list; |
36 | }; |
37 | |
38 | void dsa_user_mii_bus_init(struct dsa_switch *ds); |
39 | int dsa_user_create(struct dsa_port *dp); |
40 | void dsa_user_destroy(struct net_device *user_dev); |
41 | int dsa_user_suspend(struct net_device *user_dev); |
42 | int dsa_user_resume(struct net_device *user_dev); |
43 | int dsa_user_register_notifier(void); |
44 | void dsa_user_unregister_notifier(void); |
45 | void dsa_user_sync_ha(struct net_device *dev); |
46 | void dsa_user_unsync_ha(struct net_device *dev); |
47 | void dsa_user_setup_tagger(struct net_device *user); |
48 | int dsa_user_change_mtu(struct net_device *dev, int new_mtu); |
49 | int dsa_user_change_conduit(struct net_device *dev, struct net_device *conduit, |
50 | struct netlink_ext_ack *extack); |
51 | int dsa_user_manage_vlan_filtering(struct net_device *dev, |
52 | bool vlan_filtering); |
53 | |
54 | static inline struct dsa_port *dsa_user_to_port(const struct net_device *dev) |
55 | { |
56 | struct dsa_user_priv *p = netdev_priv(dev); |
57 | |
58 | return p->dp; |
59 | } |
60 | |
61 | static inline struct net_device * |
62 | dsa_user_to_conduit(const struct net_device *dev) |
63 | { |
64 | struct dsa_port *dp = dsa_user_to_port(dev); |
65 | |
66 | return dsa_port_to_conduit(dp); |
67 | } |
68 | |
69 | #endif |
70 |