Lines Matching full:ds
85 static void xrs700x_get_strings(struct dsa_switch *ds, int port, in xrs700x_get_strings() argument
99 static int xrs700x_get_sset_count(struct dsa_switch *ds, int port, int sset) in xrs700x_get_sset_count() argument
153 for (i = 0; i < priv->ds->num_ports; i++) in xrs700x_mib_work()
159 static void xrs700x_get_ethtool_stats(struct dsa_switch *ds, int port, in xrs700x_get_ethtool_stats() argument
162 struct xrs700x *priv = ds->priv; in xrs700x_get_ethtool_stats()
172 static void xrs700x_get_stats64(struct dsa_switch *ds, int port, in xrs700x_get_stats64() argument
175 struct xrs700x *priv = ds->priv; in xrs700x_get_stats64()
190 priv->ds->num_ports, in xrs700x_setup_regmap_range()
196 priv->ds->num_ports, in xrs700x_setup_regmap_range()
202 priv->ds->num_ports, in xrs700x_setup_regmap_range()
208 priv->ds->num_ports, in xrs700x_setup_regmap_range()
226 static enum dsa_tag_protocol xrs700x_get_tag_protocol(struct dsa_switch *ds, in xrs700x_get_tag_protocol() argument
233 static int xrs700x_reset(struct dsa_switch *ds) in xrs700x_reset() argument
235 struct xrs700x *priv = ds->priv; in xrs700x_reset()
255 static void xrs700x_port_stp_state_set(struct dsa_switch *ds, int port, in xrs700x_port_stp_state_set() argument
258 struct xrs700x *priv = ds->priv; in xrs700x_port_stp_state_set()
277 dev_err(ds->dev, "invalid STP state: %d\n", state); in xrs700x_port_stp_state_set()
297 static int xrs700x_port_add_bpdu_ipf(struct dsa_switch *ds, int port) in xrs700x_port_add_bpdu_ipf() argument
299 struct xrs700x *priv = ds->priv; in xrs700x_port_add_bpdu_ipf()
319 for (i = 0; i < ds->num_ports; i++) { in xrs700x_port_add_bpdu_ipf()
320 if (dsa_is_cpu_port(ds, i)) in xrs700x_port_add_bpdu_ipf()
340 static int xrs700x_port_add_hsrsup_ipf(struct dsa_switch *ds, int port, in xrs700x_port_add_hsrsup_ipf() argument
343 struct xrs700x *priv = ds->priv; in xrs700x_port_add_hsrsup_ipf()
363 for (i = 0; i < ds->num_ports; i++) { in xrs700x_port_add_hsrsup_ipf()
364 if (dsa_is_cpu_port(ds, i)) in xrs700x_port_add_hsrsup_ipf()
383 static int xrs700x_port_setup(struct dsa_switch *ds, int port) in xrs700x_port_setup() argument
385 bool cpu_port = dsa_is_cpu_port(ds, port); in xrs700x_port_setup()
386 struct xrs700x *priv = ds->priv; in xrs700x_port_setup()
390 xrs700x_port_stp_state_set(ds, port, BR_STATE_DISABLED); in xrs700x_port_setup()
393 for (i = 0; i < ds->num_ports; i++) { in xrs700x_port_setup()
394 if (!dsa_is_cpu_port(ds, i)) in xrs700x_port_setup()
409 ret = xrs700x_port_add_bpdu_ipf(ds, port); in xrs700x_port_setup()
417 static int xrs700x_setup(struct dsa_switch *ds) in xrs700x_setup() argument
419 struct xrs700x *priv = ds->priv; in xrs700x_setup()
422 ret = xrs700x_reset(ds); in xrs700x_setup()
426 for (i = 0; i < ds->num_ports; i++) { in xrs700x_setup()
427 ret = xrs700x_port_setup(ds, i); in xrs700x_setup()
437 static void xrs700x_teardown(struct dsa_switch *ds) in xrs700x_teardown() argument
439 struct xrs700x *priv = ds->priv; in xrs700x_teardown()
444 static void xrs700x_phylink_validate(struct dsa_switch *ds, int port, in xrs700x_phylink_validate() argument
460 dev_err(ds->dev, "Unsupported port: %i\n", port); in xrs700x_phylink_validate()
476 static void xrs700x_mac_link_up(struct dsa_switch *ds, int port, in xrs700x_mac_link_up() argument
482 struct xrs700x *priv = ds->priv; in xrs700x_mac_link_up()
505 static int xrs700x_bridge_common(struct dsa_switch *ds, int port, in xrs700x_bridge_common() argument
509 struct xrs700x *priv = ds->priv; in xrs700x_bridge_common()
512 for (i = 0; i < ds->num_ports; i++) { in xrs700x_bridge_common()
513 if (dsa_is_cpu_port(ds, i)) in xrs700x_bridge_common()
518 if (dsa_to_port(ds, i)->bridge_dev == bridge) in xrs700x_bridge_common()
524 for (i = 0; i < ds->num_ports; i++) { in xrs700x_bridge_common()
525 if (dsa_to_port(ds, i)->bridge_dev != bridge) in xrs700x_bridge_common()
544 static int xrs700x_bridge_join(struct dsa_switch *ds, int port, in xrs700x_bridge_join() argument
547 return xrs700x_bridge_common(ds, port, bridge, true); in xrs700x_bridge_join()
550 static void xrs700x_bridge_leave(struct dsa_switch *ds, int port, in xrs700x_bridge_leave() argument
553 xrs700x_bridge_common(ds, port, bridge, false); in xrs700x_bridge_leave()
556 static int xrs700x_hsr_join(struct dsa_switch *ds, int port, in xrs700x_hsr_join() argument
561 struct xrs700x *priv = ds->priv; in xrs700x_hsr_join()
582 dsa_hsr_foreach_port(dp, ds, hsr) { in xrs700x_hsr_join()
607 val = GENMASK(ds->num_ports - 1, 0); in xrs700x_hsr_join()
613 val &= ~BIT(dsa_upstream_port(ds, port)); in xrs700x_hsr_join()
626 ret = xrs700x_port_add_hsrsup_ipf(ds, partner->index, fwd ? port : -1); in xrs700x_hsr_join()
630 ret = xrs700x_port_add_hsrsup_ipf(ds, port, fwd ? partner->index : -1); in xrs700x_hsr_join()
641 slave = dsa_to_port(ds, hsr_pair[i])->slave; in xrs700x_hsr_join()
648 static int xrs700x_hsr_leave(struct dsa_switch *ds, int port, in xrs700x_hsr_leave() argument
652 struct xrs700x *priv = ds->priv; in xrs700x_hsr_leave()
657 dsa_hsr_foreach_port(dp, ds, hsr) { in xrs700x_hsr_leave()
675 val = GENMASK(ds->num_ports - 1, 0); in xrs700x_hsr_leave()
676 val &= ~BIT(dsa_upstream_port(ds, port)); in xrs700x_hsr_leave()
695 slave = dsa_to_port(ds, hsr_pair[i])->slave; in xrs700x_hsr_leave()
737 priv->ds->num_ports = info->num_ports; in xrs700x_detect()
750 struct dsa_switch *ds; in xrs700x_switch_alloc() local
753 ds = devm_kzalloc(base, sizeof(*ds), GFP_KERNEL); in xrs700x_switch_alloc()
754 if (!ds) in xrs700x_switch_alloc()
757 ds->dev = base; in xrs700x_switch_alloc()
765 ds->ops = &xrs700x_ops; in xrs700x_switch_alloc()
766 ds->priv = priv; in xrs700x_switch_alloc()
769 priv->ds = ds; in xrs700x_switch_alloc()
804 priv->ports = devm_kcalloc(priv->dev, priv->ds->num_ports, in xrs700x_switch_register()
809 for (i = 0; i < priv->ds->num_ports; i++) { in xrs700x_switch_register()
815 return dsa_register_switch(priv->ds); in xrs700x_switch_register()
821 dsa_unregister_switch(priv->ds); in xrs700x_switch_remove()
827 dsa_switch_shutdown(priv->ds); in xrs700x_switch_shutdown()