Lines Matching refs:ds

86 static int sja1105_drop_untagged(struct dsa_switch *ds, int port, bool drop)
88 struct sja1105_private *priv = ds->priv;
117 static int sja1105_commit_pvid(struct dsa_switch *ds, int port)
119 struct dsa_port *dp = dsa_to_port(ds, port);
121 struct sja1105_private *priv = ds->priv;
152 if (dsa_is_cpu_port(ds, port) || dsa_is_dsa_port(ds, port))
155 return sja1105_drop_untagged(ds, port, drop_untagged);
200 struct dsa_switch *ds = priv->ds;
221 list_for_each_entry(dp, &ds->dst->ports, list) {
222 if (dp->ds != ds)
251 struct dsa_switch *ds = priv->ds;
273 for (i = 0; i < ds->num_ports; i++) {
276 if (dsa_is_unused_port(priv->ds, i))
377 for (port = 0; port < priv->ds->num_ports; port++)
378 if (!dsa_is_unused_port(priv->ds, port))
414 struct dsa_switch *ds = priv->ds;
419 for (port = 0; port < ds->num_ports; port++)
420 if (!dsa_is_unused_port(ds, port))
425 for (port = 0; port < ds->num_ports; port++) {
426 if (dsa_is_unused_port(ds, port))
472 struct dsa_switch *ds = priv->ds;
489 for (port = 0; port < ds->num_ports; port++) {
490 if (dsa_is_unused_port(ds, port))
497 if (dsa_is_cpu_port(ds, port) || dsa_is_dsa_port(ds, port)) {
510 struct dsa_switch *ds = priv->ds;
537 for (port = 0; port < ds->num_ports; port++) {
538 if (dsa_is_unused_port(ds, port))
548 for (from = 0; from < ds->num_ports; from++) {
549 if (!dsa_is_user_port(ds, from))
552 for (to = 0; to < ds->num_ports; to++) {
553 if (!dsa_is_cpu_port(ds, to) &&
554 !dsa_is_dsa_port(ds, to))
568 for (from = 0; from < ds->num_ports; from++) {
569 if (!dsa_is_cpu_port(ds, from) && !dsa_is_dsa_port(ds, from))
572 for (to = 0; to < ds->num_ports; to++) {
573 if (dsa_is_unused_port(ds, to))
594 dst = ds->dst;
597 if (dl->dp->ds != ds || dl->link_dp->cpu_dp == dl->dp->cpu_dp)
601 to = dsa_upstream_port(ds, from);
603 dev_warn(ds->dev,
616 for (port = 0; port < ds->num_ports; port++) {
617 if (dsa_is_unused_port(ds, port))
628 for (port = 0; port < ds->num_ports; port++) {
629 if (dsa_is_unused_port(ds, port))
632 l2fwd[ds->num_ports + tc].vlan_pmap[port] = tc;
635 l2fwd[ds->num_ports + tc].type_egrpcp2outputq = true;
644 struct dsa_switch *ds = priv->ds;
669 for (port = 0; port < ds->num_ports; port++) {
670 if (dsa_is_unused_port(ds, port))
793 struct dsa_switch *ds = priv->ds;
800 general_params->host_port = ds->num_ports;
813 general_params->casc_port = ds->num_ports;
815 for (port = 0; port < ds->num_ports; port++) {
816 bool is_upstream = dsa_is_upstream_port(ds, port);
817 bool is_dsa_link = dsa_is_dsa_port(ds, port);
823 if (general_params->host_port == ds->num_ports) {
826 dev_err(ds->dev,
837 } else if (general_params->casc_port == ds->num_ports) {
840 dev_err(ds->dev,
848 if (general_params->host_port == ds->num_ports) {
849 dev_err(ds->dev, "No host port configured\n");
861 .switchid = priv->ds->index,
875 .mirr_port = priv->ds->num_ports,
1009 struct dsa_switch *ds = priv->ds;
1031 for (port = 0; port < ds->num_ports; port++) {
1032 int mcast = (ds->num_ports * (SJA1105_NUM_TC + 1)) + port;
1033 int bcast = (ds->num_ports * SJA1105_NUM_TC) + port;
1045 for (port = 0; port < ds->num_ports; port++) {
1048 if (dsa_is_cpu_port(ds, port) || dsa_is_dsa_port(ds, port))
1284 struct device *dev = priv->ds->dev;
1359 sja1105_mac_select_pcs(struct dsa_switch *ds, int port, phy_interface_t iface)
1361 struct sja1105_private *priv = ds->priv;
1370 static void sja1105_mac_link_down(struct dsa_switch *ds, int port,
1374 sja1105_inhibit_tx(ds->priv, BIT(port), true);
1377 static void sja1105_mac_link_up(struct dsa_switch *ds, int port,
1384 struct sja1105_private *priv = ds->priv;
1391 static void sja1105_phylink_get_caps(struct dsa_switch *ds, int port,
1394 struct sja1105_private *priv = ds->priv;
1548 int sja1105et_fdb_add(struct dsa_switch *ds, int port,
1552 struct sja1105_private *priv = ds->priv;
1553 struct device *dev = ds->dev;
1633 int sja1105et_fdb_del(struct dsa_switch *ds, int port,
1637 struct sja1105_private *priv = ds->priv;
1668 int sja1105pqrs_fdb_add(struct dsa_switch *ds, int port,
1672 struct sja1105_private *priv = ds->priv;
1713 dev_err(ds->dev, "FDB is full, cannot add entry.\n");
1743 dev_err(ds->dev,
1759 int sja1105pqrs_fdb_del(struct dsa_switch *ds, int port,
1763 struct sja1105_private *priv = ds->priv;
1796 static int sja1105_fdb_add(struct dsa_switch *ds, int port,
1800 struct sja1105_private *priv = ds->priv;
1817 rc = priv->info->fdb_add_cmd(ds, port, addr, vid);
1823 static int __sja1105_fdb_del(struct dsa_switch *ds, int port,
1827 struct sja1105_private *priv = ds->priv;
1842 return priv->info->fdb_del_cmd(ds, port, addr, vid);
1845 static int sja1105_fdb_del(struct dsa_switch *ds, int port,
1849 struct sja1105_private *priv = ds->priv;
1853 rc = __sja1105_fdb_del(ds, port, addr, vid, db);
1859 static int sja1105_fdb_dump(struct dsa_switch *ds, int port,
1862 struct sja1105_private *priv = ds->priv;
1863 struct device *dev = ds->dev;
1908 static void sja1105_fast_age(struct dsa_switch *ds, int port)
1910 struct dsa_port *dp = dsa_to_port(ds, port);
1911 struct sja1105_private *priv = ds->priv;
1934 dev_err(ds->dev, "Failed to read FDB: %pe\n",
1948 rc = __sja1105_fdb_del(ds, port, macaddr, l2_lookup.vlanid, db);
1950 dev_err(ds->dev,
1960 static int sja1105_mdb_add(struct dsa_switch *ds, int port,
1964 return sja1105_fdb_add(ds, port, mdb->addr, mdb->vid, db);
1967 static int sja1105_mdb_del(struct dsa_switch *ds, int port,
1971 return sja1105_fdb_del(ds, port, mdb->addr, mdb->vid, db);
1983 struct dsa_switch *ds = priv->ds;
1988 for (from = 0; from < ds->num_ports; from++) {
1991 for (to = 0; to < priv->ds->num_ports; to++) {
2018 static int sja1105_bridge_member(struct dsa_switch *ds, int port,
2022 struct sja1105_private *priv = ds->priv;
2027 for (i = 0; i < ds->num_ports; i++) {
2031 if (!dsa_is_user_port(ds, i))
2044 if (!dsa_port_offloads_bridge(dsa_to_port(ds, i), &bridge))
2060 rc = sja1105_commit_pvid(ds, port);
2067 static void sja1105_bridge_stp_state_set(struct dsa_switch *ds, int port,
2070 struct dsa_port *dp = dsa_to_port(ds, port);
2071 struct sja1105_private *priv = ds->priv;
2104 dev_err(ds->dev, "invalid STP state: %d\n", state);
2112 static int sja1105_bridge_join(struct dsa_switch *ds, int port,
2119 rc = sja1105_bridge_member(ds, port, bridge, true);
2123 rc = dsa_tag_8021q_bridge_join(ds, port, bridge);
2125 sja1105_bridge_member(ds, port, bridge, false);
2134 static void sja1105_bridge_leave(struct dsa_switch *ds, int port,
2137 dsa_tag_8021q_bridge_leave(ds, port, bridge);
2138 sja1105_bridge_member(ds, port, bridge, false);
2197 static int sja1105_setup_tc_cbs(struct dsa_switch *ds, int port,
2200 struct sja1105_private *priv = ds->priv;
2294 struct dsa_switch *ds = priv->ds;
2310 for (i = 0; i < ds->num_ports; i++) {
2323 rc = __sja1105_ptp_gettimex(ds, &now, &ptp_sts_before);
2336 rc = __sja1105_ptp_settime(ds, 0, &ptp_sts_after);
2353 __sja1105_ptp_adjtime(ds, now);
2357 dev_info(priv->ds->dev,
2371 for (i = 0; i < ds->num_ports; i++) {
2419 sja1105_get_tag_protocol(struct dsa_switch *ds, int port,
2422 struct sja1105_private *priv = ds->priv;
2431 int sja1105_vlan_filtering(struct dsa_switch *ds, int port, bool enabled,
2435 struct sja1105_private *priv = ds->priv;
2466 for (port = 0; port < ds->num_ports; port++) {
2467 if (dsa_is_unused_port(ds, port))
2470 rc = sja1105_commit_pvid(ds, port);
2562 static int sja1105_bridge_vlan_add(struct dsa_switch *ds, int port,
2566 struct sja1105_private *priv = ds->priv;
2579 if (dsa_is_cpu_port(ds, port) || dsa_is_dsa_port(ds, port))
2589 return sja1105_commit_pvid(ds, port);
2592 static int sja1105_bridge_vlan_del(struct dsa_switch *ds, int port,
2595 struct sja1105_private *priv = ds->priv;
2605 return sja1105_commit_pvid(ds, port);
2608 static int sja1105_dsa_8021q_vlan_add(struct dsa_switch *ds, int port, u16 vid,
2611 struct sja1105_private *priv = ds->priv;
2618 if (dsa_is_user_port(ds, port))
2628 return sja1105_commit_pvid(ds, port);
2631 static int sja1105_dsa_8021q_vlan_del(struct dsa_switch *ds, int port, u16 vid)
2633 struct sja1105_private *priv = ds->priv;
2638 static int sja1105_prechangeupper(struct dsa_switch *ds, int port,
2643 struct dsa_switch_tree *dst = ds->dst;
2666 static int sja1105_mgmt_xmit(struct dsa_switch *ds, int port, int slot,
2670 struct sja1105_private *priv = ds->priv;
2691 dsa_enqueue_skb(skb, dsa_to_port(ds, port)->slave);
2698 dev_err_ratelimited(priv->ds->dev,
2718 dev_err_ratelimited(priv->ds->dev, "xmit timed out\n");
2735 struct dsa_switch *ds = xmit_work->dp->ds;
2736 struct sja1105_private *priv = ds->priv;
2743 sja1105_mgmt_xmit(ds, port, 0, skb, !!clone);
2747 sja1105_ptp_txtstamp_skb(ds, port, clone);
2754 static int sja1105_connect_tag_protocol(struct dsa_switch *ds,
2757 struct sja1105_private *priv = ds->priv;
2763 tagger_data = sja1105_tagger_data(ds);
2773 static int sja1105_set_ageing_time(struct dsa_switch *ds,
2777 struct sja1105_private *priv = ds->priv;
2794 static int sja1105_change_mtu(struct dsa_switch *ds, int port, int new_mtu)
2797 struct sja1105_private *priv = ds->priv;
2801 if (dsa_is_cpu_port(ds, port) || dsa_is_dsa_port(ds, port))
2814 static int sja1105_get_max_mtu(struct dsa_switch *ds, int port)
2819 static int sja1105_port_setup_tc(struct dsa_switch *ds, int port,
2825 return sja1105_setup_tc_taprio(ds, port, type_data);
2827 return sja1105_setup_tc_cbs(ds, port, type_data);
2844 struct dsa_switch *ds = priv->ds;
2855 already_enabled = (general_params->mirr_port != ds->num_ports);
2857 dev_err(priv->ds->dev,
2869 for (port = 0; port < ds->num_ports; port++) {
2877 new_mirr_port = ds->num_ports;
2897 static int sja1105_mirror_add(struct dsa_switch *ds, int port,
2901 return sja1105_mirror_apply(ds->priv, port, mirror->to_local_port,
2905 static void sja1105_mirror_del(struct dsa_switch *ds, int port,
2908 sja1105_mirror_apply(ds->priv, port, mirror->to_local_port,
2912 static int sja1105_port_policer_add(struct dsa_switch *ds, int port,
2916 struct sja1105_private *priv = ds->priv;
2931 static void sja1105_port_policer_del(struct dsa_switch *ds, int port)
2934 struct sja1105_private *priv = ds->priv;
3016 static int sja1105_port_pre_bridge_flags(struct dsa_switch *ds, int port,
3020 struct sja1105_private *priv = ds->priv;
3041 static int sja1105_port_bridge_flags(struct dsa_switch *ds, int port,
3045 struct sja1105_private *priv = ds->priv;
3088 static int sja1105_setup(struct dsa_switch *ds)
3090 struct sja1105_private *priv = ds->priv;
3096 dev_err(ds->dev,
3106 dev_err(ds->dev, "Failed to load static config: %d\n", rc);
3114 dev_err(ds->dev,
3121 sja1105_tas_setup(ds);
3122 sja1105_flower_setup(ds);
3124 rc = sja1105_ptp_clock_register(ds);
3126 dev_err(ds->dev, "Failed to register PTP clock: %d\n", rc);
3130 rc = sja1105_mdiobus_register(ds);
3132 dev_err(ds->dev, "Failed to register MDIO bus: %pe\n",
3137 rc = sja1105_devlink_setup(ds);
3142 rc = dsa_tag_8021q_register(ds, htons(ETH_P_8021Q));
3155 ds->vlan_filtering_is_global = true;
3156 ds->untag_bridge_pvid = true;
3157 ds->fdb_isolation = true;
3159 ds->max_num_bridges = 7;
3162 ds->num_tx_queues = SJA1105_NUM_TC;
3164 ds->mtu_enforcement_ingress = true;
3165 ds->assisted_learning_on_cpu_port = true;
3170 sja1105_devlink_teardown(ds);
3172 sja1105_mdiobus_unregister(ds);
3174 sja1105_ptp_clock_unregister(ds);
3176 sja1105_flower_teardown(ds);
3177 sja1105_tas_teardown(ds);
3184 static void sja1105_teardown(struct dsa_switch *ds)
3186 struct sja1105_private *priv = ds->priv;
3189 dsa_tag_8021q_unregister(ds);
3192 sja1105_devlink_teardown(ds);
3193 sja1105_mdiobus_unregister(ds);
3194 sja1105_ptp_clock_unregister(ds);
3195 sja1105_flower_teardown(ds);
3196 sja1105_tas_teardown(ds);
3302 struct dsa_switch *ds;
3370 ds = devm_kzalloc(dev, sizeof(*ds), GFP_KERNEL);
3371 if (!ds)
3374 ds->dev = dev;
3375 ds->num_ports = priv->info->num_ports;
3376 ds->ops = &sja1105_switch_ops;
3377 ds->priv = priv;
3378 priv->ds = ds;
3388 dev_err(ds->dev, "Failed to parse DT: %d\n", rc);
3400 return dsa_register_switch(priv->ds);
3410 dsa_unregister_switch(priv->ds);
3420 dsa_switch_shutdown(priv->ds);