Lines Matching refs:dp
106 static bool dsa_port_is_user(struct dsa_port *dp) in dsa_port_is_user() argument
108 return dp->type == DSA_PORT_TYPE_USER; in dsa_port_is_user()
115 struct dsa_port *dp; in dsa_tree_find_port_by_node() local
124 dp = &ds->ports[port]; in dsa_tree_find_port_by_node()
126 if (dp->dn == dn) in dsa_tree_find_port_by_node()
127 return dp; in dsa_tree_find_port_by_node()
134 static bool dsa_port_setup_routing_table(struct dsa_port *dp) in dsa_port_setup_routing_table() argument
136 struct dsa_switch *ds = dp->ds; in dsa_port_setup_routing_table()
138 struct device_node *dn = dp->dn; in dsa_port_setup_routing_table()
150 ds->rtable[link_dp->ds->index] = dp->index; in dsa_port_setup_routing_table()
159 struct dsa_port *dp; in dsa_switch_setup_routing_table() local
166 dp = &ds->ports[i]; in dsa_switch_setup_routing_table()
168 if (dsa_port_is_dsa(dp)) { in dsa_switch_setup_routing_table()
169 complete = dsa_port_setup_routing_table(dp); in dsa_switch_setup_routing_table()
200 struct dsa_port *dp; in dsa_tree_find_first_cpu() local
209 dp = &ds->ports[port]; in dsa_tree_find_first_cpu()
211 if (dsa_port_is_cpu(dp)) in dsa_tree_find_first_cpu()
212 return dp; in dsa_tree_find_first_cpu()
222 struct dsa_port *dp; in dsa_tree_setup_default_cpu() local
239 dp = &ds->ports[port]; in dsa_tree_setup_default_cpu()
241 if (dsa_port_is_user(dp) || dsa_port_is_dsa(dp)) in dsa_tree_setup_default_cpu()
242 dp->cpu_dp = dst->cpu_dp; in dsa_tree_setup_default_cpu()
255 static int dsa_port_setup(struct dsa_port *dp) in dsa_port_setup() argument
257 struct dsa_switch *ds = dp->ds; in dsa_port_setup()
261 struct devlink_port *dlp = &dp->devlink_port; in dsa_port_setup()
268 switch (dp->type) { in dsa_port_setup()
270 dsa_port_disable(dp); in dsa_port_setup()
275 dp->index, false, 0, id, len); in dsa_port_setup()
276 err = devlink_port_register(dl, dlp, dp->index); in dsa_port_setup()
281 err = dsa_port_link_register_of(dp); in dsa_port_setup()
286 err = dsa_port_enable(dp, NULL); in dsa_port_setup()
295 dp->index, false, 0, id, len); in dsa_port_setup()
296 err = devlink_port_register(dl, dlp, dp->index); in dsa_port_setup()
301 err = dsa_port_link_register_of(dp); in dsa_port_setup()
306 err = dsa_port_enable(dp, NULL); in dsa_port_setup()
315 dp->index, false, 0, id, len); in dsa_port_setup()
316 err = devlink_port_register(dl, dlp, dp->index); in dsa_port_setup()
321 dp->mac = of_get_mac_address(dp->dn); in dsa_port_setup()
322 err = dsa_slave_create(dp); in dsa_port_setup()
326 devlink_port_type_eth_set(dlp, dp->slave); in dsa_port_setup()
331 dsa_port_disable(dp); in dsa_port_setup()
333 dsa_port_link_unregister_of(dp); in dsa_port_setup()
340 static void dsa_port_teardown(struct dsa_port *dp) in dsa_port_teardown() argument
342 struct devlink_port *dlp = &dp->devlink_port; in dsa_port_teardown()
344 switch (dp->type) { in dsa_port_teardown()
348 dsa_port_disable(dp); in dsa_port_teardown()
349 dsa_tag_driver_put(dp->tag_ops); in dsa_port_teardown()
351 dsa_port_link_unregister_of(dp); in dsa_port_teardown()
354 dsa_port_disable(dp); in dsa_port_teardown()
356 dsa_port_link_unregister_of(dp); in dsa_port_teardown()
360 if (dp->slave) { in dsa_port_teardown()
361 dsa_slave_destroy(dp->slave); in dsa_port_teardown()
362 dp->slave = NULL; in dsa_port_teardown()
446 struct dsa_port *dp; in dsa_tree_setup_switches() local
460 dp = &ds->ports[port]; in dsa_tree_setup_switches()
462 err = dsa_port_setup(dp); in dsa_tree_setup_switches()
483 dp = &ds->ports[port]; in dsa_tree_setup_switches()
485 dsa_port_teardown(dp); in dsa_tree_setup_switches()
497 struct dsa_port *dp; in dsa_tree_teardown_switches() local
506 dp = &ds->ports[port]; in dsa_tree_teardown_switches()
508 dsa_port_teardown(dp); in dsa_tree_teardown_switches()
619 static int dsa_port_parse_user(struct dsa_port *dp, const char *name) in dsa_port_parse_user() argument
624 dp->type = DSA_PORT_TYPE_USER; in dsa_port_parse_user()
625 dp->name = name; in dsa_port_parse_user()
630 static int dsa_port_parse_dsa(struct dsa_port *dp) in dsa_port_parse_dsa() argument
632 dp->type = DSA_PORT_TYPE_DSA; in dsa_port_parse_dsa()
637 static int dsa_port_parse_cpu(struct dsa_port *dp, struct net_device *master) in dsa_port_parse_cpu() argument
639 struct dsa_switch *ds = dp->ds; in dsa_port_parse_cpu()
644 tag_protocol = ds->ops->get_tag_protocol(ds, dp->index); in dsa_port_parse_cpu()
653 dp->type = DSA_PORT_TYPE_CPU; in dsa_port_parse_cpu()
654 dp->filter = tag_ops->filter; in dsa_port_parse_cpu()
655 dp->rcv = tag_ops->rcv; in dsa_port_parse_cpu()
656 dp->tag_ops = tag_ops; in dsa_port_parse_cpu()
657 dp->master = master; in dsa_port_parse_cpu()
658 dp->dst = dst; in dsa_port_parse_cpu()
663 static int dsa_port_parse_of(struct dsa_port *dp, struct device_node *dn) in dsa_port_parse_of() argument
669 dp->dn = dn; in dsa_port_parse_of()
678 return dsa_port_parse_cpu(dp, master); in dsa_port_parse_of()
682 return dsa_port_parse_dsa(dp); in dsa_port_parse_of()
684 return dsa_port_parse_user(dp, name); in dsa_port_parse_of()
691 struct dsa_port *dp; in dsa_switch_parse_ports_of() local
711 dp = &ds->ports[reg]; in dsa_switch_parse_ports_of()
713 err = dsa_port_parse_of(dp, port); in dsa_switch_parse_ports_of()
756 static int dsa_port_parse(struct dsa_port *dp, const char *name, in dsa_port_parse() argument
768 return dsa_port_parse_cpu(dp, master); in dsa_port_parse()
772 return dsa_port_parse_dsa(dp); in dsa_port_parse()
774 return dsa_port_parse_user(dp, name); in dsa_port_parse()
781 struct dsa_port *dp; in dsa_switch_parse_ports() local
790 dp = &ds->ports[i]; in dsa_switch_parse_ports()
795 err = dsa_port_parse(dp, name, dev); in dsa_switch_parse_ports()