• Home
  • Raw
  • Download

Lines Matching refs:ds

130 		if (i == dsa_upstream_port(priv->ds, i)) {  in sja1105_init_mac_settings()
152 if (dsa_is_unused_port(priv->ds, port)) in sja1105_supports_sgmii()
185 if (dsa_is_unused_port(priv->ds, i)) in sja1105_init_mii_settings()
316 struct dsa_switch *ds = priv->ds; in sja1105_init_static_vlan() local
333 for (port = 0; port < ds->num_ports; port++) { in sja1105_init_static_vlan()
336 if (dsa_is_unused_port(ds, port)) in sja1105_init_static_vlan()
350 if (dsa_is_cpu_port(ds, port)) in sja1105_init_static_vlan()
389 unsigned int upstream = dsa_upstream_port(priv->ds, i); in sja1105_init_l2_forwarding()
481 .switchid = priv->ds->index, in sja1105_init_general_params()
499 .host_port = dsa_upstream_port(priv->ds, 0), in sja1105_init_general_params()
664 if (dsa_is_cpu_port(priv->ds, port)) in sja1105_init_l2_policing()
901 dev_err(priv->ds->dev, "Invalid speed %d\n", speed); in sja1105_sgmii_pcs_force_speed()
921 struct device *dev = priv->ds->dev; in sja1105_adjust_port_config()
1026 static void sja1105_mac_config(struct dsa_switch *ds, int port, in sja1105_mac_config() argument
1030 struct sja1105_private *priv = ds->priv; in sja1105_mac_config()
1034 dev_err(ds->dev, "Changing PHY mode to %s not supported!\n", in sja1105_mac_config()
1040 dev_err(ds->dev, "In-band AN not supported!\n"); in sja1105_mac_config()
1049 static void sja1105_mac_link_down(struct dsa_switch *ds, int port, in sja1105_mac_link_down() argument
1053 sja1105_inhibit_tx(ds->priv, BIT(port), true); in sja1105_mac_link_down()
1056 static void sja1105_mac_link_up(struct dsa_switch *ds, int port, in sja1105_mac_link_up() argument
1063 struct sja1105_private *priv = ds->priv; in sja1105_mac_link_up()
1073 static void sja1105_phylink_validate(struct dsa_switch *ds, int port, in sja1105_phylink_validate() argument
1082 struct sja1105_private *priv = ds->priv; in sja1105_phylink_validate()
1114 static int sja1105_mac_pcs_get_state(struct dsa_switch *ds, int port, in sja1105_mac_pcs_get_state() argument
1117 struct sja1105_private *priv = ds->priv; in sja1105_mac_pcs_get_state()
1136 dev_err(ds->dev, "Invalid SGMII PCS speed %lu\n", in sja1105_mac_pcs_get_state()
1260 int sja1105et_fdb_add(struct dsa_switch *ds, int port, in sja1105et_fdb_add() argument
1264 struct sja1105_private *priv = ds->priv; in sja1105et_fdb_add()
1265 struct device *dev = ds->dev; in sja1105et_fdb_add()
1345 int sja1105et_fdb_del(struct dsa_switch *ds, int port, in sja1105et_fdb_del() argument
1349 struct sja1105_private *priv = ds->priv; in sja1105et_fdb_del()
1380 int sja1105pqrs_fdb_add(struct dsa_switch *ds, int port, in sja1105pqrs_fdb_add() argument
1384 struct sja1105_private *priv = ds->priv; in sja1105pqrs_fdb_add()
1420 dev_err(ds->dev, "FDB is full, cannot add entry.\n"); in sja1105pqrs_fdb_add()
1450 dev_err(ds->dev, in sja1105pqrs_fdb_add()
1466 int sja1105pqrs_fdb_del(struct dsa_switch *ds, int port, in sja1105pqrs_fdb_del() argument
1470 struct sja1105_private *priv = ds->priv; in sja1105pqrs_fdb_del()
1503 static int sja1105_fdb_add(struct dsa_switch *ds, int port, in sja1105_fdb_add() argument
1506 struct sja1105_private *priv = ds->priv; in sja1105_fdb_add()
1520 return priv->info->fdb_add_cmd(ds, port, addr, vid); in sja1105_fdb_add()
1523 static int sja1105_fdb_del(struct dsa_switch *ds, int port, in sja1105_fdb_del() argument
1526 struct sja1105_private *priv = ds->priv; in sja1105_fdb_del()
1531 return priv->info->fdb_del_cmd(ds, port, addr, vid); in sja1105_fdb_del()
1534 static int sja1105_fdb_dump(struct dsa_switch *ds, int port, in sja1105_fdb_dump() argument
1537 struct sja1105_private *priv = ds->priv; in sja1105_fdb_dump()
1538 struct device *dev = ds->dev; in sja1105_fdb_dump()
1577 static int sja1105_mdb_prepare(struct dsa_switch *ds, int port, in sja1105_mdb_prepare() argument
1583 static void sja1105_mdb_add(struct dsa_switch *ds, int port, in sja1105_mdb_add() argument
1586 sja1105_fdb_add(ds, port, mdb->addr, mdb->vid); in sja1105_mdb_add()
1589 static int sja1105_mdb_del(struct dsa_switch *ds, int port, in sja1105_mdb_del() argument
1592 return sja1105_fdb_del(ds, port, mdb->addr, mdb->vid); in sja1105_mdb_del()
1595 static int sja1105_bridge_member(struct dsa_switch *ds, int port, in sja1105_bridge_member() argument
1599 struct sja1105_private *priv = ds->priv; in sja1105_bridge_member()
1608 if (!dsa_is_user_port(ds, i)) in sja1105_bridge_member()
1621 if (dsa_to_port(ds, i)->bridge_dev != br) in sja1105_bridge_member()
1636 static void sja1105_bridge_stp_state_set(struct dsa_switch *ds, int port, in sja1105_bridge_stp_state_set() argument
1639 struct sja1105_private *priv = ds->priv; in sja1105_bridge_stp_state_set()
1672 dev_err(ds->dev, "invalid STP state: %d\n", state); in sja1105_bridge_stp_state_set()
1680 static int sja1105_bridge_join(struct dsa_switch *ds, int port, in sja1105_bridge_join() argument
1683 return sja1105_bridge_member(ds, port, br, true); in sja1105_bridge_join()
1686 static void sja1105_bridge_leave(struct dsa_switch *ds, int port, in sja1105_bridge_leave() argument
1689 sja1105_bridge_member(ds, port, br, false); in sja1105_bridge_leave()
1723 static int sja1105_setup_tc_cbs(struct dsa_switch *ds, int port, in sja1105_setup_tc_cbs() argument
1726 struct sja1105_private *priv = ds->priv; in sja1105_setup_tc_cbs()
1806 struct dsa_switch *ds = priv->ds; in sja1105_static_config_reload() local
1833 rc = __sja1105_ptp_gettimex(ds, &now, &ptp_sts_before); in sja1105_static_config_reload()
1842 rc = __sja1105_ptp_settime(ds, 0, &ptp_sts_after); in sja1105_static_config_reload()
1857 __sja1105_ptp_adjtime(ds, now); in sja1105_static_config_reload()
1862 dev_info(priv->ds->dev, in sja1105_static_config_reload()
1920 static int sja1105_crosschip_bridge_join(struct dsa_switch *ds, in sja1105_crosschip_bridge_join() argument
1926 struct sja1105_private *priv = ds->priv; in sja1105_crosschip_bridge_join()
1932 for (port = 0; port < ds->num_ports; port++) { in sja1105_crosschip_bridge_join()
1933 if (!dsa_is_user_port(ds, port)) in sja1105_crosschip_bridge_join()
1935 if (dsa_to_port(ds, port)->bridge_dev != br) in sja1105_crosschip_bridge_join()
1956 static void sja1105_crosschip_bridge_leave(struct dsa_switch *ds, in sja1105_crosschip_bridge_leave() argument
1963 struct sja1105_private *priv = ds->priv; in sja1105_crosschip_bridge_leave()
1969 for (port = 0; port < ds->num_ports; port++) { in sja1105_crosschip_bridge_leave()
1970 if (!dsa_is_user_port(ds, port)) in sja1105_crosschip_bridge_leave()
1972 if (dsa_to_port(ds, port)->bridge_dev != br) in sja1105_crosschip_bridge_leave()
1985 static int sja1105_setup_8021q_tagging(struct dsa_switch *ds, bool enabled) in sja1105_setup_8021q_tagging() argument
1987 struct sja1105_private *priv = ds->priv; in sja1105_setup_8021q_tagging()
1994 dev_info(ds->dev, "%s switch tagging\n", in sja1105_setup_8021q_tagging()
2000 sja1105_get_tag_protocol(struct dsa_switch *ds, int port, in sja1105_get_tag_protocol() argument
2113 dev_dbg(priv->ds->dev, "Deleting VLAN %d\n", i); in sja1105_commit_vlans()
2128 dev_dbg(priv->ds->dev, "Updating VLAN %d\n", i); in sja1105_commit_vlans()
2283 int upstream = dsa_upstream_port(priv->ds, v->port); in sja1105_build_subvlans()
2291 if (!dsa_is_user_port(priv->ds, v->port)) in sja1105_build_subvlans()
2300 dev_err(priv->ds->dev, "No more free subvlans\n"); in sja1105_build_subvlans()
2305 rx_vid = dsa_8021q_rx_vid_subvlan(priv->ds, v->port, subvlan); in sja1105_build_subvlans()
2343 dev_err(priv->ds->dev, "No more retagging rules\n"); in sja1105_build_subvlans()
2378 struct sja1105_private *other_priv = c->other_ctx->ds->priv; in sja1105_build_crosschip_subvlans()
2386 if (!dsa_is_user_port(priv->ds, c->port)) in sja1105_build_crosschip_subvlans()
2388 if (!dsa_is_user_port(c->other_ctx->ds, c->other_port)) in sja1105_build_crosschip_subvlans()
2434 dev_err(priv->ds->dev, "Failed to allocate memory\n"); in sja1105_build_crosschip_subvlans()
2448 struct sja1105_private *other_priv = tmp->other_ctx->ds->priv; in sja1105_build_crosschip_subvlans()
2449 int upstream = dsa_upstream_port(priv->ds, tmp->port); in sja1105_build_crosschip_subvlans()
2465 rx_vid = dsa_8021q_rx_vid_subvlan(tmp->other_ctx->ds, in sja1105_build_crosschip_subvlans()
2507 dev_err(priv->ds->dev, "No more retagging rules\n"); in sja1105_build_crosschip_subvlans()
2555 dev_err(priv->ds->dev, "Failed to allocate memory\n"); in sja1105_notify_crosschip_switches()
2564 struct sja1105_private *other_priv = s->other_ctx->ds->priv; in sja1105_notify_crosschip_switches()
2609 for (i = 0; i < priv->ds->num_ports; i++) in sja1105_build_vlan_table()
2649 for (i = 0; i < priv->ds->num_ports; i++) in sja1105_build_vlan_table()
2665 static int sja1105_vlan_prepare(struct dsa_switch *ds, int port, in sja1105_vlan_prepare() argument
2668 struct sja1105_private *priv = ds->priv; in sja1105_vlan_prepare()
2680 dev_err(ds->dev, "Range 1024-3071 reserved for dsa_8021q operation\n"); in sja1105_vlan_prepare()
2692 int sja1105_vlan_filtering(struct dsa_switch *ds, int port, bool enabled, in sja1105_vlan_filtering() argument
2697 struct sja1105_private *priv = ds->priv; in sja1105_vlan_filtering()
2708 dev_err(ds->dev, in sja1105_vlan_filtering()
2727 for (port = 0; port < ds->num_ports; port++) { in sja1105_vlan_filtering()
2794 dev_err(ds->dev, "Failed to change VLAN Ethertype\n"); in sja1105_vlan_filtering()
2801 return sja1105_setup_8021q_tagging(ds, want_tagging); in sja1105_vlan_filtering()
2807 static int sja1105_vlan_add_one(struct dsa_switch *ds, int port, u16 vid, in sja1105_vlan_add_one() argument
2833 dev_err(ds->dev, "Out of memory while storing VLAN\n"); in sja1105_vlan_add_one()
2847 static int sja1105_vlan_del_one(struct dsa_switch *ds, int port, u16 vid, in sja1105_vlan_del_one() argument
2863 static void sja1105_vlan_add(struct dsa_switch *ds, int port, in sja1105_vlan_add() argument
2866 struct sja1105_private *priv = ds->priv; in sja1105_vlan_add()
2872 rc = sja1105_vlan_add_one(ds, port, vid, vlan->flags, in sja1105_vlan_add()
2885 dev_err(ds->dev, "Failed to build VLAN table: %d\n", rc); in sja1105_vlan_add()
2888 static int sja1105_vlan_del(struct dsa_switch *ds, int port, in sja1105_vlan_del() argument
2891 struct sja1105_private *priv = ds->priv; in sja1105_vlan_del()
2897 rc = sja1105_vlan_del_one(ds, port, vid, &priv->bridge_vlans); in sja1105_vlan_del()
2908 static int sja1105_dsa_8021q_vlan_add(struct dsa_switch *ds, int port, u16 vid, in sja1105_dsa_8021q_vlan_add() argument
2911 struct sja1105_private *priv = ds->priv; in sja1105_dsa_8021q_vlan_add()
2914 rc = sja1105_vlan_add_one(ds, port, vid, flags, &priv->dsa_8021q_vlans); in sja1105_dsa_8021q_vlan_add()
2921 static int sja1105_dsa_8021q_vlan_del(struct dsa_switch *ds, int port, u16 vid) in sja1105_dsa_8021q_vlan_del() argument
2923 struct sja1105_private *priv = ds->priv; in sja1105_dsa_8021q_vlan_del()
2926 rc = sja1105_vlan_del_one(ds, port, vid, &priv->dsa_8021q_vlans); in sja1105_dsa_8021q_vlan_del()
2950 static int sja1105_setup(struct dsa_switch *ds) in sja1105_setup() argument
2953 struct sja1105_private *priv = ds->priv; in sja1105_setup()
2958 dev_err(ds->dev, "Failed to parse DT: %d\n", rc); in sja1105_setup()
2967 dev_err(ds->dev, "RGMII delay not supported\n"); in sja1105_setup()
2971 rc = sja1105_ptp_clock_register(ds); in sja1105_setup()
2973 dev_err(ds->dev, "Failed to register PTP clock: %d\n", rc); in sja1105_setup()
2979 dev_err(ds->dev, "Failed to load static config: %d\n", rc); in sja1105_setup()
2985 dev_err(ds->dev, "Failed to configure MII clocking: %d\n", rc); in sja1105_setup()
2996 ds->vlan_filtering_is_global = true; in sja1105_setup()
2999 ds->num_tx_queues = SJA1105_NUM_TC; in sja1105_setup()
3001 ds->mtu_enforcement_ingress = true; in sja1105_setup()
3003 ds->configure_vlan_while_not_filtering = true; in sja1105_setup()
3005 rc = sja1105_devlink_setup(ds); in sja1105_setup()
3014 rc = sja1105_setup_8021q_tagging(ds, true); in sja1105_setup()
3022 sja1105_devlink_teardown(ds); in sja1105_setup()
3024 sja1105_ptp_clock_unregister(ds); in sja1105_setup()
3031 static void sja1105_teardown(struct dsa_switch *ds) in sja1105_teardown() argument
3033 struct sja1105_private *priv = ds->priv; in sja1105_teardown()
3040 if (!dsa_is_user_port(ds, port)) in sja1105_teardown()
3047 sja1105_devlink_teardown(ds); in sja1105_teardown()
3048 sja1105_flower_teardown(ds); in sja1105_teardown()
3049 sja1105_tas_teardown(ds); in sja1105_teardown()
3050 sja1105_ptp_clock_unregister(ds); in sja1105_teardown()
3064 static int sja1105_port_enable(struct dsa_switch *ds, int port, in sja1105_port_enable() argument
3069 if (!dsa_is_user_port(ds, port)) in sja1105_port_enable()
3072 slave = dsa_to_port(ds, port)->slave; in sja1105_port_enable()
3079 static void sja1105_port_disable(struct dsa_switch *ds, int port) in sja1105_port_disable() argument
3081 struct sja1105_private *priv = ds->priv; in sja1105_port_disable()
3084 if (!dsa_is_user_port(ds, port)) in sja1105_port_disable()
3091 static int sja1105_mgmt_xmit(struct dsa_switch *ds, int port, int slot, in sja1105_mgmt_xmit() argument
3095 struct sja1105_private *priv = ds->priv; in sja1105_mgmt_xmit()
3116 dsa_enqueue_skb(skb, dsa_to_port(ds, port)->slave); in sja1105_mgmt_xmit()
3123 dev_err_ratelimited(priv->ds->dev, in sja1105_mgmt_xmit()
3143 dev_err_ratelimited(priv->ds->dev, "xmit timed out\n"); in sja1105_mgmt_xmit()
3171 sja1105_mgmt_xmit(priv->ds, port, 0, skb, !!clone); in sja1105_port_deferred_xmit()
3175 sja1105_ptp_txtstamp_skb(priv->ds, port, clone); in sja1105_port_deferred_xmit()
3184 static int sja1105_set_ageing_time(struct dsa_switch *ds, in sja1105_set_ageing_time() argument
3188 struct sja1105_private *priv = ds->priv; in sja1105_set_ageing_time()
3205 static int sja1105_change_mtu(struct dsa_switch *ds, int port, int new_mtu) in sja1105_change_mtu() argument
3208 struct sja1105_private *priv = ds->priv; in sja1105_change_mtu()
3212 if (dsa_is_cpu_port(ds, port)) in sja1105_change_mtu()
3225 static int sja1105_get_max_mtu(struct dsa_switch *ds, int port) in sja1105_get_max_mtu() argument
3230 static int sja1105_port_setup_tc(struct dsa_switch *ds, int port, in sja1105_port_setup_tc() argument
3236 return sja1105_setup_tc_taprio(ds, port, type_data); in sja1105_port_setup_tc()
3238 return sja1105_setup_tc_cbs(ds, port, type_data); in sja1105_port_setup_tc()
3267 dev_err(priv->ds->dev, in sja1105_mirror_apply()
3307 static int sja1105_mirror_add(struct dsa_switch *ds, int port, in sja1105_mirror_add() argument
3311 return sja1105_mirror_apply(ds->priv, port, mirror->to_local_port, in sja1105_mirror_add()
3315 static void sja1105_mirror_del(struct dsa_switch *ds, int port, in sja1105_mirror_del() argument
3318 sja1105_mirror_apply(ds->priv, port, mirror->to_local_port, in sja1105_mirror_del()
3322 static int sja1105_port_policer_add(struct dsa_switch *ds, int port, in sja1105_port_policer_add() argument
3326 struct sja1105_private *priv = ds->priv; in sja1105_port_policer_add()
3341 static void sja1105_port_policer_del(struct dsa_switch *ds, int port) in sja1105_port_policer_del() argument
3344 struct sja1105_private *priv = ds->priv; in sja1105_port_policer_del()
3458 struct dsa_switch *ds; in sja1105_probe() local
3502 ds = devm_kzalloc(dev, sizeof(*ds), GFP_KERNEL); in sja1105_probe()
3503 if (!ds) in sja1105_probe()
3506 ds->dev = dev; in sja1105_probe()
3507 ds->num_ports = SJA1105_NUM_PORTS; in sja1105_probe()
3508 ds->ops = &sja1105_switch_ops; in sja1105_probe()
3509 ds->priv = priv; in sja1105_probe()
3510 priv->ds = ds; in sja1105_probe()
3524 priv->dsa_8021q_ctx->ds = ds; in sja1105_probe()
3530 sja1105_tas_setup(ds); in sja1105_probe()
3531 sja1105_flower_setup(ds); in sja1105_probe()
3533 rc = dsa_register_switch(priv->ds); in sja1105_probe()
3550 struct dsa_port *dp = dsa_to_port(ds, port); in sja1105_probe()
3554 if (!dsa_is_user_port(ds, port)) in sja1105_probe()
3566 dev_err(ds->dev, in sja1105_probe()
3584 if (!dsa_is_user_port(ds, port)) in sja1105_probe()
3591 dsa_unregister_switch(ds); in sja1105_probe()
3600 dsa_unregister_switch(priv->ds); in sja1105_remove()