Lines Matching refs:dp

109 static bool dsa_port_is_user(struct dsa_port *dp)  in dsa_port_is_user()  argument
111 return dp->type == DSA_PORT_TYPE_USER; in dsa_port_is_user()
118 struct dsa_port *dp; in dsa_tree_find_port_by_node() local
127 dp = &ds->ports[port]; in dsa_tree_find_port_by_node()
129 if (dp->dn == dn) in dsa_tree_find_port_by_node()
130 return dp; in dsa_tree_find_port_by_node()
137 static bool dsa_port_setup_routing_table(struct dsa_port *dp) in dsa_port_setup_routing_table() argument
139 struct dsa_switch *ds = dp->ds; in dsa_port_setup_routing_table()
141 struct device_node *dn = dp->dn; in dsa_port_setup_routing_table()
153 ds->rtable[link_dp->ds->index] = dp->index; in dsa_port_setup_routing_table()
162 struct dsa_port *dp; in dsa_switch_setup_routing_table() local
169 dp = &ds->ports[i]; in dsa_switch_setup_routing_table()
171 if (dsa_port_is_dsa(dp)) { in dsa_switch_setup_routing_table()
172 complete = dsa_port_setup_routing_table(dp); in dsa_switch_setup_routing_table()
203 struct dsa_port *dp; in dsa_tree_find_first_cpu() local
212 dp = &ds->ports[port]; in dsa_tree_find_first_cpu()
214 if (dsa_port_is_cpu(dp)) in dsa_tree_find_first_cpu()
215 return dp; in dsa_tree_find_first_cpu()
225 struct dsa_port *dp; in dsa_tree_setup_default_cpu() local
242 dp = &ds->ports[port]; in dsa_tree_setup_default_cpu()
244 if (dsa_port_is_user(dp) || dsa_port_is_dsa(dp)) in dsa_tree_setup_default_cpu()
245 dp->cpu_dp = dst->cpu_dp; in dsa_tree_setup_default_cpu()
258 static int dsa_port_setup(struct dsa_port *dp) in dsa_port_setup() argument
260 struct dsa_switch *ds = dp->ds; in dsa_port_setup()
263 memset(&dp->devlink_port, 0, sizeof(dp->devlink_port)); in dsa_port_setup()
265 if (dp->type != DSA_PORT_TYPE_UNUSED) in dsa_port_setup()
266 err = devlink_port_register(ds->devlink, &dp->devlink_port, in dsa_port_setup()
267 dp->index); in dsa_port_setup()
271 switch (dp->type) { in dsa_port_setup()
279 devlink_port_attrs_set(&dp->devlink_port, in dsa_port_setup()
281 dp->index, false, 0); in dsa_port_setup()
282 err = dsa_port_link_register_of(dp); in dsa_port_setup()
285 ds->index, dp->index); in dsa_port_setup()
294 devlink_port_attrs_set(&dp->devlink_port, in dsa_port_setup()
296 dp->index, false, 0); in dsa_port_setup()
297 err = dsa_port_link_register_of(dp); in dsa_port_setup()
300 ds->index, dp->index); in dsa_port_setup()
305 devlink_port_attrs_set(&dp->devlink_port, in dsa_port_setup()
307 dp->index, false, 0); in dsa_port_setup()
308 err = dsa_slave_create(dp); in dsa_port_setup()
311 ds->index, dp->index); in dsa_port_setup()
313 devlink_port_type_eth_set(&dp->devlink_port, dp->slave); in dsa_port_setup()
320 static void dsa_port_teardown(struct dsa_port *dp) in dsa_port_teardown() argument
322 if (dp->type != DSA_PORT_TYPE_UNUSED) in dsa_port_teardown()
323 devlink_port_unregister(&dp->devlink_port); in dsa_port_teardown()
325 switch (dp->type) { in dsa_port_teardown()
330 dsa_port_link_unregister_of(dp); in dsa_port_teardown()
333 if (dp->slave) { in dsa_port_teardown()
334 dsa_slave_destroy(dp->slave); in dsa_port_teardown()
335 dp->slave = NULL; in dsa_port_teardown()
404 struct dsa_port *dp; in dsa_tree_setup_switches() local
418 dp = &ds->ports[port]; in dsa_tree_setup_switches()
420 err = dsa_port_setup(dp); in dsa_tree_setup_switches()
432 struct dsa_port *dp; in dsa_tree_teardown_switches() local
441 dp = &ds->ports[port]; in dsa_tree_teardown_switches()
443 dsa_port_teardown(dp); in dsa_tree_teardown_switches()
545 static int dsa_port_parse_user(struct dsa_port *dp, const char *name) in dsa_port_parse_user() argument
550 dp->type = DSA_PORT_TYPE_USER; in dsa_port_parse_user()
551 dp->name = name; in dsa_port_parse_user()
556 static int dsa_port_parse_dsa(struct dsa_port *dp) in dsa_port_parse_dsa() argument
558 dp->type = DSA_PORT_TYPE_DSA; in dsa_port_parse_dsa()
563 static int dsa_port_parse_cpu(struct dsa_port *dp, struct net_device *master) in dsa_port_parse_cpu() argument
565 struct dsa_switch *ds = dp->ds; in dsa_port_parse_cpu()
570 tag_protocol = ds->ops->get_tag_protocol(ds, dp->index); in dsa_port_parse_cpu()
577 dp->type = DSA_PORT_TYPE_CPU; in dsa_port_parse_cpu()
578 dp->rcv = tag_ops->rcv; in dsa_port_parse_cpu()
579 dp->tag_ops = tag_ops; in dsa_port_parse_cpu()
580 dp->master = master; in dsa_port_parse_cpu()
581 dp->dst = dst; in dsa_port_parse_cpu()
586 static int dsa_port_parse_of(struct dsa_port *dp, struct device_node *dn) in dsa_port_parse_of() argument
592 dp->dn = dn; in dsa_port_parse_of()
601 return dsa_port_parse_cpu(dp, master); in dsa_port_parse_of()
605 return dsa_port_parse_dsa(dp); in dsa_port_parse_of()
607 return dsa_port_parse_user(dp, name); in dsa_port_parse_of()
614 struct dsa_port *dp; in dsa_switch_parse_ports_of() local
632 dp = &ds->ports[reg]; in dsa_switch_parse_ports_of()
634 err = dsa_port_parse_of(dp, port); in dsa_switch_parse_ports_of()
675 static int dsa_port_parse(struct dsa_port *dp, const char *name, in dsa_port_parse() argument
687 return dsa_port_parse_cpu(dp, master); in dsa_port_parse()
691 return dsa_port_parse_dsa(dp); in dsa_port_parse()
693 return dsa_port_parse_user(dp, name); in dsa_port_parse()
700 struct dsa_port *dp; in dsa_switch_parse_ports() local
709 dp = &ds->ports[i]; in dsa_switch_parse_ports()
714 err = dsa_port_parse(dp, name, dev); in dsa_switch_parse_ports()