Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/net/dsa/switch.h
26278 views
1
/* SPDX-License-Identifier: GPL-2.0-or-later */
2
3
#ifndef __DSA_SWITCH_H
4
#define __DSA_SWITCH_H
5
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,
37
DSA_NOTIFIER_CONDUIT_STATE_CHANGE,
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
108
/* DSA_NOTIFIER_CONDUIT_STATE_CHANGE */
109
struct dsa_notifier_conduit_state_info {
110
const struct net_device *conduit;
111
bool operational;
112
};
113
114
struct dsa_vlan *dsa_vlan_find(struct list_head *vlan_list,
115
const struct switchdev_obj_port_vlan *vlan);
116
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
120
int dsa_switch_register_notifier(struct dsa_switch *ds);
121
void dsa_switch_unregister_notifier(struct dsa_switch *ds);
122
123
#endif
124
125