| /* SPDX-License-Identifier: GPL-2.0-or-later */ | |
| #ifndef __DSA_SWITCH_H | |
| #define __DSA_SWITCH_H | |
| #include <net/dsa.h> | |
| struct netlink_ext_ack; | |
| enum { | |
| DSA_NOTIFIER_AGEING_TIME, | |
| DSA_NOTIFIER_BRIDGE_JOIN, | |
| DSA_NOTIFIER_BRIDGE_LEAVE, | |
| DSA_NOTIFIER_FDB_ADD, | |
| DSA_NOTIFIER_FDB_DEL, | |
| DSA_NOTIFIER_HOST_FDB_ADD, | |
| DSA_NOTIFIER_HOST_FDB_DEL, | |
| DSA_NOTIFIER_LAG_FDB_ADD, | |
| DSA_NOTIFIER_LAG_FDB_DEL, | |
| DSA_NOTIFIER_LAG_CHANGE, | |
| DSA_NOTIFIER_LAG_JOIN, | |
| DSA_NOTIFIER_LAG_LEAVE, | |
| DSA_NOTIFIER_MDB_ADD, | |
| DSA_NOTIFIER_MDB_DEL, | |
| DSA_NOTIFIER_HOST_MDB_ADD, | |
| DSA_NOTIFIER_HOST_MDB_DEL, | |
| DSA_NOTIFIER_VLAN_ADD, | |
| DSA_NOTIFIER_VLAN_DEL, | |
| DSA_NOTIFIER_HOST_VLAN_ADD, | |
| DSA_NOTIFIER_HOST_VLAN_DEL, | |
| DSA_NOTIFIER_MTU, | |
| DSA_NOTIFIER_TAG_PROTO, | |
| DSA_NOTIFIER_TAG_PROTO_CONNECT, | |
| DSA_NOTIFIER_TAG_PROTO_DISCONNECT, | |
| DSA_NOTIFIER_TAG_8021Q_VLAN_ADD, | |
| DSA_NOTIFIER_TAG_8021Q_VLAN_DEL, | |
| DSA_NOTIFIER_CONDUIT_STATE_CHANGE, | |
| }; | |
| /* DSA_NOTIFIER_AGEING_TIME */ | |
| struct dsa_notifier_ageing_time_info { | |
| unsigned int ageing_time; | |
| }; | |
| /* DSA_NOTIFIER_BRIDGE_* */ | |
| struct dsa_notifier_bridge_info { | |
| const struct dsa_port *dp; | |
| struct dsa_bridge bridge; | |
| bool tx_fwd_offload; | |
| struct netlink_ext_ack *extack; | |
| }; | |
| /* DSA_NOTIFIER_FDB_* */ | |
| struct dsa_notifier_fdb_info { | |
| const struct dsa_port *dp; | |
| const unsigned char *addr; | |
| u16 vid; | |
| struct dsa_db db; | |
| }; | |
| /* DSA_NOTIFIER_LAG_FDB_* */ | |
| struct dsa_notifier_lag_fdb_info { | |
| struct dsa_lag *lag; | |
| const unsigned char *addr; | |
| u16 vid; | |
| struct dsa_db db; | |
| }; | |
| /* DSA_NOTIFIER_MDB_* */ | |
| struct dsa_notifier_mdb_info { | |
| const struct dsa_port *dp; | |
| const struct switchdev_obj_port_mdb *mdb; | |
| struct dsa_db db; | |
| }; | |
| /* DSA_NOTIFIER_LAG_* */ | |
| struct dsa_notifier_lag_info { | |
| const struct dsa_port *dp; | |
| struct dsa_lag lag; | |
| struct netdev_lag_upper_info *info; | |
| struct netlink_ext_ack *extack; | |
| }; | |
| /* DSA_NOTIFIER_VLAN_* */ | |
| struct dsa_notifier_vlan_info { | |
| const struct dsa_port *dp; | |
| const struct switchdev_obj_port_vlan *vlan; | |
| struct netlink_ext_ack *extack; | |
| }; | |
| /* DSA_NOTIFIER_MTU */ | |
| struct dsa_notifier_mtu_info { | |
| const struct dsa_port *dp; | |
| int mtu; | |
| }; | |
| /* DSA_NOTIFIER_TAG_PROTO_* */ | |
| struct dsa_notifier_tag_proto_info { | |
| const struct dsa_device_ops *tag_ops; | |
| }; | |
| /* DSA_NOTIFIER_TAG_8021Q_VLAN_* */ | |
| struct dsa_notifier_tag_8021q_vlan_info { | |
| const struct dsa_port *dp; | |
| u16 vid; | |
| }; | |
| /* DSA_NOTIFIER_CONDUIT_STATE_CHANGE */ | |
| struct dsa_notifier_conduit_state_info { | |
| const struct net_device *conduit; | |
| bool operational; | |
| }; | |
| struct dsa_vlan *dsa_vlan_find(struct list_head *vlan_list, | |
| const struct switchdev_obj_port_vlan *vlan); | |
| int dsa_tree_notify(struct dsa_switch_tree *dst, unsigned long e, void *v); | |
| int dsa_broadcast(unsigned long e, void *v); | |
| int dsa_switch_register_notifier(struct dsa_switch *ds); | |
| void dsa_switch_unregister_notifier(struct dsa_switch *ds); | |
| #endif |