1022bba63SVladimir Oltean /* SPDX-License-Identifier: GPL-2.0-or-later */ 2022bba63SVladimir Oltean 3022bba63SVladimir Oltean #ifndef __DSA_PORT_H 4022bba63SVladimir Oltean #define __DSA_PORT_H 5022bba63SVladimir Oltean 6022bba63SVladimir Oltean #include <linux/types.h> 7022bba63SVladimir Oltean #include <net/dsa.h> 8022bba63SVladimir Oltean 9022bba63SVladimir Oltean struct ifreq; 10022bba63SVladimir Oltean struct netdev_lag_lower_state_info; 11022bba63SVladimir Oltean struct netdev_lag_upper_info; 12022bba63SVladimir Oltean struct netlink_ext_ack; 13022bba63SVladimir Oltean struct switchdev_mst_state; 14022bba63SVladimir Oltean struct switchdev_obj_port_mdb; 15022bba63SVladimir Oltean struct switchdev_vlan_msti; 16022bba63SVladimir Oltean struct phy_device; 17022bba63SVladimir Oltean 18*ff6ac4d0SVladimir Oltean bool dsa_port_supports_hwtstamp(struct dsa_port *dp); 19022bba63SVladimir Oltean void dsa_port_set_tag_protocol(struct dsa_port *cpu_dp, 20022bba63SVladimir Oltean const struct dsa_device_ops *tag_ops); 21022bba63SVladimir Oltean int dsa_port_set_state(struct dsa_port *dp, u8 state, bool do_fast_age); 22022bba63SVladimir Oltean int dsa_port_set_mst_state(struct dsa_port *dp, 23022bba63SVladimir Oltean const struct switchdev_mst_state *state, 24022bba63SVladimir Oltean struct netlink_ext_ack *extack); 25022bba63SVladimir Oltean int dsa_port_enable_rt(struct dsa_port *dp, struct phy_device *phy); 26022bba63SVladimir Oltean int dsa_port_enable(struct dsa_port *dp, struct phy_device *phy); 27022bba63SVladimir Oltean void dsa_port_disable_rt(struct dsa_port *dp); 28022bba63SVladimir Oltean void dsa_port_disable(struct dsa_port *dp); 29022bba63SVladimir Oltean int dsa_port_bridge_join(struct dsa_port *dp, struct net_device *br, 30022bba63SVladimir Oltean struct netlink_ext_ack *extack); 31022bba63SVladimir Oltean void dsa_port_pre_bridge_leave(struct dsa_port *dp, struct net_device *br); 32022bba63SVladimir Oltean void dsa_port_bridge_leave(struct dsa_port *dp, struct net_device *br); 33022bba63SVladimir Oltean int dsa_port_lag_change(struct dsa_port *dp, 34022bba63SVladimir Oltean struct netdev_lag_lower_state_info *linfo); 35022bba63SVladimir Oltean int dsa_port_lag_join(struct dsa_port *dp, struct net_device *lag_dev, 36022bba63SVladimir Oltean struct netdev_lag_upper_info *uinfo, 37022bba63SVladimir Oltean struct netlink_ext_ack *extack); 38022bba63SVladimir Oltean void dsa_port_pre_lag_leave(struct dsa_port *dp, struct net_device *lag_dev); 39022bba63SVladimir Oltean void dsa_port_lag_leave(struct dsa_port *dp, struct net_device *lag_dev); 40022bba63SVladimir Oltean int dsa_port_vlan_filtering(struct dsa_port *dp, bool vlan_filtering, 41022bba63SVladimir Oltean struct netlink_ext_ack *extack); 42022bba63SVladimir Oltean bool dsa_port_skip_vlan_configuration(struct dsa_port *dp); 43022bba63SVladimir Oltean int dsa_port_ageing_time(struct dsa_port *dp, clock_t ageing_clock); 44022bba63SVladimir Oltean int dsa_port_mst_enable(struct dsa_port *dp, bool on, 45022bba63SVladimir Oltean struct netlink_ext_ack *extack); 46022bba63SVladimir Oltean int dsa_port_vlan_msti(struct dsa_port *dp, 47022bba63SVladimir Oltean const struct switchdev_vlan_msti *msti); 48022bba63SVladimir Oltean int dsa_port_mtu_change(struct dsa_port *dp, int new_mtu); 49022bba63SVladimir Oltean int dsa_port_fdb_add(struct dsa_port *dp, const unsigned char *addr, 50022bba63SVladimir Oltean u16 vid); 51022bba63SVladimir Oltean int dsa_port_fdb_del(struct dsa_port *dp, const unsigned char *addr, 52022bba63SVladimir Oltean u16 vid); 53022bba63SVladimir Oltean int dsa_port_standalone_host_fdb_add(struct dsa_port *dp, 54022bba63SVladimir Oltean const unsigned char *addr, u16 vid); 55022bba63SVladimir Oltean int dsa_port_standalone_host_fdb_del(struct dsa_port *dp, 56022bba63SVladimir Oltean const unsigned char *addr, u16 vid); 57022bba63SVladimir Oltean int dsa_port_bridge_host_fdb_add(struct dsa_port *dp, const unsigned char *addr, 58022bba63SVladimir Oltean u16 vid); 59022bba63SVladimir Oltean int dsa_port_bridge_host_fdb_del(struct dsa_port *dp, const unsigned char *addr, 60022bba63SVladimir Oltean u16 vid); 61022bba63SVladimir Oltean int dsa_port_lag_fdb_add(struct dsa_port *dp, const unsigned char *addr, 62022bba63SVladimir Oltean u16 vid); 63022bba63SVladimir Oltean int dsa_port_lag_fdb_del(struct dsa_port *dp, const unsigned char *addr, 64022bba63SVladimir Oltean u16 vid); 65022bba63SVladimir Oltean int dsa_port_fdb_dump(struct dsa_port *dp, dsa_fdb_dump_cb_t *cb, void *data); 66022bba63SVladimir Oltean int dsa_port_mdb_add(const struct dsa_port *dp, 67022bba63SVladimir Oltean const struct switchdev_obj_port_mdb *mdb); 68022bba63SVladimir Oltean int dsa_port_mdb_del(const struct dsa_port *dp, 69022bba63SVladimir Oltean const struct switchdev_obj_port_mdb *mdb); 70022bba63SVladimir Oltean int dsa_port_standalone_host_mdb_add(const struct dsa_port *dp, 71022bba63SVladimir Oltean const struct switchdev_obj_port_mdb *mdb); 72022bba63SVladimir Oltean int dsa_port_standalone_host_mdb_del(const struct dsa_port *dp, 73022bba63SVladimir Oltean const struct switchdev_obj_port_mdb *mdb); 74022bba63SVladimir Oltean int dsa_port_bridge_host_mdb_add(const struct dsa_port *dp, 75022bba63SVladimir Oltean const struct switchdev_obj_port_mdb *mdb); 76022bba63SVladimir Oltean int dsa_port_bridge_host_mdb_del(const struct dsa_port *dp, 77022bba63SVladimir Oltean const struct switchdev_obj_port_mdb *mdb); 78022bba63SVladimir Oltean int dsa_port_pre_bridge_flags(const struct dsa_port *dp, 79022bba63SVladimir Oltean struct switchdev_brport_flags flags, 80022bba63SVladimir Oltean struct netlink_ext_ack *extack); 81022bba63SVladimir Oltean int dsa_port_bridge_flags(struct dsa_port *dp, 82022bba63SVladimir Oltean struct switchdev_brport_flags flags, 83022bba63SVladimir Oltean struct netlink_ext_ack *extack); 84022bba63SVladimir Oltean int dsa_port_vlan_add(struct dsa_port *dp, 85022bba63SVladimir Oltean const struct switchdev_obj_port_vlan *vlan, 86022bba63SVladimir Oltean struct netlink_ext_ack *extack); 87022bba63SVladimir Oltean int dsa_port_vlan_del(struct dsa_port *dp, 88022bba63SVladimir Oltean const struct switchdev_obj_port_vlan *vlan); 89022bba63SVladimir Oltean int dsa_port_host_vlan_add(struct dsa_port *dp, 90022bba63SVladimir Oltean const struct switchdev_obj_port_vlan *vlan, 91022bba63SVladimir Oltean struct netlink_ext_ack *extack); 92022bba63SVladimir Oltean int dsa_port_host_vlan_del(struct dsa_port *dp, 93022bba63SVladimir Oltean const struct switchdev_obj_port_vlan *vlan); 94022bba63SVladimir Oltean int dsa_port_mrp_add(const struct dsa_port *dp, 95022bba63SVladimir Oltean const struct switchdev_obj_mrp *mrp); 96022bba63SVladimir Oltean int dsa_port_mrp_del(const struct dsa_port *dp, 97022bba63SVladimir Oltean const struct switchdev_obj_mrp *mrp); 98022bba63SVladimir Oltean int dsa_port_mrp_add_ring_role(const struct dsa_port *dp, 99022bba63SVladimir Oltean const struct switchdev_obj_ring_role_mrp *mrp); 100022bba63SVladimir Oltean int dsa_port_mrp_del_ring_role(const struct dsa_port *dp, 101022bba63SVladimir Oltean const struct switchdev_obj_ring_role_mrp *mrp); 102022bba63SVladimir Oltean int dsa_port_phylink_create(struct dsa_port *dp); 103022bba63SVladimir Oltean void dsa_port_phylink_destroy(struct dsa_port *dp); 104022bba63SVladimir Oltean int dsa_shared_port_link_register_of(struct dsa_port *dp); 105022bba63SVladimir Oltean void dsa_shared_port_link_unregister_of(struct dsa_port *dp); 106022bba63SVladimir Oltean int dsa_port_hsr_join(struct dsa_port *dp, struct net_device *hsr); 107022bba63SVladimir Oltean void dsa_port_hsr_leave(struct dsa_port *dp, struct net_device *hsr); 108022bba63SVladimir Oltean int dsa_port_tag_8021q_vlan_add(struct dsa_port *dp, u16 vid, bool broadcast); 109022bba63SVladimir Oltean void dsa_port_tag_8021q_vlan_del(struct dsa_port *dp, u16 vid, bool broadcast); 110022bba63SVladimir Oltean void dsa_port_set_host_flood(struct dsa_port *dp, bool uc, bool mc); 111022bba63SVladimir Oltean int dsa_port_change_master(struct dsa_port *dp, struct net_device *master, 112022bba63SVladimir Oltean struct netlink_ext_ack *extack); 113022bba63SVladimir Oltean 114022bba63SVladimir Oltean #endif 115