1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 3 #ifndef __DSA_PORT_H 4 #define __DSA_PORT_H 5 6 #include <linux/types.h> 7 #include <net/dsa.h> 8 9 struct ifreq; 10 struct netdev_lag_lower_state_info; 11 struct netdev_lag_upper_info; 12 struct netlink_ext_ack; 13 struct switchdev_mst_state; 14 struct switchdev_obj_port_mdb; 15 struct switchdev_vlan_msti; 16 struct phy_device; 17 18 bool dsa_port_supports_hwtstamp(struct dsa_port *dp, struct ifreq *ifr); 19 void dsa_port_set_tag_protocol(struct dsa_port *cpu_dp, 20 const struct dsa_device_ops *tag_ops); 21 int dsa_port_set_state(struct dsa_port *dp, u8 state, bool do_fast_age); 22 int dsa_port_set_mst_state(struct dsa_port *dp, 23 const struct switchdev_mst_state *state, 24 struct netlink_ext_ack *extack); 25 int dsa_port_enable_rt(struct dsa_port *dp, struct phy_device *phy); 26 int dsa_port_enable(struct dsa_port *dp, struct phy_device *phy); 27 void dsa_port_disable_rt(struct dsa_port *dp); 28 void dsa_port_disable(struct dsa_port *dp); 29 int dsa_port_bridge_join(struct dsa_port *dp, struct net_device *br, 30 struct netlink_ext_ack *extack); 31 void dsa_port_pre_bridge_leave(struct dsa_port *dp, struct net_device *br); 32 void dsa_port_bridge_leave(struct dsa_port *dp, struct net_device *br); 33 int dsa_port_lag_change(struct dsa_port *dp, 34 struct netdev_lag_lower_state_info *linfo); 35 int dsa_port_lag_join(struct dsa_port *dp, struct net_device *lag_dev, 36 struct netdev_lag_upper_info *uinfo, 37 struct netlink_ext_ack *extack); 38 void dsa_port_pre_lag_leave(struct dsa_port *dp, struct net_device *lag_dev); 39 void dsa_port_lag_leave(struct dsa_port *dp, struct net_device *lag_dev); 40 int dsa_port_vlan_filtering(struct dsa_port *dp, bool vlan_filtering, 41 struct netlink_ext_ack *extack); 42 bool dsa_port_skip_vlan_configuration(struct dsa_port *dp); 43 int dsa_port_ageing_time(struct dsa_port *dp, clock_t ageing_clock); 44 int dsa_port_mst_enable(struct dsa_port *dp, bool on, 45 struct netlink_ext_ack *extack); 46 int dsa_port_vlan_msti(struct dsa_port *dp, 47 const struct switchdev_vlan_msti *msti); 48 int dsa_port_mtu_change(struct dsa_port *dp, int new_mtu); 49 int dsa_port_fdb_add(struct dsa_port *dp, const unsigned char *addr, 50 u16 vid); 51 int dsa_port_fdb_del(struct dsa_port *dp, const unsigned char *addr, 52 u16 vid); 53 int dsa_port_standalone_host_fdb_add(struct dsa_port *dp, 54 const unsigned char *addr, u16 vid); 55 int dsa_port_standalone_host_fdb_del(struct dsa_port *dp, 56 const unsigned char *addr, u16 vid); 57 int dsa_port_bridge_host_fdb_add(struct dsa_port *dp, const unsigned char *addr, 58 u16 vid); 59 int dsa_port_bridge_host_fdb_del(struct dsa_port *dp, const unsigned char *addr, 60 u16 vid); 61 int dsa_port_lag_fdb_add(struct dsa_port *dp, const unsigned char *addr, 62 u16 vid); 63 int dsa_port_lag_fdb_del(struct dsa_port *dp, const unsigned char *addr, 64 u16 vid); 65 int dsa_port_fdb_dump(struct dsa_port *dp, dsa_fdb_dump_cb_t *cb, void *data); 66 int dsa_port_mdb_add(const struct dsa_port *dp, 67 const struct switchdev_obj_port_mdb *mdb); 68 int dsa_port_mdb_del(const struct dsa_port *dp, 69 const struct switchdev_obj_port_mdb *mdb); 70 int dsa_port_standalone_host_mdb_add(const struct dsa_port *dp, 71 const struct switchdev_obj_port_mdb *mdb); 72 int dsa_port_standalone_host_mdb_del(const struct dsa_port *dp, 73 const struct switchdev_obj_port_mdb *mdb); 74 int dsa_port_bridge_host_mdb_add(const struct dsa_port *dp, 75 const struct switchdev_obj_port_mdb *mdb); 76 int dsa_port_bridge_host_mdb_del(const struct dsa_port *dp, 77 const struct switchdev_obj_port_mdb *mdb); 78 int dsa_port_pre_bridge_flags(const struct dsa_port *dp, 79 struct switchdev_brport_flags flags, 80 struct netlink_ext_ack *extack); 81 int dsa_port_bridge_flags(struct dsa_port *dp, 82 struct switchdev_brport_flags flags, 83 struct netlink_ext_ack *extack); 84 int dsa_port_vlan_add(struct dsa_port *dp, 85 const struct switchdev_obj_port_vlan *vlan, 86 struct netlink_ext_ack *extack); 87 int dsa_port_vlan_del(struct dsa_port *dp, 88 const struct switchdev_obj_port_vlan *vlan); 89 int dsa_port_host_vlan_add(struct dsa_port *dp, 90 const struct switchdev_obj_port_vlan *vlan, 91 struct netlink_ext_ack *extack); 92 int dsa_port_host_vlan_del(struct dsa_port *dp, 93 const struct switchdev_obj_port_vlan *vlan); 94 int dsa_port_mrp_add(const struct dsa_port *dp, 95 const struct switchdev_obj_mrp *mrp); 96 int dsa_port_mrp_del(const struct dsa_port *dp, 97 const struct switchdev_obj_mrp *mrp); 98 int dsa_port_mrp_add_ring_role(const struct dsa_port *dp, 99 const struct switchdev_obj_ring_role_mrp *mrp); 100 int dsa_port_mrp_del_ring_role(const struct dsa_port *dp, 101 const struct switchdev_obj_ring_role_mrp *mrp); 102 int dsa_port_phylink_create(struct dsa_port *dp); 103 void dsa_port_phylink_destroy(struct dsa_port *dp); 104 int dsa_shared_port_link_register_of(struct dsa_port *dp); 105 void dsa_shared_port_link_unregister_of(struct dsa_port *dp); 106 int dsa_port_hsr_join(struct dsa_port *dp, struct net_device *hsr); 107 void dsa_port_hsr_leave(struct dsa_port *dp, struct net_device *hsr); 108 int dsa_port_tag_8021q_vlan_add(struct dsa_port *dp, u16 vid, bool broadcast); 109 void dsa_port_tag_8021q_vlan_del(struct dsa_port *dp, u16 vid, bool broadcast); 110 void dsa_port_set_host_flood(struct dsa_port *dp, bool uc, bool mc); 111 int dsa_port_change_master(struct dsa_port *dp, struct net_device *master, 112 struct netlink_ext_ack *extack); 113 114 #endif 115