Vladimir Oltean | 022bba63 | 2022-11-21 15:55:44 +0200 | [diff] [blame] | 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 | |
Vladimir Oltean | ff6ac4d | 2023-04-02 15:37:54 +0300 | [diff] [blame] | 18 | bool dsa_port_supports_hwtstamp(struct dsa_port *dp); |
Vladimir Oltean | 022bba63 | 2022-11-21 15:55:44 +0200 | [diff] [blame] | 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 |