port.h 5.3 KB

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