Lines Matching refs:dp

20 static int dsa_port_notify(const struct dsa_port *dp, unsigned long e, void *v)  in dsa_port_notify()  argument
22 struct raw_notifier_head *nh = &dp->ds->dst->nh; in dsa_port_notify()
30 int dsa_port_set_state(struct dsa_port *dp, u8 state, in dsa_port_set_state() argument
33 struct dsa_switch *ds = dp->ds; in dsa_port_set_state()
34 int port = dp->index; in dsa_port_set_state()
48 if ((dp->stp_state == BR_STATE_LEARNING || in dsa_port_set_state()
49 dp->stp_state == BR_STATE_FORWARDING) && in dsa_port_set_state()
56 dp->stp_state = state; in dsa_port_set_state()
61 static void dsa_port_set_state_now(struct dsa_port *dp, u8 state) in dsa_port_set_state_now() argument
65 err = dsa_port_set_state(dp, state, NULL); in dsa_port_set_state_now()
70 int dsa_port_enable(struct dsa_port *dp, struct phy_device *phy) in dsa_port_enable() argument
72 u8 stp_state = dp->bridge_dev ? BR_STATE_BLOCKING : BR_STATE_FORWARDING; in dsa_port_enable()
73 struct dsa_switch *ds = dp->ds; in dsa_port_enable()
74 int port = dp->index; in dsa_port_enable()
83 dsa_port_set_state_now(dp, stp_state); in dsa_port_enable()
88 void dsa_port_disable(struct dsa_port *dp, struct phy_device *phy) in dsa_port_disable() argument
90 struct dsa_switch *ds = dp->ds; in dsa_port_disable()
91 int port = dp->index; in dsa_port_disable()
93 dsa_port_set_state_now(dp, BR_STATE_DISABLED); in dsa_port_disable()
99 int dsa_port_bridge_join(struct dsa_port *dp, struct net_device *br) in dsa_port_bridge_join() argument
102 .sw_index = dp->ds->index, in dsa_port_bridge_join()
103 .port = dp->index, in dsa_port_bridge_join()
111 dp->bridge_dev = br; in dsa_port_bridge_join()
113 err = dsa_port_notify(dp, DSA_NOTIFIER_BRIDGE_JOIN, &info); in dsa_port_bridge_join()
117 dp->bridge_dev = NULL; in dsa_port_bridge_join()
122 void dsa_port_bridge_leave(struct dsa_port *dp, struct net_device *br) in dsa_port_bridge_leave() argument
125 .sw_index = dp->ds->index, in dsa_port_bridge_leave()
126 .port = dp->index, in dsa_port_bridge_leave()
134 dp->bridge_dev = NULL; in dsa_port_bridge_leave()
136 err = dsa_port_notify(dp, DSA_NOTIFIER_BRIDGE_LEAVE, &info); in dsa_port_bridge_leave()
143 dsa_port_set_state_now(dp, BR_STATE_FORWARDING); in dsa_port_bridge_leave()
146 int dsa_port_vlan_filtering(struct dsa_port *dp, bool vlan_filtering, in dsa_port_vlan_filtering() argument
149 struct dsa_switch *ds = dp->ds; in dsa_port_vlan_filtering()
156 return ds->ops->port_vlan_filtering(ds, dp->index, in dsa_port_vlan_filtering()
162 int dsa_port_ageing_time(struct dsa_port *dp, clock_t ageing_clock, in dsa_port_ageing_time() argument
173 return dsa_port_notify(dp, DSA_NOTIFIER_AGEING_TIME, &info); in dsa_port_ageing_time()
175 dp->ageing_time = ageing_time; in dsa_port_ageing_time()
177 return dsa_port_notify(dp, DSA_NOTIFIER_AGEING_TIME, &info); in dsa_port_ageing_time()
180 int dsa_port_fdb_add(struct dsa_port *dp, const unsigned char *addr, in dsa_port_fdb_add() argument
184 .sw_index = dp->ds->index, in dsa_port_fdb_add()
185 .port = dp->index, in dsa_port_fdb_add()
190 return dsa_port_notify(dp, DSA_NOTIFIER_FDB_ADD, &info); in dsa_port_fdb_add()
193 int dsa_port_fdb_del(struct dsa_port *dp, const unsigned char *addr, in dsa_port_fdb_del() argument
197 .sw_index = dp->ds->index, in dsa_port_fdb_del()
198 .port = dp->index, in dsa_port_fdb_del()
204 return dsa_port_notify(dp, DSA_NOTIFIER_FDB_DEL, &info); in dsa_port_fdb_del()
207 int dsa_port_fdb_dump(struct dsa_port *dp, dsa_fdb_dump_cb_t *cb, void *data) in dsa_port_fdb_dump() argument
209 struct dsa_switch *ds = dp->ds; in dsa_port_fdb_dump()
210 int port = dp->index; in dsa_port_fdb_dump()
218 int dsa_port_mdb_add(const struct dsa_port *dp, in dsa_port_mdb_add() argument
223 .sw_index = dp->ds->index, in dsa_port_mdb_add()
224 .port = dp->index, in dsa_port_mdb_add()
229 return dsa_port_notify(dp, DSA_NOTIFIER_MDB_ADD, &info); in dsa_port_mdb_add()
232 int dsa_port_mdb_del(const struct dsa_port *dp, in dsa_port_mdb_del() argument
236 .sw_index = dp->ds->index, in dsa_port_mdb_del()
237 .port = dp->index, in dsa_port_mdb_del()
241 return dsa_port_notify(dp, DSA_NOTIFIER_MDB_DEL, &info); in dsa_port_mdb_del()
244 int dsa_port_vlan_add(struct dsa_port *dp, in dsa_port_vlan_add() argument
249 .sw_index = dp->ds->index, in dsa_port_vlan_add()
250 .port = dp->index, in dsa_port_vlan_add()
258 if (br_vlan_enabled(dp->bridge_dev)) in dsa_port_vlan_add()
259 return dsa_port_notify(dp, DSA_NOTIFIER_VLAN_ADD, &info); in dsa_port_vlan_add()
264 int dsa_port_vlan_del(struct dsa_port *dp, in dsa_port_vlan_del() argument
268 .sw_index = dp->ds->index, in dsa_port_vlan_del()
269 .port = dp->index, in dsa_port_vlan_del()
276 if (br_vlan_enabled(dp->bridge_dev)) in dsa_port_vlan_del()
277 return dsa_port_notify(dp, DSA_NOTIFIER_VLAN_DEL, &info); in dsa_port_vlan_del()
282 static struct phy_device *dsa_port_get_phy_device(struct dsa_port *dp) in dsa_port_get_phy_device() argument
287 phy_dn = of_parse_phandle(dp->dn, "phy-handle", 0); in dsa_port_get_phy_device()
300 static int dsa_port_setup_phy_of(struct dsa_port *dp, bool enable) in dsa_port_setup_phy_of() argument
302 struct dsa_switch *ds = dp->ds; in dsa_port_setup_phy_of()
304 int port = dp->index; in dsa_port_setup_phy_of()
307 phydev = dsa_port_get_phy_device(dp); in dsa_port_setup_phy_of()
342 static int dsa_port_fixed_link_register_of(struct dsa_port *dp) in dsa_port_fixed_link_register_of() argument
344 struct device_node *dn = dp->dn; in dsa_port_fixed_link_register_of()
345 struct dsa_switch *ds = dp->ds; in dsa_port_fixed_link_register_of()
347 int port = dp->index; in dsa_port_fixed_link_register_of()
377 int dsa_port_link_register_of(struct dsa_port *dp) in dsa_port_link_register_of() argument
379 if (of_phy_is_fixed_link(dp->dn)) in dsa_port_link_register_of()
380 return dsa_port_fixed_link_register_of(dp); in dsa_port_link_register_of()
382 return dsa_port_setup_phy_of(dp, true); in dsa_port_link_register_of()
385 void dsa_port_link_unregister_of(struct dsa_port *dp) in dsa_port_link_unregister_of() argument
387 if (of_phy_is_fixed_link(dp->dn)) in dsa_port_link_unregister_of()
388 of_phy_deregister_fixed_link(dp->dn); in dsa_port_link_unregister_of()
390 dsa_port_setup_phy_of(dp, false); in dsa_port_link_unregister_of()
393 int dsa_port_get_phy_strings(struct dsa_port *dp, uint8_t *data) in dsa_port_get_phy_strings() argument
398 if (of_phy_is_fixed_link(dp->dn)) in dsa_port_get_phy_strings()
401 phydev = dsa_port_get_phy_device(dp); in dsa_port_get_phy_strings()
412 int dsa_port_get_ethtool_phy_stats(struct dsa_port *dp, uint64_t *data) in dsa_port_get_ethtool_phy_stats() argument
417 if (of_phy_is_fixed_link(dp->dn)) in dsa_port_get_ethtool_phy_stats()
420 phydev = dsa_port_get_phy_device(dp); in dsa_port_get_ethtool_phy_stats()
431 int dsa_port_get_phy_sset_count(struct dsa_port *dp) in dsa_port_get_phy_sset_count() argument
436 if (of_phy_is_fixed_link(dp->dn)) in dsa_port_get_phy_sset_count()
439 phydev = dsa_port_get_phy_device(dp); in dsa_port_get_phy_sset_count()