Commit | Line | Data |
---|---|---|
0c603136 VO |
1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
2 | ||
3 | #ifndef __DSA_SWITCH_H | |
4 | #define __DSA_SWITCH_H | |
5 | ||
495550a4 VO |
6 | #include <net/dsa.h> |
7 | ||
8 | struct netlink_ext_ack; | |
9 | ||
10 | enum { | |
11 | DSA_NOTIFIER_AGEING_TIME, | |
12 | DSA_NOTIFIER_BRIDGE_JOIN, | |
13 | DSA_NOTIFIER_BRIDGE_LEAVE, | |
14 | DSA_NOTIFIER_FDB_ADD, | |
15 | DSA_NOTIFIER_FDB_DEL, | |
16 | DSA_NOTIFIER_HOST_FDB_ADD, | |
17 | DSA_NOTIFIER_HOST_FDB_DEL, | |
18 | DSA_NOTIFIER_LAG_FDB_ADD, | |
19 | DSA_NOTIFIER_LAG_FDB_DEL, | |
20 | DSA_NOTIFIER_LAG_CHANGE, | |
21 | DSA_NOTIFIER_LAG_JOIN, | |
22 | DSA_NOTIFIER_LAG_LEAVE, | |
23 | DSA_NOTIFIER_MDB_ADD, | |
24 | DSA_NOTIFIER_MDB_DEL, | |
25 | DSA_NOTIFIER_HOST_MDB_ADD, | |
26 | DSA_NOTIFIER_HOST_MDB_DEL, | |
27 | DSA_NOTIFIER_VLAN_ADD, | |
28 | DSA_NOTIFIER_VLAN_DEL, | |
29 | DSA_NOTIFIER_HOST_VLAN_ADD, | |
30 | DSA_NOTIFIER_HOST_VLAN_DEL, | |
31 | DSA_NOTIFIER_MTU, | |
32 | DSA_NOTIFIER_TAG_PROTO, | |
33 | DSA_NOTIFIER_TAG_PROTO_CONNECT, | |
34 | DSA_NOTIFIER_TAG_PROTO_DISCONNECT, | |
35 | DSA_NOTIFIER_TAG_8021Q_VLAN_ADD, | |
36 | DSA_NOTIFIER_TAG_8021Q_VLAN_DEL, | |
6ca80638 | 37 | DSA_NOTIFIER_CONDUIT_STATE_CHANGE, |
495550a4 VO |
38 | }; |
39 | ||
40 | /* DSA_NOTIFIER_AGEING_TIME */ | |
41 | struct dsa_notifier_ageing_time_info { | |
42 | unsigned int ageing_time; | |
43 | }; | |
44 | ||
45 | /* DSA_NOTIFIER_BRIDGE_* */ | |
46 | struct dsa_notifier_bridge_info { | |
47 | const struct dsa_port *dp; | |
48 | struct dsa_bridge bridge; | |
49 | bool tx_fwd_offload; | |
50 | struct netlink_ext_ack *extack; | |
51 | }; | |
52 | ||
53 | /* DSA_NOTIFIER_FDB_* */ | |
54 | struct dsa_notifier_fdb_info { | |
55 | const struct dsa_port *dp; | |
56 | const unsigned char *addr; | |
57 | u16 vid; | |
58 | struct dsa_db db; | |
59 | }; | |
60 | ||
61 | /* DSA_NOTIFIER_LAG_FDB_* */ | |
62 | struct dsa_notifier_lag_fdb_info { | |
63 | struct dsa_lag *lag; | |
64 | const unsigned char *addr; | |
65 | u16 vid; | |
66 | struct dsa_db db; | |
67 | }; | |
68 | ||
69 | /* DSA_NOTIFIER_MDB_* */ | |
70 | struct dsa_notifier_mdb_info { | |
71 | const struct dsa_port *dp; | |
72 | const struct switchdev_obj_port_mdb *mdb; | |
73 | struct dsa_db db; | |
74 | }; | |
75 | ||
76 | /* DSA_NOTIFIER_LAG_* */ | |
77 | struct dsa_notifier_lag_info { | |
78 | const struct dsa_port *dp; | |
79 | struct dsa_lag lag; | |
80 | struct netdev_lag_upper_info *info; | |
81 | struct netlink_ext_ack *extack; | |
82 | }; | |
83 | ||
84 | /* DSA_NOTIFIER_VLAN_* */ | |
85 | struct dsa_notifier_vlan_info { | |
86 | const struct dsa_port *dp; | |
87 | const struct switchdev_obj_port_vlan *vlan; | |
88 | struct netlink_ext_ack *extack; | |
89 | }; | |
90 | ||
91 | /* DSA_NOTIFIER_MTU */ | |
92 | struct dsa_notifier_mtu_info { | |
93 | const struct dsa_port *dp; | |
94 | int mtu; | |
95 | }; | |
96 | ||
97 | /* DSA_NOTIFIER_TAG_PROTO_* */ | |
98 | struct dsa_notifier_tag_proto_info { | |
99 | const struct dsa_device_ops *tag_ops; | |
100 | }; | |
101 | ||
102 | /* DSA_NOTIFIER_TAG_8021Q_VLAN_* */ | |
103 | struct dsa_notifier_tag_8021q_vlan_info { | |
104 | const struct dsa_port *dp; | |
105 | u16 vid; | |
106 | }; | |
107 | ||
6ca80638 FF |
108 | /* DSA_NOTIFIER_CONDUIT_STATE_CHANGE */ |
109 | struct dsa_notifier_conduit_state_info { | |
110 | const struct net_device *conduit; | |
495550a4 VO |
111 | bool operational; |
112 | }; | |
0c603136 | 113 | |
d06f925f VO |
114 | struct dsa_vlan *dsa_vlan_find(struct list_head *vlan_list, |
115 | const struct switchdev_obj_port_vlan *vlan); | |
116 | ||
6dbdfce7 VO |
117 | int dsa_tree_notify(struct dsa_switch_tree *dst, unsigned long e, void *v); |
118 | int dsa_broadcast(unsigned long e, void *v); | |
119 | ||
0c603136 VO |
120 | int dsa_switch_register_notifier(struct dsa_switch *ds); |
121 | void dsa_switch_unregister_notifier(struct dsa_switch *ds); | |
122 | ||
123 | #endif |