arch/mips/generic/board-ocelot.c
75
MIPS_MACHINE(ocelot) = {
drivers/net/dsa/ocelot/felix.c
1001
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1003
if (port == ocelot->npi)
drivers/net/dsa/ocelot/felix.c
1004
port = ocelot->num_phys_ports;
drivers/net/dsa/ocelot/felix.c
1006
ocelot_port_bridge_flags(ocelot, port, val);
drivers/net/dsa/ocelot/felix.c
1015
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1017
return ocelot_port_bridge_join(ocelot, port, bridge.dev, bridge.num,
drivers/net/dsa/ocelot/felix.c
1024
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1026
ocelot_port_bridge_leave(ocelot, port, bridge.dev);
drivers/net/dsa/ocelot/felix.c
1034
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1037
err = ocelot_port_lag_join(ocelot, port, lag.dev, info, extack);
drivers/net/dsa/ocelot/felix.c
1051
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1053
ocelot_port_lag_leave(ocelot, port, lag.dev);
drivers/net/dsa/ocelot/felix.c
106
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1065
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1067
ocelot_port_lag_change(ocelot, port, dp->lag_tx_enabled);
drivers/net/dsa/ocelot/felix.c
1076
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1087
if (port == ocelot->npi)
drivers/net/dsa/ocelot/felix.c
1090
return ocelot_vlan_prepare(ocelot, port, vlan->vid,
drivers/net/dsa/ocelot/felix.c
1099
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
110
key_length = ocelot->vcap[VCAP_ES0].keys[VCAP_ES0_IGR_PORT].length;
drivers/net/dsa/ocelot/felix.c
1104
err = ocelot_port_vlan_filtering(ocelot, port, enabled, extack);
drivers/net/dsa/ocelot/felix.c
1108
felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
1123
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1131
return ocelot_vlan_add(ocelot, port, vlan->vid,
drivers/net/dsa/ocelot/felix.c
1139
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1141
return ocelot_vlan_del(ocelot, port, vlan->vid);
drivers/net/dsa/ocelot/felix.c
1147
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1153
__set_bit(ocelot->ports[port]->phy_mode,
drivers/net/dsa/ocelot/felix.c
1155
if (ocelot->ports[port]->phy_mode == PHY_INTERFACE_MODE_USXGMII)
drivers/net/dsa/ocelot/felix.c
116
cookie = OCELOT_VCAP_ES0_TAG_8021Q_RXVLAN(ocelot, port, upstream);
drivers/net/dsa/ocelot/felix.c
1165
struct ocelot *ocelot = dp->ds->priv;
drivers/net/dsa/ocelot/felix.c
1169
felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
1172
felix->info->phylink_mac_config(ocelot, port, mode, state);
drivers/net/dsa/ocelot/felix.c
1180
struct ocelot *ocelot = dp->ds->priv;
drivers/net/dsa/ocelot/felix.c
1185
felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
1198
struct ocelot *ocelot = dp->ds->priv;
drivers/net/dsa/ocelot/felix.c
1202
felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
1204
ocelot_phylink_mac_link_down(ocelot, port, link_an_mode, interface,
drivers/net/dsa/ocelot/felix.c
1216
struct ocelot *ocelot = dp->ds->priv;
drivers/net/dsa/ocelot/felix.c
1220
felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
1222
ocelot_phylink_mac_link_up(ocelot, port, phydev, link_an_mode,
drivers/net/dsa/ocelot/felix.c
1227
felix->info->port_sched_speed_set(ocelot, port, speed);
drivers/net/dsa/ocelot/felix.c
1234
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1235
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
1240
if (ocelot->npi >= 0) {
drivers/net/dsa/ocelot/felix.c
1243
if (felix_cpu_port_for_conduit(ds, conduit) != ocelot->npi) {
drivers/net/dsa/ocelot/felix.c
1258
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1259
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
1270
static void felix_port_qos_map_init(struct ocelot *ocelot, int port)
drivers/net/dsa/ocelot/felix.c
1274
ocelot_rmw_gix(ocelot,
drivers/net/dsa/ocelot/felix.c
1281
ocelot_rmw_ix(ocelot,
drivers/net/dsa/ocelot/felix.c
1294
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1296
ocelot_port_get_stats64(ocelot, port, stats);
drivers/net/dsa/ocelot/felix.c
1302
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1304
ocelot_port_get_pause_stats(ocelot, port, pause_stats);
drivers/net/dsa/ocelot/felix.c
1311
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1313
ocelot_port_get_rmon_stats(ocelot, port, rmon_stats, ranges);
drivers/net/dsa/ocelot/felix.c
1319
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1321
ocelot_port_get_eth_ctrl_stats(ocelot, port, ctrl_stats);
drivers/net/dsa/ocelot/felix.c
1327
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1329
ocelot_port_get_eth_mac_stats(ocelot, port, mac_stats);
drivers/net/dsa/ocelot/felix.c
1335
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1337
ocelot_port_get_eth_phy_stats(ocelot, port, phy_stats);
drivers/net/dsa/ocelot/felix.c
1343
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1345
ocelot_port_get_ts_stats(ocelot, port, ts_stats);
drivers/net/dsa/ocelot/felix.c
1351
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1353
return ocelot_get_strings(ocelot, port, stringset, data);
drivers/net/dsa/ocelot/felix.c
1358
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1360
ocelot_get_ethtool_stats(ocelot, port, data);
drivers/net/dsa/ocelot/felix.c
1365
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1367
return ocelot_get_sset_count(ocelot, port, sset);
drivers/net/dsa/ocelot/felix.c
1373
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1375
return ocelot_get_ts_info(ocelot, port, info);
drivers/net/dsa/ocelot/felix.c
1402
struct device *dev = felix->ocelot.dev;
drivers/net/dsa/ocelot/felix.c
142
err = ocelot_vcap_filter_add(ocelot, outer_tagging_rule, NULL);
drivers/net/dsa/ocelot/felix.c
1445
struct device *dev = felix->ocelot.dev;
drivers/net/dsa/ocelot/felix.c
1469
struct ocelot *ocelot = &felix->ocelot;
drivers/net/dsa/ocelot/felix.c
1478
return dev_get_regmap(ocelot->dev->parent, resource_name);
drivers/net/dsa/ocelot/felix.c
1488
return ocelot_regmap_init(ocelot, &res);
drivers/net/dsa/ocelot/felix.c
1519
struct ocelot *ocelot = &felix->ocelot;
drivers/net/dsa/ocelot/felix.c
1524
ocelot->num_phys_ports = num_phys_ports;
drivers/net/dsa/ocelot/felix.c
1525
ocelot->ports = devm_kcalloc(ocelot->dev, num_phys_ports,
drivers/net/dsa/ocelot/felix.c
1527
if (!ocelot->ports)
drivers/net/dsa/ocelot/felix.c
1530
ocelot->map = felix->info->map;
drivers/net/dsa/ocelot/felix.c
1531
ocelot->num_mact_rows = felix->info->num_mact_rows;
drivers/net/dsa/ocelot/felix.c
1532
ocelot->vcap = felix->info->vcap;
drivers/net/dsa/ocelot/felix.c
1533
ocelot->vcap_pol.base = felix->info->vcap_pol_base;
drivers/net/dsa/ocelot/felix.c
1534
ocelot->vcap_pol.max = felix->info->vcap_pol_max;
drivers/net/dsa/ocelot/felix.c
1535
ocelot->vcap_pol.base2 = felix->info->vcap_pol_base2;
drivers/net/dsa/ocelot/felix.c
1536
ocelot->vcap_pol.max2 = felix->info->vcap_pol_max2;
drivers/net/dsa/ocelot/felix.c
1537
ocelot->ops = felix->info->ops;
drivers/net/dsa/ocelot/felix.c
1538
ocelot->npi_inj_prefix = OCELOT_TAG_PREFIX_SHORT;
drivers/net/dsa/ocelot/felix.c
1539
ocelot->npi_xtr_prefix = OCELOT_TAG_PREFIX_SHORT;
drivers/net/dsa/ocelot/felix.c
154
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1540
ocelot->devlink = felix->ds->devlink;
drivers/net/dsa/ocelot/felix.c
1555
dev_err(ocelot->dev,
drivers/net/dsa/ocelot/felix.c
1562
ocelot->targets[i] = target;
drivers/net/dsa/ocelot/felix.c
1565
err = ocelot_regfields_init(ocelot, felix->info->regfields);
drivers/net/dsa/ocelot/felix.c
1567
dev_err(ocelot->dev, "failed to init reg fields map\n");
drivers/net/dsa/ocelot/felix.c
157
block_vcap_es0 = &ocelot->block[VCAP_ES0];
drivers/net/dsa/ocelot/felix.c
1575
ocelot_port = devm_kzalloc(ocelot->dev,
drivers/net/dsa/ocelot/felix.c
1579
dev_err(ocelot->dev,
drivers/net/dsa/ocelot/felix.c
158
cookie = OCELOT_VCAP_ES0_TAG_8021Q_RXVLAN(ocelot, port, upstream);
drivers/net/dsa/ocelot/felix.c
1587
dev_err(ocelot->dev,
drivers/net/dsa/ocelot/felix.c
1595
ocelot_port->ocelot = ocelot;
drivers/net/dsa/ocelot/felix.c
1598
ocelot->ports[port] = ocelot_port;
drivers/net/dsa/ocelot/felix.c
1604
err = felix->info->mdio_bus_alloc(ocelot);
drivers/net/dsa/ocelot/felix.c
1612
static void ocelot_port_purge_txtstamp_skb(struct ocelot *ocelot, int port,
drivers/net/dsa/ocelot/felix.c
1615
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/dsa/ocelot/felix.c
1648
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
165
return ocelot_vcap_filter_del(ocelot, outer_tagging_rule);
drivers/net/dsa/ocelot/felix.c
1652
ocelot_lock_inj_grp(ocelot, 0);
drivers/net/dsa/ocelot/felix.c
1655
if (ocelot_can_inject(ocelot, 0))
drivers/net/dsa/ocelot/felix.c
1662
ocelot_unlock_inj_grp(ocelot, 0);
drivers/net/dsa/ocelot/felix.c
1663
dev_err(ocelot->dev, "port %d failed to inject skb\n",
drivers/net/dsa/ocelot/felix.c
1665
ocelot_port_purge_txtstamp_skb(ocelot, port, skb);
drivers/net/dsa/ocelot/felix.c
1670
ocelot_port_inject_frame(ocelot, port, 0, rew_op, skb);
drivers/net/dsa/ocelot/felix.c
1672
ocelot_unlock_inj_grp(ocelot, 0);
drivers/net/dsa/ocelot/felix.c
1698
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1699
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
1707
if (ocelot->targets[HSIO])
drivers/net/dsa/ocelot/felix.c
1708
ocelot_pll5_init(ocelot);
drivers/net/dsa/ocelot/felix.c
1710
err = ocelot_init(ocelot);
drivers/net/dsa/ocelot/felix.c
1714
if (ocelot->ptp) {
drivers/net/dsa/ocelot/felix.c
1715
err = ocelot_init_timestamp(ocelot, felix->info->ptp_caps);
drivers/net/dsa/ocelot/felix.c
1717
dev_err(ocelot->dev,
drivers/net/dsa/ocelot/felix.c
1719
ocelot->ptp = 0;
drivers/net/dsa/ocelot/felix.c
1724
ocelot_init_port(ocelot, dp->index);
drivers/net/dsa/ocelot/felix.c
1727
felix->info->configure_serdes(ocelot, dp->index,
drivers/net/dsa/ocelot/felix.c
1733
felix_port_qos_map_init(ocelot, dp->index);
drivers/net/dsa/ocelot/felix.c
1737
err = felix->info->request_irq(ocelot);
drivers/net/dsa/ocelot/felix.c
1739
dev_err(ocelot->dev, "Failed to request IRQ: %pe\n",
drivers/net/dsa/ocelot/felix.c
1745
err = ocelot_devlink_sb_register(ocelot);
drivers/net/dsa/ocelot/felix.c
176
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1763
ocelot_deinit_port(ocelot, dp->index);
drivers/net/dsa/ocelot/felix.c
1765
ocelot_deinit_timestamp(ocelot);
drivers/net/dsa/ocelot/felix.c
1766
ocelot_deinit(ocelot);
drivers/net/dsa/ocelot/felix.c
1770
felix->info->mdio_bus_free(ocelot);
drivers/net/dsa/ocelot/felix.c
1777
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1778
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
1787
ocelot_deinit_port(ocelot, dp->index);
drivers/net/dsa/ocelot/felix.c
1789
ocelot_devlink_sb_unregister(ocelot);
drivers/net/dsa/ocelot/felix.c
1790
ocelot_deinit_timestamp(ocelot);
drivers/net/dsa/ocelot/felix.c
1791
ocelot_deinit(ocelot);
drivers/net/dsa/ocelot/felix.c
1794
felix->info->mdio_bus_free(ocelot);
drivers/net/dsa/ocelot/felix.c
1800
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1802
ocelot_hwstamp_get(ocelot, port, config);
drivers/net/dsa/ocelot/felix.c
1811
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1812
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
1816
err = ocelot_hwstamp_set(ocelot, port, config, extack);
drivers/net/dsa/ocelot/felix.c
1825
static bool felix_check_xtr_pkt(struct ocelot *ocelot)
drivers/net/dsa/ocelot/felix.c
1827
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
1836
ocelot_lock_xtr_grp(ocelot, grp);
drivers/net/dsa/ocelot/felix.c
1838
while (ocelot_read(ocelot, QS_XTR_DATA_PRESENT) & BIT(grp)) {
drivers/net/dsa/ocelot/felix.c
1842
err = ocelot_xtr_poll_frame(ocelot, grp, &skb);
drivers/net/dsa/ocelot/felix.c
1868
dev_err_ratelimited(ocelot->dev,
drivers/net/dsa/ocelot/felix.c
1871
ocelot_drain_cpu_queue(ocelot, 0);
drivers/net/dsa/ocelot/felix.c
1874
ocelot_unlock_xtr_grp(ocelot, grp);
drivers/net/dsa/ocelot/felix.c
1884
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1891
if (!(ocelot->ports[port]->trap_proto & OCELOT_PROTO_PTP_L2))
drivers/net/dsa/ocelot/felix.c
1896
if (!(ocelot->ports[port]->trap_proto & OCELOT_PROTO_PTP_L4))
drivers/net/dsa/ocelot/felix.c
190
cookie = OCELOT_VCAP_IS1_TAG_8021Q_TXVLAN(ocelot, port);
drivers/net/dsa/ocelot/felix.c
1906
if (felix_check_xtr_pkt(ocelot)) {
drivers/net/dsa/ocelot/felix.c
1911
ocelot_ptp_gettime64(&ocelot->ptp_info, &ts);
drivers/net/dsa/ocelot/felix.c
1929
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1932
if (!ocelot->ptp)
drivers/net/dsa/ocelot/felix.c
1935
if (ocelot_port_txtstamp_request(ocelot, port, skb, &clone)) {
drivers/net/dsa/ocelot/felix.c
1948
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1949
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/dsa/ocelot/felix.c
1951
ocelot_port_set_maxlen(ocelot, port, new_mtu);
drivers/net/dsa/ocelot/felix.c
1953
mutex_lock(&ocelot->fwd_domain_lock);
drivers/net/dsa/ocelot/felix.c
1955
if (ocelot_port->taprio && ocelot->ops->tas_guard_bands_update)
drivers/net/dsa/ocelot/felix.c
1956
ocelot->ops->tas_guard_bands_update(ocelot, port);
drivers/net/dsa/ocelot/felix.c
1958
mutex_unlock(&ocelot->fwd_domain_lock);
drivers/net/dsa/ocelot/felix.c
1965
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1967
return ocelot_get_max_mtu(ocelot, port);
drivers/net/dsa/ocelot/felix.c
1973
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1974
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
1978
err = ocelot_cls_flower_replace(ocelot, port, cls, ingress);
drivers/net/dsa/ocelot/felix.c
1990
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
1992
return ocelot_cls_flower_destroy(ocelot, port, cls, ingress);
drivers/net/dsa/ocelot/felix.c
1998
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2000
return ocelot_cls_flower_stats(ocelot, port, cls, ingress);
drivers/net/dsa/ocelot/felix.c
2006
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2012
return ocelot_port_policer_add(ocelot, port, &pol);
drivers/net/dsa/ocelot/felix.c
2017
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2019
ocelot_port_policer_del(ocelot, port);
drivers/net/dsa/ocelot/felix.c
2026
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2028
return ocelot_port_mirror_add(ocelot, port, mirror->to_local_port,
drivers/net/dsa/ocelot/felix.c
2035
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2037
ocelot_port_mirror_del(ocelot, port, mirror->ingress);
drivers/net/dsa/ocelot/felix.c
2044
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2045
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
2057
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2059
return ocelot_sb_pool_get(ocelot, sb_index, pool_index, pool_info);
drivers/net/dsa/ocelot/felix.c
2067
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2069
return ocelot_sb_pool_set(ocelot, sb_index, pool_index, size,
drivers/net/dsa/ocelot/felix.c
207
err = ocelot_vcap_filter_add(ocelot, untagging_rule, NULL);
drivers/net/dsa/ocelot/felix.c
2077
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2079
return ocelot_sb_port_pool_get(ocelot, port, sb_index, pool_index,
drivers/net/dsa/ocelot/felix.c
2087
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2089
return ocelot_sb_port_pool_set(ocelot, port, sb_index, pool_index,
drivers/net/dsa/ocelot/felix.c
2098
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2100
return ocelot_sb_tc_pool_bind_get(ocelot, port, sb_index, tc_index,
drivers/net/dsa/ocelot/felix.c
2111
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2113
return ocelot_sb_tc_pool_bind_set(ocelot, port, sb_index, tc_index,
drivers/net/dsa/ocelot/felix.c
2121
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2123
return ocelot_sb_occ_snapshot(ocelot, sb_index);
drivers/net/dsa/ocelot/felix.c
2129
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2131
return ocelot_sb_occ_max_clear(ocelot, sb_index);
drivers/net/dsa/ocelot/felix.c
2138
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
214
cookie = OCELOT_VCAP_IS2_TAG_8021Q_TXVLAN(ocelot, port);
drivers/net/dsa/ocelot/felix.c
2140
return ocelot_sb_occ_port_pool_get(ocelot, port, sb_index, pool_index,
drivers/net/dsa/ocelot/felix.c
2149
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2151
return ocelot_sb_occ_tc_port_bind_get(ocelot, port, sb_index, tc_index,
drivers/net/dsa/ocelot/felix.c
2158
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2160
return ocelot_mrp_add(ocelot, port, mrp);
drivers/net/dsa/ocelot/felix.c
2166
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2168
return ocelot_mrp_add(ocelot, port, mrp);
drivers/net/dsa/ocelot/felix.c
2175
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2177
return ocelot_mrp_add_ring_role(ocelot, port, mrp);
drivers/net/dsa/ocelot/felix.c
2184
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2186
return ocelot_mrp_del_ring_role(ocelot, port, mrp);
drivers/net/dsa/ocelot/felix.c
2191
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2193
return ocelot_port_get_default_prio(ocelot, port);
drivers/net/dsa/ocelot/felix.c
2199
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2201
return ocelot_port_set_default_prio(ocelot, port, prio);
drivers/net/dsa/ocelot/felix.c
2206
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2208
return ocelot_port_get_dscp_prio(ocelot, port, dscp);
drivers/net/dsa/ocelot/felix.c
2214
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2216
return ocelot_port_add_dscp_prio(ocelot, port, dscp, prio);
drivers/net/dsa/ocelot/felix.c
2222
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2224
return ocelot_port_del_dscp_prio(ocelot, port, dscp, prio);
drivers/net/dsa/ocelot/felix.c
2230
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2232
return ocelot_port_get_mm(ocelot, port, state);
drivers/net/dsa/ocelot/felix.c
2239
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2241
return ocelot_port_set_mm(ocelot, port, cfg, extack);
drivers/net/dsa/ocelot/felix.c
2247
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2249
ocelot_port_get_mm_stats(ocelot, port, stats);
drivers/net/dsa/ocelot/felix.c
2262
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2263
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
228
err = ocelot_vcap_filter_add(ocelot, redirect_rule, NULL);
drivers/net/dsa/ocelot/felix.c
2286
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2287
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
230
ocelot_vcap_filter_del(ocelot, untagging_rule);
drivers/net/dsa/ocelot/felix.c
2396
struct ocelot *ocelot;
drivers/net/dsa/ocelot/felix.c
2410
ocelot = &felix->ocelot;
drivers/net/dsa/ocelot/felix.c
2411
ocelot->dev = dev;
drivers/net/dsa/ocelot/felix.c
2412
ocelot->num_flooding_pgids = num_flooding_pgids;
drivers/net/dsa/ocelot/felix.c
2413
ocelot->ptp = ptp;
drivers/net/dsa/ocelot/felix.c
2414
ocelot->mm_supported = mm_supported;
drivers/net/dsa/ocelot/felix.c
2426
ds->priv = ocelot;
drivers/net/dsa/ocelot/felix.c
243
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
2436
struct net_device *felix_port_to_netdev(struct ocelot *ocelot, int port)
drivers/net/dsa/ocelot/felix.c
2438
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
247
block_vcap_is1 = &ocelot->block[VCAP_IS1];
drivers/net/dsa/ocelot/felix.c
248
block_vcap_is2 = &ocelot->block[VCAP_IS2];
drivers/net/dsa/ocelot/felix.c
250
cookie = OCELOT_VCAP_IS1_TAG_8021Q_TXVLAN(ocelot, port);
drivers/net/dsa/ocelot/felix.c
256
err = ocelot_vcap_filter_del(ocelot, untagging_rule);
drivers/net/dsa/ocelot/felix.c
260
cookie = OCELOT_VCAP_IS2_TAG_8021Q_TXVLAN(ocelot, port);
drivers/net/dsa/ocelot/felix.c
266
return ocelot_vcap_filter_del(ocelot, redirect_rule);
drivers/net/dsa/ocelot/felix.c
337
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
342
block_vcap_es0 = &ocelot->block[VCAP_ES0];
drivers/net/dsa/ocelot/felix.c
345
cookie = OCELOT_VCAP_ES0_TAG_8021Q_RXVLAN(ocelot, port,
drivers/net/dsa/ocelot/felix.c
353
err = ocelot_vcap_filter_replace(ocelot, outer_tagging_rule);
drivers/net/dsa/ocelot/felix.c
383
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
384
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
398
block_vcap_is2 = &ocelot->block[VCAP_IS2];
drivers/net/dsa/ocelot/felix.c
432
err = ocelot_vcap_filter_replace(ocelot, trap);
drivers/net/dsa/ocelot/felix.c
446
static void felix_npi_port_init(struct ocelot *ocelot, int port)
drivers/net/dsa/ocelot/felix.c
448
ocelot->npi = port;
drivers/net/dsa/ocelot/felix.c
450
ocelot_write(ocelot, QSYS_EXT_CPU_CFG_EXT_CPUQ_MSK_M |
drivers/net/dsa/ocelot/felix.c
455
ocelot_fields_write(ocelot, port, SYS_PORT_MODE_INCL_XTR_HDR,
drivers/net/dsa/ocelot/felix.c
456
ocelot->npi_xtr_prefix);
drivers/net/dsa/ocelot/felix.c
457
ocelot_fields_write(ocelot, port, SYS_PORT_MODE_INCL_INJ_HDR,
drivers/net/dsa/ocelot/felix.c
458
ocelot->npi_inj_prefix);
drivers/net/dsa/ocelot/felix.c
461
ocelot_fields_write(ocelot, port, SYS_PAUSE_CFG_PAUSE_ENA, 0);
drivers/net/dsa/ocelot/felix.c
464
static void felix_npi_port_deinit(struct ocelot *ocelot, int port)
drivers/net/dsa/ocelot/felix.c
467
int unused_port = ocelot->num_phys_ports + 2;
drivers/net/dsa/ocelot/felix.c
469
ocelot->npi = -1;
drivers/net/dsa/ocelot/felix.c
471
ocelot_write(ocelot, QSYS_EXT_CPU_CFG_EXT_CPU_PORT(unused_port),
drivers/net/dsa/ocelot/felix.c
474
ocelot_fields_write(ocelot, port, SYS_PORT_MODE_INCL_XTR_HDR,
drivers/net/dsa/ocelot/felix.c
476
ocelot_fields_write(ocelot, port, SYS_PORT_MODE_INCL_INJ_HDR,
drivers/net/dsa/ocelot/felix.c
48
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
480
ocelot_fields_write(ocelot, port, SYS_PAUSE_CFG_PAUSE_ENA, 1);
drivers/net/dsa/ocelot/felix.c
486
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
500
felix_npi_port_init(ocelot, first_cpu_dp->index);
drivers/net/dsa/ocelot/felix.c
507
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
509
felix_npi_port_deinit(ocelot, ocelot->npi);
drivers/net/dsa/ocelot/felix.c
514
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
516
return BIT(ocelot->num_phys_ports);
drivers/net/dsa/ocelot/felix.c
524
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
53
mutex_lock(&ocelot->fwd_domain_lock);
drivers/net/dsa/ocelot/felix.c
54
lag = ocelot_bond_get_id(ocelot, conduit);
drivers/net/dsa/ocelot/felix.c
547
felix_npi_port_deinit(ocelot, ocelot->npi);
drivers/net/dsa/ocelot/felix.c
548
felix_npi_port_init(ocelot, felix_cpu_port_for_conduit(ds, conduit));
drivers/net/dsa/ocelot/felix.c
55
mutex_unlock(&ocelot->fwd_domain_lock);
drivers/net/dsa/ocelot/felix.c
569
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
578
ocelot_port_setup_dsa_8021q_cpu(ocelot, dp->index);
drivers/net/dsa/ocelot/felix.c
581
ocelot_port_assign_dsa_8021q_cpu(ocelot, dp->index,
drivers/net/dsa/ocelot/felix.c
595
ocelot_write_gix(ocelot,
drivers/net/dsa/ocelot/felix.c
606
ocelot_lock_xtr_grp_bh(ocelot, 0);
drivers/net/dsa/ocelot/felix.c
607
ocelot_drain_cpu_queue(ocelot, 0);
drivers/net/dsa/ocelot/felix.c
608
ocelot_unlock_xtr_grp_bh(ocelot, 0);
drivers/net/dsa/ocelot/felix.c
625
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
632
ocelot_write_gix(ocelot,
drivers/net/dsa/ocelot/felix.c
638
ocelot_port_unassign_dsa_8021q_cpu(ocelot, dp->index);
drivers/net/dsa/ocelot/felix.c
641
ocelot_port_teardown_dsa_8021q_cpu(ocelot, dp->index);
drivers/net/dsa/ocelot/felix.c
658
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
660
ocelot_port_unassign_dsa_8021q_cpu(ocelot, port);
drivers/net/dsa/ocelot/felix.c
661
ocelot_port_assign_dsa_8021q_cpu(ocelot, port, cpu);
drivers/net/dsa/ocelot/felix.c
676
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
680
ocelot_rmw_rix(ocelot, val, mask, ANA_PGID_PGID, PGID_UC);
drivers/net/dsa/ocelot/felix.c
683
ocelot_rmw_rix(ocelot, val, mask, ANA_PGID_PGID, PGID_MC);
drivers/net/dsa/ocelot/felix.c
684
ocelot_rmw_rix(ocelot, val, mask, ANA_PGID_PGID, PGID_MCIPV4);
drivers/net/dsa/ocelot/felix.c
685
ocelot_rmw_rix(ocelot, val, mask, ANA_PGID_PGID, PGID_MCIPV6);
drivers/net/dsa/ocelot/felix.c
688
ocelot_rmw_rix(ocelot, val, mask, ANA_PGID_PGID, PGID_BC);
drivers/net/dsa/ocelot/felix.c
696
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
697
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
714
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
723
return ocelot_migrate_mdbs(ocelot, from, to);
drivers/net/dsa/ocelot/felix.c
758
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
759
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
805
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
806
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
814
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
815
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
837
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
838
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
846
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
848
ocelot_set_ageing_time(ocelot, ageing_time);
drivers/net/dsa/ocelot/felix.c
855
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
858
err = ocelot_mact_flush(ocelot, port);
drivers/net/dsa/ocelot/felix.c
867
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
869
return ocelot_fdb_dump(ocelot, port, cb, data);
drivers/net/dsa/ocelot/felix.c
878
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
890
return ocelot_fdb_add(ocelot, port, addr, vid, bridge_dev);
drivers/net/dsa/ocelot/felix.c
899
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
911
return ocelot_fdb_del(ocelot, port, addr, vid, bridge_dev);
drivers/net/dsa/ocelot/felix.c
919
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
924
return ocelot_lag_fdb_add(ocelot, lag.dev, addr, vid, bridge_dev);
drivers/net/dsa/ocelot/felix.c
932
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
937
return ocelot_lag_fdb_del(ocelot, lag.dev, addr, vid, bridge_dev);
drivers/net/dsa/ocelot/felix.c
945
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
954
if (port == ocelot->npi)
drivers/net/dsa/ocelot/felix.c
955
port = ocelot->num_phys_ports;
drivers/net/dsa/ocelot/felix.c
957
return ocelot_port_mdb_add(ocelot, port, mdb, bridge_dev);
drivers/net/dsa/ocelot/felix.c
965
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
974
if (port == ocelot->npi)
drivers/net/dsa/ocelot/felix.c
975
port = ocelot->num_phys_ports;
drivers/net/dsa/ocelot/felix.c
977
return ocelot_port_mdb_del(ocelot, port, mdb, bridge_dev);
drivers/net/dsa/ocelot/felix.c
983
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
985
return ocelot_bridge_stp_state_set(ocelot, port, state);
drivers/net/dsa/ocelot/felix.c
992
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix.c
994
return ocelot_port_pre_bridge_flags(ocelot, port, val);
drivers/net/dsa/ocelot/felix.h
106
struct net_device *felix_port_to_netdev(struct ocelot *ocelot, int port);
drivers/net/dsa/ocelot/felix.h
56
int (*mdio_bus_alloc)(struct ocelot *ocelot);
drivers/net/dsa/ocelot/felix.h
57
void (*mdio_bus_free)(struct ocelot *ocelot);
drivers/net/dsa/ocelot/felix.h
60
void (*port_sched_speed_set)(struct ocelot *ocelot, int port,
drivers/net/dsa/ocelot/felix.h
62
void (*phylink_mac_config)(struct ocelot *ocelot, int port,
drivers/net/dsa/ocelot/felix.h
65
int (*configure_serdes)(struct ocelot *ocelot, int port,
drivers/net/dsa/ocelot/felix.h
67
int (*request_irq)(struct ocelot *ocelot);
drivers/net/dsa/ocelot/felix.h
7
#define ocelot_to_felix(o) container_of((o), struct felix, ocelot)
drivers/net/dsa/ocelot/felix.h
90
struct ocelot ocelot;
drivers/net/dsa/ocelot/felix_vsc9959.c
1024
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/dsa/ocelot/felix_vsc9959.c
1045
static void vsc9959_mdio_bus_free(struct ocelot *ocelot)
drivers/net/dsa/ocelot/felix_vsc9959.c
1047
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix_vsc9959.c
1050
for (port = 0; port < ocelot->num_phys_ports; port++) {
drivers/net/dsa/ocelot/felix_vsc9959.c
1149
static void vsc9959_port_qmaxsdu_set(struct ocelot *ocelot, int port, int tc,
drivers/net/dsa/ocelot/felix_vsc9959.c
1154
ocelot_write_rix(ocelot, max_sdu, QSYS_QMAXSDU_CFG_0,
drivers/net/dsa/ocelot/felix_vsc9959.c
1158
ocelot_write_rix(ocelot, max_sdu, QSYS_QMAXSDU_CFG_1,
drivers/net/dsa/ocelot/felix_vsc9959.c
1162
ocelot_write_rix(ocelot, max_sdu, QSYS_QMAXSDU_CFG_2,
drivers/net/dsa/ocelot/felix_vsc9959.c
1166
ocelot_write_rix(ocelot, max_sdu, QSYS_QMAXSDU_CFG_3,
drivers/net/dsa/ocelot/felix_vsc9959.c
1170
ocelot_write_rix(ocelot, max_sdu, QSYS_QMAXSDU_CFG_4,
drivers/net/dsa/ocelot/felix_vsc9959.c
1174
ocelot_write_rix(ocelot, max_sdu, QSYS_QMAXSDU_CFG_5,
drivers/net/dsa/ocelot/felix_vsc9959.c
1178
ocelot_write_rix(ocelot, max_sdu, QSYS_QMAXSDU_CFG_6,
drivers/net/dsa/ocelot/felix_vsc9959.c
1182
ocelot_write_rix(ocelot, max_sdu, QSYS_QMAXSDU_CFG_7,
drivers/net/dsa/ocelot/felix_vsc9959.c
1188
static u32 vsc9959_port_qmaxsdu_get(struct ocelot *ocelot, int port, int tc)
drivers/net/dsa/ocelot/felix_vsc9959.c
1191
case 0: return ocelot_read_rix(ocelot, QSYS_QMAXSDU_CFG_0, port);
drivers/net/dsa/ocelot/felix_vsc9959.c
1192
case 1: return ocelot_read_rix(ocelot, QSYS_QMAXSDU_CFG_1, port);
drivers/net/dsa/ocelot/felix_vsc9959.c
1193
case 2: return ocelot_read_rix(ocelot, QSYS_QMAXSDU_CFG_2, port);
drivers/net/dsa/ocelot/felix_vsc9959.c
1194
case 3: return ocelot_read_rix(ocelot, QSYS_QMAXSDU_CFG_3, port);
drivers/net/dsa/ocelot/felix_vsc9959.c
1195
case 4: return ocelot_read_rix(ocelot, QSYS_QMAXSDU_CFG_4, port);
drivers/net/dsa/ocelot/felix_vsc9959.c
1196
case 5: return ocelot_read_rix(ocelot, QSYS_QMAXSDU_CFG_5, port);
drivers/net/dsa/ocelot/felix_vsc9959.c
1197
case 6: return ocelot_read_rix(ocelot, QSYS_QMAXSDU_CFG_6, port);
drivers/net/dsa/ocelot/felix_vsc9959.c
1198
case 7: return ocelot_read_rix(ocelot, QSYS_QMAXSDU_CFG_7, port);
drivers/net/dsa/ocelot/felix_vsc9959.c
1218
static void vsc9959_tas_guard_bands_update(struct ocelot *ocelot, int port)
drivers/net/dsa/ocelot/felix_vsc9959.c
1220
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/dsa/ocelot/felix_vsc9959.c
1221
struct ocelot_mm_state *mm = &ocelot->mm[port];
drivers/net/dsa/ocelot/felix_vsc9959.c
1231
lockdep_assert_held(&ocelot->fwd_domain_lock);
drivers/net/dsa/ocelot/felix_vsc9959.c
1235
val = ocelot_read_rix(ocelot, QSYS_TAG_CONFIG, port);
drivers/net/dsa/ocelot/felix_vsc9959.c
1270
val = ocelot_read_rix(ocelot, QSYS_PREEMPTION_CFG, port);
drivers/net/dsa/ocelot/felix_vsc9959.c
1275
dev_dbg(ocelot->dev,
drivers/net/dsa/ocelot/felix_vsc9959.c
1297
dev_dbg(ocelot->dev,
drivers/net/dsa/ocelot/felix_vsc9959.c
1332
dev_info(ocelot->dev,
drivers/net/dsa/ocelot/felix_vsc9959.c
1341
vsc9959_port_qmaxsdu_set(ocelot, port, tc, max_sdu);
drivers/net/dsa/ocelot/felix_vsc9959.c
1344
ocelot_write_rix(ocelot, maxlen, QSYS_PORT_MAX_SDU, port);
drivers/net/dsa/ocelot/felix_vsc9959.c
1346
ocelot->ops->cut_through_fwd(ocelot);
drivers/net/dsa/ocelot/felix_vsc9959.c
1349
static void vsc9959_sched_speed_set(struct ocelot *ocelot, int port,
drivers/net/dsa/ocelot/felix_vsc9959.c
1352
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/dsa/ocelot/felix_vsc9959.c
1373
mutex_lock(&ocelot->fwd_domain_lock);
drivers/net/dsa/ocelot/felix_vsc9959.c
1375
ocelot_rmw_rix(ocelot,
drivers/net/dsa/ocelot/felix_vsc9959.c
1381
vsc9959_tas_guard_bands_update(ocelot, port);
drivers/net/dsa/ocelot/felix_vsc9959.c
1383
mutex_unlock(&ocelot->fwd_domain_lock);
drivers/net/dsa/ocelot/felix_vsc9959.c
1386
static void vsc9959_new_base_time(struct ocelot *ocelot, ktime_t base_time,
drivers/net/dsa/ocelot/felix_vsc9959.c
1394
ocelot_ptp_gettime64(&ocelot->ptp_info, &ts);
drivers/net/dsa/ocelot/felix_vsc9959.c
1408
static u32 vsc9959_tas_read_cfg_status(struct ocelot *ocelot)
drivers/net/dsa/ocelot/felix_vsc9959.c
1410
return ocelot_read(ocelot, QSYS_TAS_PARAM_CFG_CTRL);
drivers/net/dsa/ocelot/felix_vsc9959.c
1413
static void vsc9959_tas_gcl_set(struct ocelot *ocelot, const u32 gcl_ix,
drivers/net/dsa/ocelot/felix_vsc9959.c
1416
ocelot_write(ocelot,
drivers/net/dsa/ocelot/felix_vsc9959.c
1420
ocelot_write(ocelot, entry->interval, QSYS_GCL_CFG_REG_2);
drivers/net/dsa/ocelot/felix_vsc9959.c
1423
static int vsc9959_qos_port_tas_set(struct ocelot *ocelot, int port,
drivers/net/dsa/ocelot/felix_vsc9959.c
1426
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/dsa/ocelot/felix_vsc9959.c
1431
mutex_lock(&ocelot->fwd_domain_lock);
drivers/net/dsa/ocelot/felix_vsc9959.c
1434
ocelot_port_mqprio(ocelot, port, &taprio->mqprio);
drivers/net/dsa/ocelot/felix_vsc9959.c
1435
ocelot_rmw_rix(ocelot, 0, QSYS_TAG_CONFIG_ENABLE,
drivers/net/dsa/ocelot/felix_vsc9959.c
1441
vsc9959_tas_guard_bands_update(ocelot, port);
drivers/net/dsa/ocelot/felix_vsc9959.c
1443
mutex_unlock(&ocelot->fwd_domain_lock);
drivers/net/dsa/ocelot/felix_vsc9959.c
1450
ret = ocelot_port_mqprio(ocelot, port, &taprio->mqprio);
drivers/net/dsa/ocelot/felix_vsc9959.c
1474
ocelot_rmw(ocelot, QSYS_TAS_PARAM_CFG_CTRL_PORT_NUM(port) |
drivers/net/dsa/ocelot/felix_vsc9959.c
1483
val = ocelot_read_rix(ocelot, QSYS_TAG_CONFIG, port);
drivers/net/dsa/ocelot/felix_vsc9959.c
1485
val = ocelot_read(ocelot, QSYS_PARAM_STATUS_REG_8);
drivers/net/dsa/ocelot/felix_vsc9959.c
1492
ocelot_rmw_rix(ocelot,
drivers/net/dsa/ocelot/felix_vsc9959.c
1501
vsc9959_new_base_time(ocelot, taprio->base_time,
drivers/net/dsa/ocelot/felix_vsc9959.c
1503
ocelot_write(ocelot, base_ts.tv_nsec, QSYS_PARAM_CFG_REG_1);
drivers/net/dsa/ocelot/felix_vsc9959.c
1504
ocelot_write(ocelot, lower_32_bits(base_ts.tv_sec), QSYS_PARAM_CFG_REG_2);
drivers/net/dsa/ocelot/felix_vsc9959.c
1506
ocelot_write(ocelot,
drivers/net/dsa/ocelot/felix_vsc9959.c
1510
ocelot_write(ocelot, taprio->cycle_time, QSYS_PARAM_CFG_REG_4);
drivers/net/dsa/ocelot/felix_vsc9959.c
1511
ocelot_write(ocelot, taprio->cycle_time_extension, QSYS_PARAM_CFG_REG_5);
drivers/net/dsa/ocelot/felix_vsc9959.c
1514
vsc9959_tas_gcl_set(ocelot, i, &taprio->entries[i]);
drivers/net/dsa/ocelot/felix_vsc9959.c
1516
ocelot_rmw(ocelot, QSYS_TAS_PARAM_CFG_CTRL_CONFIG_CHANGE,
drivers/net/dsa/ocelot/felix_vsc9959.c
1520
ret = readx_poll_timeout(vsc9959_tas_read_cfg_status, ocelot, val,
drivers/net/dsa/ocelot/felix_vsc9959.c
1527
vsc9959_tas_guard_bands_update(ocelot, port);
drivers/net/dsa/ocelot/felix_vsc9959.c
1529
mutex_unlock(&ocelot->fwd_domain_lock);
drivers/net/dsa/ocelot/felix_vsc9959.c
1535
ocelot_port_mqprio(ocelot, port, &taprio->mqprio);
drivers/net/dsa/ocelot/felix_vsc9959.c
1537
mutex_unlock(&ocelot->fwd_domain_lock);
drivers/net/dsa/ocelot/felix_vsc9959.c
1542
static void vsc9959_tas_clock_adjust(struct ocelot *ocelot)
drivers/net/dsa/ocelot/felix_vsc9959.c
1550
mutex_lock(&ocelot->fwd_domain_lock);
drivers/net/dsa/ocelot/felix_vsc9959.c
1552
for (port = 0; port < ocelot->num_phys_ports; port++) {
drivers/net/dsa/ocelot/felix_vsc9959.c
1553
ocelot_port = ocelot->ports[port];
drivers/net/dsa/ocelot/felix_vsc9959.c
1558
ocelot_rmw(ocelot,
drivers/net/dsa/ocelot/felix_vsc9959.c
1564
ocelot_rmw_rix(ocelot, 0, QSYS_TAG_CONFIG_ENABLE,
drivers/net/dsa/ocelot/felix_vsc9959.c
1567
vsc9959_new_base_time(ocelot, taprio->base_time,
drivers/net/dsa/ocelot/felix_vsc9959.c
1570
ocelot_write(ocelot, base_ts.tv_nsec, QSYS_PARAM_CFG_REG_1);
drivers/net/dsa/ocelot/felix_vsc9959.c
1571
ocelot_write(ocelot, lower_32_bits(base_ts.tv_sec),
drivers/net/dsa/ocelot/felix_vsc9959.c
1574
ocelot_rmw(ocelot,
drivers/net/dsa/ocelot/felix_vsc9959.c
1580
vsc9959_tas_gcl_set(ocelot, i, &taprio->entries[i]);
drivers/net/dsa/ocelot/felix_vsc9959.c
1582
ocelot_rmw(ocelot, QSYS_TAS_PARAM_CFG_CTRL_CONFIG_CHANGE,
drivers/net/dsa/ocelot/felix_vsc9959.c
1587
ocelot_rmw_rix(ocelot, QSYS_TAG_CONFIG_ENABLE,
drivers/net/dsa/ocelot/felix_vsc9959.c
1591
mutex_unlock(&ocelot->fwd_domain_lock);
drivers/net/dsa/ocelot/felix_vsc9959.c
1597
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix_vsc9959.c
1605
ocelot_write_gix(ocelot, QSYS_CIR_CFG_CIR_RATE(0) |
drivers/net/dsa/ocelot/felix_vsc9959.c
1609
ocelot_rmw_gix(ocelot, 0, QSYS_SE_CFG_SE_AVB_ENA,
drivers/net/dsa/ocelot/felix_vsc9959.c
1623
ocelot_write_gix(ocelot,
drivers/net/dsa/ocelot/felix_vsc9959.c
1629
ocelot_rmw_gix(ocelot,
drivers/net/dsa/ocelot/felix_vsc9959.c
1662
static int vsc9959_qos_port_mqprio(struct ocelot *ocelot, int port,
drivers/net/dsa/ocelot/felix_vsc9959.c
1667
mutex_lock(&ocelot->fwd_domain_lock);
drivers/net/dsa/ocelot/felix_vsc9959.c
1668
ret = ocelot_port_mqprio(ocelot, port, mqprio);
drivers/net/dsa/ocelot/felix_vsc9959.c
1669
mutex_unlock(&ocelot->fwd_domain_lock);
drivers/net/dsa/ocelot/felix_vsc9959.c
1678
struct ocelot *ocelot = ds->priv;
drivers/net/dsa/ocelot/felix_vsc9959.c
1684
return vsc9959_qos_port_tas_set(ocelot, port, type_data);
drivers/net/dsa/ocelot/felix_vsc9959.c
1686
return vsc9959_qos_port_mqprio(ocelot, port, type_data);
drivers/net/dsa/ocelot/felix_vsc9959.c
1805
static int vsc9959_mact_stream_set(struct ocelot *ocelot,
drivers/net/dsa/ocelot/felix_vsc9959.c
1820
ret = ocelot_mact_lookup(ocelot, &dst_idx, mac, vid, &type);
drivers/net/dsa/ocelot/felix_vsc9959.c
1834
ret = ocelot_mact_learn_streamdata(ocelot, dst_idx, mac, vid, type,
drivers/net/dsa/ocelot/felix_vsc9959.c
1854
static int vsc9959_stream_table_add(struct ocelot *ocelot,
drivers/net/dsa/ocelot/felix_vsc9959.c
1867
ret = vsc9959_mact_stream_set(ocelot, stream_entry, extack);
drivers/net/dsa/ocelot/felix_vsc9959.c
1891
static void vsc9959_stream_table_del(struct ocelot *ocelot,
drivers/net/dsa/ocelot/felix_vsc9959.c
1895
vsc9959_mact_stream_set(ocelot, stream, NULL);
drivers/net/dsa/ocelot/felix_vsc9959.c
1901
static u32 vsc9959_sfi_access_status(struct ocelot *ocelot)
drivers/net/dsa/ocelot/felix_vsc9959.c
1903
return ocelot_read(ocelot, ANA_TABLES_SFIDACCESS);
drivers/net/dsa/ocelot/felix_vsc9959.c
1906
static int vsc9959_psfp_sfi_set(struct ocelot *ocelot,
drivers/net/dsa/ocelot/felix_vsc9959.c
1915
ocelot_write(ocelot, ANA_TABLES_SFIDTIDX_SFID_INDEX(sfi->index),
drivers/net/dsa/ocelot/felix_vsc9959.c
1919
ocelot_write(ocelot, val, ANA_TABLES_SFIDACCESS);
drivers/net/dsa/ocelot/felix_vsc9959.c
1921
return readx_poll_timeout(vsc9959_sfi_access_status, ocelot, val,
drivers/net/dsa/ocelot/felix_vsc9959.c
1930
ocelot_write(ocelot,
drivers/net/dsa/ocelot/felix_vsc9959.c
1938
ocelot_write(ocelot,
drivers/net/dsa/ocelot/felix_vsc9959.c
1945
return readx_poll_timeout(vsc9959_sfi_access_status, ocelot, val,
drivers/net/dsa/ocelot/felix_vsc9959.c
1950
static int vsc9959_psfp_sfidmask_set(struct ocelot *ocelot, u32 sfid, int ports)
drivers/net/dsa/ocelot/felix_vsc9959.c
1954
ocelot_rmw(ocelot,
drivers/net/dsa/ocelot/felix_vsc9959.c
1959
ocelot_write(ocelot,
drivers/net/dsa/ocelot/felix_vsc9959.c
1964
ocelot_rmw(ocelot,
drivers/net/dsa/ocelot/felix_vsc9959.c
1969
return readx_poll_timeout(vsc9959_sfi_access_status, ocelot, val,
drivers/net/dsa/ocelot/felix_vsc9959.c
1974
static int vsc9959_psfp_sfi_list_add(struct ocelot *ocelot,
drivers/net/dsa/ocelot/felix_vsc9959.c
1987
ret = vsc9959_psfp_sfi_set(ocelot, sfi_entry);
drivers/net/dsa/ocelot/felix_vsc9959.c
1993
vsc9959_psfp_sfidmask_set(ocelot, sfi->index, sfi->portmask);
drivers/net/dsa/ocelot/felix_vsc9959.c
2000
static int vsc9959_psfp_sfi_table_add(struct ocelot *ocelot,
drivers/net/dsa/ocelot/felix_vsc9959.c
2008
psfp = &ocelot->psfp;
drivers/net/dsa/ocelot/felix_vsc9959.c
2030
return vsc9959_psfp_sfi_list_add(ocelot, sfi, last);
drivers/net/dsa/ocelot/felix_vsc9959.c
2033
static int vsc9959_psfp_sfi_table_add2(struct ocelot *ocelot,
drivers/net/dsa/ocelot/felix_vsc9959.c
2043
psfp = &ocelot->psfp;
drivers/net/dsa/ocelot/felix_vsc9959.c
2057
ret = vsc9959_psfp_sfi_list_add(ocelot, sfi, last);
drivers/net/dsa/ocelot/felix_vsc9959.c
2063
return vsc9959_psfp_sfi_list_add(ocelot, sfi2, last->next);
drivers/net/dsa/ocelot/felix_vsc9959.c
2078
static void vsc9959_psfp_sfi_table_del(struct ocelot *ocelot, u32 index)
drivers/net/dsa/ocelot/felix_vsc9959.c
2084
psfp = &ocelot->psfp;
drivers/net/dsa/ocelot/felix_vsc9959.c
2091
vsc9959_psfp_sfi_set(ocelot, tmp);
drivers/net/dsa/ocelot/felix_vsc9959.c
2114
static u32 vsc9959_sgi_cfg_status(struct ocelot *ocelot)
drivers/net/dsa/ocelot/felix_vsc9959.c
2116
return ocelot_read(ocelot, ANA_SG_ACCESS_CTRL);
drivers/net/dsa/ocelot/felix_vsc9959.c
2119
static int vsc9959_psfp_sgi_set(struct ocelot *ocelot,
drivers/net/dsa/ocelot/felix_vsc9959.c
2131
ocelot_write(ocelot, ANA_SG_ACCESS_CTRL_SGID(sgi->index),
drivers/net/dsa/ocelot/felix_vsc9959.c
2135
ocelot_rmw(ocelot, ANA_SG_CONFIG_REG_3_INIT_GATE_STATE,
drivers/net/dsa/ocelot/felix_vsc9959.c
2150
vsc9959_new_base_time(ocelot, sgi->basetime, sgi->cycletime, &base_ts);
drivers/net/dsa/ocelot/felix_vsc9959.c
2151
ocelot_write(ocelot, base_ts.tv_nsec, ANA_SG_CONFIG_REG_1);
drivers/net/dsa/ocelot/felix_vsc9959.c
2153
ocelot_write(ocelot, val, ANA_SG_CONFIG_REG_2);
drivers/net/dsa/ocelot/felix_vsc9959.c
2156
ocelot_write(ocelot,
drivers/net/dsa/ocelot/felix_vsc9959.c
2165
ocelot_write(ocelot, sgi->cycletime, ANA_SG_CONFIG_REG_4);
drivers/net/dsa/ocelot/felix_vsc9959.c
2171
ocelot_write_rix(ocelot, ANA_SG_GCL_GS_CONFIG_IPS(ips) |
drivers/net/dsa/ocelot/felix_vsc9959.c
2177
ocelot_write_rix(ocelot, interval_sum, ANA_SG_GCL_TI_CONFIG, i);
drivers/net/dsa/ocelot/felix_vsc9959.c
2180
ocelot_rmw(ocelot, ANA_SG_ACCESS_CTRL_CONFIG_CHANGE,
drivers/net/dsa/ocelot/felix_vsc9959.c
2184
return readx_poll_timeout(vsc9959_sgi_cfg_status, ocelot, val,
drivers/net/dsa/ocelot/felix_vsc9959.c
2189
static int vsc9959_psfp_sgi_table_add(struct ocelot *ocelot,
drivers/net/dsa/ocelot/felix_vsc9959.c
2196
psfp = &ocelot->psfp;
drivers/net/dsa/ocelot/felix_vsc9959.c
2208
ret = vsc9959_psfp_sgi_set(ocelot, sgi);
drivers/net/dsa/ocelot/felix_vsc9959.c
2221
static void vsc9959_psfp_sgi_table_del(struct ocelot *ocelot,
drivers/net/dsa/ocelot/felix_vsc9959.c
2229
psfp = &ocelot->psfp;
drivers/net/dsa/ocelot/felix_vsc9959.c
2237
vsc9959_psfp_sgi_set(ocelot, &sgi);
drivers/net/dsa/ocelot/felix_vsc9959.c
2245
static int vsc9959_psfp_filter_add(struct ocelot *ocelot, int port,
drivers/net/dsa/ocelot/felix_vsc9959.c
2261
psfp = &ocelot->psfp;
drivers/net/dsa/ocelot/felix_vsc9959.c
2281
ret = vsc9959_psfp_sgi_table_add(ocelot, sgi);
drivers/net/dsa/ocelot/felix_vsc9959.c
2303
ret = ocelot_vcap_policer_add(ocelot, index, &pol);
drivers/net/dsa/ocelot/felix_vsc9959.c
2349
vsc9959_psfp_sfi_table_del(ocelot, stream_entry->sfid);
drivers/net/dsa/ocelot/felix_vsc9959.c
2355
ret = vsc9959_psfp_sfi_table_add2(ocelot, &sfi,
drivers/net/dsa/ocelot/felix_vsc9959.c
2359
ret = vsc9959_psfp_sfi_table_add2(ocelot, &old_sfi,
drivers/net/dsa/ocelot/felix_vsc9959.c
2368
ret = vsc9959_psfp_sfi_table_add(ocelot, &sfi);
drivers/net/dsa/ocelot/felix_vsc9959.c
2375
ret = vsc9959_stream_table_add(ocelot, &psfp->stream_list,
drivers/net/dsa/ocelot/felix_vsc9959.c
2378
vsc9959_psfp_sfi_table_del(ocelot, stream.sfid);
drivers/net/dsa/ocelot/felix_vsc9959.c
2388
vsc9959_psfp_sgi_table_del(ocelot, sfi.sgid);
drivers/net/dsa/ocelot/felix_vsc9959.c
2391
ocelot_vcap_policer_del(ocelot, sfi.fmid);
drivers/net/dsa/ocelot/felix_vsc9959.c
2398
static int vsc9959_psfp_filter_del(struct ocelot *ocelot,
drivers/net/dsa/ocelot/felix_vsc9959.c
2402
struct ocelot_psfp_list *psfp = &ocelot->psfp;
drivers/net/dsa/ocelot/felix_vsc9959.c
2420
vsc9959_psfp_sgi_table_del(ocelot, sfi->sgid);
drivers/net/dsa/ocelot/felix_vsc9959.c
2423
ocelot_vcap_policer_del(ocelot, sfi->fmid);
drivers/net/dsa/ocelot/felix_vsc9959.c
2425
vsc9959_psfp_sfi_table_del(ocelot, stream->sfid);
drivers/net/dsa/ocelot/felix_vsc9959.c
2430
vsc9959_stream_table_del(ocelot, stream);
drivers/net/dsa/ocelot/felix_vsc9959.c
2437
vsc9959_mact_stream_set(ocelot, stream_entry, NULL);
drivers/net/dsa/ocelot/felix_vsc9959.c
2439
vsc9959_psfp_sfidmask_set(ocelot, stream_entry->sfid,
drivers/net/dsa/ocelot/felix_vsc9959.c
2448
static void vsc9959_update_sfid_stats(struct ocelot *ocelot,
drivers/net/dsa/ocelot/felix_vsc9959.c
2455
lockdep_assert_held(&ocelot->stat_view_lock);
drivers/net/dsa/ocelot/felix_vsc9959.c
2457
ocelot_rmw(ocelot, SYS_STAT_CFG_STAT_VIEW(sfid),
drivers/net/dsa/ocelot/felix_vsc9959.c
2461
match = ocelot_read(ocelot, SYS_COUNT_SF_MATCHING_FRAMES);
drivers/net/dsa/ocelot/felix_vsc9959.c
2462
not_pass_gate = ocelot_read(ocelot, SYS_COUNT_SF_NOT_PASSING_FRAMES);
drivers/net/dsa/ocelot/felix_vsc9959.c
2463
not_pass_sdu = ocelot_read(ocelot, SYS_COUNT_SF_NOT_PASSING_SDU);
drivers/net/dsa/ocelot/felix_vsc9959.c
2464
red = ocelot_read(ocelot, SYS_COUNT_SF_RED_FRAMES);
drivers/net/dsa/ocelot/felix_vsc9959.c
2467
ocelot_write(ocelot,
drivers/net/dsa/ocelot/felix_vsc9959.c
2479
static void vsc9959_update_stats(struct ocelot *ocelot)
drivers/net/dsa/ocelot/felix_vsc9959.c
2481
struct ocelot_psfp_list *psfp = &ocelot->psfp;
drivers/net/dsa/ocelot/felix_vsc9959.c
2487
vsc9959_update_sfid_stats(ocelot, sfi);
drivers/net/dsa/ocelot/felix_vsc9959.c
2492
static int vsc9959_psfp_stats_get(struct ocelot *ocelot,
drivers/net/dsa/ocelot/felix_vsc9959.c
2496
struct ocelot_psfp_list *psfp = &ocelot->psfp;
drivers/net/dsa/ocelot/felix_vsc9959.c
2509
mutex_lock(&ocelot->stat_view_lock);
drivers/net/dsa/ocelot/felix_vsc9959.c
2511
vsc9959_update_sfid_stats(ocelot, sfi);
drivers/net/dsa/ocelot/felix_vsc9959.c
2519
mutex_unlock(&ocelot->stat_view_lock);
drivers/net/dsa/ocelot/felix_vsc9959.c
2524
static void vsc9959_psfp_init(struct ocelot *ocelot)
drivers/net/dsa/ocelot/felix_vsc9959.c
2526
struct ocelot_psfp_list *psfp = &ocelot->psfp;
drivers/net/dsa/ocelot/felix_vsc9959.c
2543
static void vsc9959_cut_through_fwd(struct ocelot *ocelot)
drivers/net/dsa/ocelot/felix_vsc9959.c
2545
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix_vsc9959.c
2549
lockdep_assert_held(&ocelot->fwd_domain_lock);
drivers/net/dsa/ocelot/felix_vsc9959.c
2551
for (port = 0; port < ocelot->num_phys_ports; port++) {
drivers/net/dsa/ocelot/felix_vsc9959.c
2552
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/dsa/ocelot/felix_vsc9959.c
2553
struct ocelot_mm_state *mm = &ocelot->mm[port];
drivers/net/dsa/ocelot/felix_vsc9959.c
2569
mask = ocelot_get_bridge_fwd_mask(ocelot, port);
drivers/net/dsa/ocelot/felix_vsc9959.c
2571
if (ocelot->npi >= 0)
drivers/net/dsa/ocelot/felix_vsc9959.c
2572
mask |= BIT(ocelot->npi);
drivers/net/dsa/ocelot/felix_vsc9959.c
2574
mask |= ocelot_port_assigned_dsa_8021q_cpu_mask(ocelot,
drivers/net/dsa/ocelot/felix_vsc9959.c
2581
for_each_set_bit(other_port, &mask, ocelot->num_phys_ports) {
drivers/net/dsa/ocelot/felix_vsc9959.c
2584
other_ocelot_port = ocelot->ports[other_port];
drivers/net/dsa/ocelot/felix_vsc9959.c
2602
if (vsc9959_port_qmaxsdu_get(ocelot, port, tc))
drivers/net/dsa/ocelot/felix_vsc9959.c
2607
tmp = ocelot_read_rix(ocelot, ANA_CUT_THRU_CFG, port);
drivers/net/dsa/ocelot/felix_vsc9959.c
2611
dev_dbg(ocelot->dev,
drivers/net/dsa/ocelot/felix_vsc9959.c
2616
ocelot_write_rix(ocelot, val, ANA_CUT_THRU_CFG, port);
drivers/net/dsa/ocelot/felix_vsc9959.c
2625
struct ocelot *ocelot = data;
drivers/net/dsa/ocelot/felix_vsc9959.c
2627
ocelot_get_txtstamp(ocelot);
drivers/net/dsa/ocelot/felix_vsc9959.c
2628
ocelot_mm_irq(ocelot);
drivers/net/dsa/ocelot/felix_vsc9959.c
2633
static int vsc9959_request_irq(struct ocelot *ocelot)
drivers/net/dsa/ocelot/felix_vsc9959.c
2635
struct pci_dev *pdev = to_pci_dev(ocelot->dev);
drivers/net/dsa/ocelot/felix_vsc9959.c
2637
return devm_request_threaded_irq(ocelot->dev, pdev->irq, NULL,
drivers/net/dsa/ocelot/felix_vsc9959.c
2639
"felix-intb", ocelot);
drivers/net/dsa/ocelot/felix_vsc9959.c
880
static int vsc9959_gcb_soft_rst_status(struct ocelot *ocelot)
drivers/net/dsa/ocelot/felix_vsc9959.c
884
ocelot_field_read(ocelot, GCB_SOFT_RST_SWC_RST, &val);
drivers/net/dsa/ocelot/felix_vsc9959.c
889
static int vsc9959_sys_ram_init_status(struct ocelot *ocelot)
drivers/net/dsa/ocelot/felix_vsc9959.c
891
return ocelot_read(ocelot, SYS_RAM_INIT);
drivers/net/dsa/ocelot/felix_vsc9959.c
897
static int vsc9959_reset(struct ocelot *ocelot)
drivers/net/dsa/ocelot/felix_vsc9959.c
902
ocelot_field_write(ocelot, GCB_SOFT_RST_SWC_RST, 1);
drivers/net/dsa/ocelot/felix_vsc9959.c
904
err = readx_poll_timeout(vsc9959_gcb_soft_rst_status, ocelot, val, !val,
drivers/net/dsa/ocelot/felix_vsc9959.c
907
dev_err(ocelot->dev, "timeout: switch core reset\n");
drivers/net/dsa/ocelot/felix_vsc9959.c
912
ocelot_write(ocelot, SYS_RAM_INIT_RAM_INIT, SYS_RAM_INIT);
drivers/net/dsa/ocelot/felix_vsc9959.c
913
err = readx_poll_timeout(vsc9959_sys_ram_init_status, ocelot, val, !val,
drivers/net/dsa/ocelot/felix_vsc9959.c
917
dev_err(ocelot->dev, "timeout: switch sram init\n");
drivers/net/dsa/ocelot/felix_vsc9959.c
922
ocelot_field_write(ocelot, SYS_RESET_CFG_CORE_ENA, 1);
drivers/net/dsa/ocelot/felix_vsc9959.c
957
static int vsc9959_mdio_bus_alloc(struct ocelot *ocelot)
drivers/net/dsa/ocelot/felix_vsc9959.c
959
struct pci_dev *pdev = to_pci_dev(ocelot->dev);
drivers/net/dsa/ocelot/felix_vsc9959.c
960
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix_vsc9959.c
962
struct device *dev = ocelot->dev;
drivers/net/dsa/ocelot/seville_vsc9953.c
785
static int vsc9953_gcb_soft_rst_status(struct ocelot *ocelot)
drivers/net/dsa/ocelot/seville_vsc9953.c
789
ocelot_field_read(ocelot, GCB_SOFT_RST_SWC_RST, &val);
drivers/net/dsa/ocelot/seville_vsc9953.c
794
static int vsc9953_sys_ram_init_status(struct ocelot *ocelot)
drivers/net/dsa/ocelot/seville_vsc9953.c
798
ocelot_field_read(ocelot, SYS_RESET_CFG_MEM_INIT, &val);
drivers/net/dsa/ocelot/seville_vsc9953.c
808
static int vsc9953_reset(struct ocelot *ocelot)
drivers/net/dsa/ocelot/seville_vsc9953.c
813
ocelot_field_write(ocelot, GCB_SOFT_RST_SWC_RST, 1);
drivers/net/dsa/ocelot/seville_vsc9953.c
815
err = readx_poll_timeout(vsc9953_gcb_soft_rst_status, ocelot, val, !val,
drivers/net/dsa/ocelot/seville_vsc9953.c
818
dev_err(ocelot->dev, "timeout: switch core reset\n");
drivers/net/dsa/ocelot/seville_vsc9953.c
823
ocelot_field_write(ocelot, SYS_RESET_CFG_MEM_ENA, 1);
drivers/net/dsa/ocelot/seville_vsc9953.c
824
ocelot_field_write(ocelot, SYS_RESET_CFG_MEM_INIT, 1);
drivers/net/dsa/ocelot/seville_vsc9953.c
826
err = readx_poll_timeout(vsc9953_sys_ram_init_status, ocelot, val, !val,
drivers/net/dsa/ocelot/seville_vsc9953.c
830
dev_err(ocelot->dev, "timeout: switch sram init\n");
drivers/net/dsa/ocelot/seville_vsc9953.c
835
ocelot_field_write(ocelot, SYS_RESET_CFG_CORE_ENA, 1);
drivers/net/dsa/ocelot/seville_vsc9953.c
879
static int vsc9953_mdio_bus_alloc(struct ocelot *ocelot)
drivers/net/dsa/ocelot/seville_vsc9953.c
881
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/seville_vsc9953.c
882
struct device *dev = ocelot->dev;
drivers/net/dsa/ocelot/seville_vsc9953.c
896
ocelot->targets[GCB],
drivers/net/dsa/ocelot/seville_vsc9953.c
897
ocelot->map[GCB][GCB_MIIM_MII_STATUS & REG_MASK],
drivers/net/dsa/ocelot/seville_vsc9953.c
914
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/dsa/ocelot/seville_vsc9953.c
936
static void vsc9953_mdio_bus_free(struct ocelot *ocelot)
drivers/net/dsa/ocelot/seville_vsc9953.c
938
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/seville_vsc9953.c
941
for (port = 0; port < ocelot->num_phys_ports; port++) {
drivers/net/ethernet/mscc/ocelot.c
1025
void ocelot_phylink_mac_config(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.c
1029
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
103
int ocelot_mact_learn(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.c
1051
void ocelot_phylink_mac_link_down(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.c
1056
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
1064
if (ocelot->ops->cut_through_fwd) {
drivers/net/ethernet/mscc/ocelot.c
1065
mutex_lock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
1066
ocelot->ops->cut_through_fwd(ocelot);
drivers/net/ethernet/mscc/ocelot.c
1067
mutex_unlock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
1070
ocelot_fields_write(ocelot, port, QSYS_SWITCH_PORT_MODE_PORT_ENA, 0);
drivers/net/ethernet/mscc/ocelot.c
1072
err = ocelot_port_flush(ocelot, port);
drivers/net/ethernet/mscc/ocelot.c
1074
dev_err(ocelot->dev, "failed to flush port %d: %d\n",
drivers/net/ethernet/mscc/ocelot.c
1089
void ocelot_phylink_mac_link_up(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.c
109
mutex_lock(&ocelot->mact_lock);
drivers/net/ethernet/mscc/ocelot.c
1097
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
110
ret = __ocelot_mact_learn(ocelot, port, mac, vid, type);
drivers/net/ethernet/mscc/ocelot.c
111
mutex_unlock(&ocelot->mact_lock);
drivers/net/ethernet/mscc/ocelot.c
1144
dev_err(ocelot->dev, "Unsupported speed on port %d: %d\n",
drivers/net/ethernet/mscc/ocelot.c
1161
ocelot_write_rix(ocelot, mac_fc_cfg, SYS_MAC_FC_CFG, port);
drivers/net/ethernet/mscc/ocelot.c
1163
ocelot_write_rix(ocelot, 0, ANA_POL_FLOWC, port);
drivers/net/ethernet/mscc/ocelot.c
1166
if (port != ocelot->npi)
drivers/net/ethernet/mscc/ocelot.c
1167
ocelot_fields_write(ocelot, port, SYS_PAUSE_CFG_PAUSE_ENA,
drivers/net/ethernet/mscc/ocelot.c
117
int ocelot_mact_forget(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot.c
1179
if (ocelot->ops->cut_through_fwd) {
drivers/net/ethernet/mscc/ocelot.c
1180
mutex_lock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
1186
ocelot_port_update_active_preemptible_tcs(ocelot, port);
drivers/net/ethernet/mscc/ocelot.c
1187
mutex_unlock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
1191
ocelot_fields_write(ocelot, port,
drivers/net/ethernet/mscc/ocelot.c
1196
static int ocelot_rx_frame_word(struct ocelot *ocelot, u8 grp, bool ifh,
drivers/net/ethernet/mscc/ocelot.c
1201
val = ocelot_read_rix(ocelot, QS_XTR_RD, grp);
drivers/net/ethernet/mscc/ocelot.c
1207
val = ocelot_read_rix(ocelot, QS_XTR_RD, grp);
drivers/net/ethernet/mscc/ocelot.c
122
mutex_lock(&ocelot->mact_lock);
drivers/net/ethernet/mscc/ocelot.c
1220
val = ocelot_read_rix(ocelot, QS_XTR_RD, grp);
drivers/net/ethernet/mscc/ocelot.c
1222
*rval = ocelot_read_rix(ocelot, QS_XTR_RD, grp);
drivers/net/ethernet/mscc/ocelot.c
1228
*rval = ocelot_read_rix(ocelot, QS_XTR_RD, grp);
drivers/net/ethernet/mscc/ocelot.c
1238
static int ocelot_xtr_poll_xfh(struct ocelot *ocelot, int grp, u32 *xfh)
drivers/net/ethernet/mscc/ocelot.c
124
ocelot_mact_select(ocelot, mac, vid);
drivers/net/ethernet/mscc/ocelot.c
1243
err = ocelot_rx_frame_word(ocelot, grp, true, &xfh[i]);
drivers/net/ethernet/mscc/ocelot.c
1251
void ocelot_ptp_rx_timestamp(struct ocelot *ocelot, struct sk_buff *skb,
drivers/net/ethernet/mscc/ocelot.c
1258
ocelot_ptp_gettime64(&ocelot->ptp_info, &ts);
drivers/net/ethernet/mscc/ocelot.c
127
ocelot_write(ocelot,
drivers/net/ethernet/mscc/ocelot.c
1274
void ocelot_lock_inj_grp(struct ocelot *ocelot, int grp)
drivers/net/ethernet/mscc/ocelot.c
1275
__acquires(&ocelot->inj_lock)
drivers/net/ethernet/mscc/ocelot.c
1277
spin_lock(&ocelot->inj_lock);
drivers/net/ethernet/mscc/ocelot.c
1281
void ocelot_unlock_inj_grp(struct ocelot *ocelot, int grp)
drivers/net/ethernet/mscc/ocelot.c
1282
__releases(&ocelot->inj_lock)
drivers/net/ethernet/mscc/ocelot.c
1284
spin_unlock(&ocelot->inj_lock);
drivers/net/ethernet/mscc/ocelot.c
1288
void ocelot_lock_xtr_grp(struct ocelot *ocelot, int grp)
drivers/net/ethernet/mscc/ocelot.c
1289
__acquires(&ocelot->inj_lock)
drivers/net/ethernet/mscc/ocelot.c
1291
spin_lock(&ocelot->inj_lock);
drivers/net/ethernet/mscc/ocelot.c
1295
void ocelot_unlock_xtr_grp(struct ocelot *ocelot, int grp)
drivers/net/ethernet/mscc/ocelot.c
1296
__releases(&ocelot->inj_lock)
drivers/net/ethernet/mscc/ocelot.c
1298
spin_unlock(&ocelot->inj_lock);
drivers/net/ethernet/mscc/ocelot.c
1302
void ocelot_lock_xtr_grp_bh(struct ocelot *ocelot, int grp)
drivers/net/ethernet/mscc/ocelot.c
1303
__acquires(&ocelot->xtr_lock)
drivers/net/ethernet/mscc/ocelot.c
1305
spin_lock_bh(&ocelot->xtr_lock);
drivers/net/ethernet/mscc/ocelot.c
1309
void ocelot_unlock_xtr_grp_bh(struct ocelot *ocelot, int grp)
drivers/net/ethernet/mscc/ocelot.c
131
err = ocelot_mact_wait_for_completion(ocelot);
drivers/net/ethernet/mscc/ocelot.c
1310
__releases(&ocelot->xtr_lock)
drivers/net/ethernet/mscc/ocelot.c
1312
spin_unlock_bh(&ocelot->xtr_lock);
drivers/net/ethernet/mscc/ocelot.c
1316
int ocelot_xtr_poll_frame(struct ocelot *ocelot, int grp, struct sk_buff **nskb)
drivers/net/ethernet/mscc/ocelot.c
1326
lockdep_assert_held(&ocelot->xtr_lock);
drivers/net/ethernet/mscc/ocelot.c
1328
err = ocelot_xtr_poll_xfh(ocelot, grp, xfh);
drivers/net/ethernet/mscc/ocelot.c
133
mutex_unlock(&ocelot->mact_lock);
drivers/net/ethernet/mscc/ocelot.c
1336
if (WARN_ON(src_port >= ocelot->num_phys_ports))
drivers/net/ethernet/mscc/ocelot.c
1339
dev = ocelot->ops->port_to_netdev(ocelot, src_port);
drivers/net/ethernet/mscc/ocelot.c
1354
sz = ocelot_rx_frame_word(ocelot, grp, false, &val);
drivers/net/ethernet/mscc/ocelot.c
1364
sz = ocelot_rx_frame_word(ocelot, grp, false, &val);
drivers/net/ethernet/mscc/ocelot.c
1378
if (ocelot->ptp)
drivers/net/ethernet/mscc/ocelot.c
1379
ocelot_ptp_rx_timestamp(ocelot, skb, timestamp);
drivers/net/ethernet/mscc/ocelot.c
1384
if (ocelot->ports[src_port]->bridge)
drivers/net/ethernet/mscc/ocelot.c
139
int ocelot_mact_lookup(struct ocelot *ocelot, int *dst_idx,
drivers/net/ethernet/mscc/ocelot.c
1399
bool ocelot_can_inject(struct ocelot *ocelot, int grp)
drivers/net/ethernet/mscc/ocelot.c
1401
u32 val = ocelot_read(ocelot, QS_INJ_STATUS);
drivers/net/ethernet/mscc/ocelot.c
1403
lockdep_assert_held(&ocelot->inj_lock);
drivers/net/ethernet/mscc/ocelot.c
1425
void ocelot_ifh_set_basic(void *ifh, struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.c
1428
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
1441
ocelot_ifh_set_src(ifh, ocelot->num_phys_ports);
drivers/net/ethernet/mscc/ocelot.c
145
mutex_lock(&ocelot->mact_lock);
drivers/net/ethernet/mscc/ocelot.c
1451
void ocelot_port_inject_frame(struct ocelot *ocelot, int port, int grp,
drivers/net/ethernet/mscc/ocelot.c
1457
lockdep_assert_held(&ocelot->inj_lock);
drivers/net/ethernet/mscc/ocelot.c
1459
ocelot_write_rix(ocelot, QS_INJ_CTRL_GAP_SIZE(1) |
drivers/net/ethernet/mscc/ocelot.c
1462
ocelot_ifh_set_basic(ifh, ocelot, port, rew_op, skb);
drivers/net/ethernet/mscc/ocelot.c
1465
ocelot_write_rix(ocelot, ifh[i], QS_INJ_WR, grp);
drivers/net/ethernet/mscc/ocelot.c
147
ocelot_mact_select(ocelot, mac, vid);
drivers/net/ethernet/mscc/ocelot.c
1470
ocelot_write_rix(ocelot, ((u32 *)skb->data)[i], QS_INJ_WR, grp);
drivers/net/ethernet/mscc/ocelot.c
1474
ocelot_write_rix(ocelot, 0, QS_INJ_WR, grp);
drivers/net/ethernet/mscc/ocelot.c
1479
ocelot_write_rix(ocelot, QS_INJ_CTRL_GAP_SIZE(1) |
drivers/net/ethernet/mscc/ocelot.c
1485
ocelot_write_rix(ocelot, 0, QS_INJ_WR, grp);
drivers/net/ethernet/mscc/ocelot.c
1493
void ocelot_drain_cpu_queue(struct ocelot *ocelot, int grp)
drivers/net/ethernet/mscc/ocelot.c
1495
lockdep_assert_held(&ocelot->xtr_lock);
drivers/net/ethernet/mscc/ocelot.c
1497
while (ocelot_read(ocelot, QS_XTR_DATA_PRESENT) & BIT(grp))
drivers/net/ethernet/mscc/ocelot.c
1498
ocelot_read_rix(ocelot, QS_XTR_RD, grp);
drivers/net/ethernet/mscc/ocelot.c
150
ocelot_write(ocelot, ANA_TABLES_MACACCESS_VALID |
drivers/net/ethernet/mscc/ocelot.c
1502
int ocelot_fdb_add(struct ocelot *ocelot, int port, const unsigned char *addr,
drivers/net/ethernet/mscc/ocelot.c
1506
vid = ocelot_vlan_unaware_pvid(ocelot, bridge);
drivers/net/ethernet/mscc/ocelot.c
1508
return ocelot_mact_learn(ocelot, port, addr, vid, ENTRYTYPE_LOCKED);
drivers/net/ethernet/mscc/ocelot.c
1512
int ocelot_fdb_del(struct ocelot *ocelot, int port, const unsigned char *addr,
drivers/net/ethernet/mscc/ocelot.c
1516
vid = ocelot_vlan_unaware_pvid(ocelot, bridge);
drivers/net/ethernet/mscc/ocelot.c
1518
return ocelot_mact_forget(ocelot, addr, vid);
drivers/net/ethernet/mscc/ocelot.c
1523
static int ocelot_mact_read(struct ocelot *ocelot, int port, int row, int col,
drivers/net/ethernet/mscc/ocelot.c
1530
ocelot_field_write(ocelot, ANA_TABLES_MACTINDX_M_INDEX, row);
drivers/net/ethernet/mscc/ocelot.c
1531
ocelot_field_write(ocelot, ANA_TABLES_MACTINDX_BUCKET, col);
drivers/net/ethernet/mscc/ocelot.c
1534
ocelot_write(ocelot,
drivers/net/ethernet/mscc/ocelot.c
1538
if (ocelot_mact_wait_for_completion(ocelot))
drivers/net/ethernet/mscc/ocelot.c
154
if (ocelot_mact_wait_for_completion(ocelot)) {
drivers/net/ethernet/mscc/ocelot.c
1542
val = ocelot_read(ocelot, ANA_TABLES_MACACCESS);
drivers/net/ethernet/mscc/ocelot.c
155
mutex_unlock(&ocelot->mact_lock);
drivers/net/ethernet/mscc/ocelot.c
1554
macl = ocelot_read(ocelot, ANA_TABLES_MACLDATA);
drivers/net/ethernet/mscc/ocelot.c
1555
mach = ocelot_read(ocelot, ANA_TABLES_MACHDATA);
drivers/net/ethernet/mscc/ocelot.c
1570
int ocelot_mact_flush(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot.c
1574
mutex_lock(&ocelot->mact_lock);
drivers/net/ethernet/mscc/ocelot.c
1577
ocelot_write(ocelot, ANA_ANAGEFIL_PID_EN | ANA_ANAGEFIL_PID_VAL(port),
drivers/net/ethernet/mscc/ocelot.c
1581
ocelot_write(ocelot,
drivers/net/ethernet/mscc/ocelot.c
1585
err = ocelot_mact_wait_for_completion(ocelot);
drivers/net/ethernet/mscc/ocelot.c
1587
mutex_unlock(&ocelot->mact_lock);
drivers/net/ethernet/mscc/ocelot.c
1592
ocelot_write(ocelot,
drivers/net/ethernet/mscc/ocelot.c
1596
err = ocelot_mact_wait_for_completion(ocelot);
drivers/net/ethernet/mscc/ocelot.c
1599
ocelot_write(ocelot, 0, ANA_ANAGEFIL);
drivers/net/ethernet/mscc/ocelot.c
160
val = ocelot_read(ocelot, ANA_TABLES_MACACCESS);
drivers/net/ethernet/mscc/ocelot.c
1601
mutex_unlock(&ocelot->mact_lock);
drivers/net/ethernet/mscc/ocelot.c
1607
int ocelot_fdb_dump(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.c
1616
mutex_lock(&ocelot->mact_lock);
drivers/net/ethernet/mscc/ocelot.c
1619
for (i = 0; i < ocelot->num_mact_rows; i++) {
drivers/net/ethernet/mscc/ocelot.c
162
mutex_unlock(&ocelot->mact_lock);
drivers/net/ethernet/mscc/ocelot.c
1624
err = ocelot_mact_read(ocelot, port, i, j, &entry);
drivers/net/ethernet/mscc/ocelot.c
1647
mutex_unlock(&ocelot->mact_lock);
drivers/net/ethernet/mscc/ocelot.c
1653
int ocelot_trap_add(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.c
1662
block_vcap_is2 = &ocelot->block[VCAP_IS2];
drivers/net/ethernet/mscc/ocelot.c
1689
err = ocelot_vcap_filter_add(ocelot, trap, NULL);
drivers/net/ethernet/mscc/ocelot.c
1691
err = ocelot_vcap_filter_replace(ocelot, trap);
drivers/net/ethernet/mscc/ocelot.c
1702
int ocelot_trap_del(struct ocelot *ocelot, int port, unsigned long cookie)
drivers/net/ethernet/mscc/ocelot.c
1707
block_vcap_is2 = &ocelot->block[VCAP_IS2];
drivers/net/ethernet/mscc/ocelot.c
1716
return ocelot_vcap_filter_del(ocelot, trap);
drivers/net/ethernet/mscc/ocelot.c
1718
return ocelot_vcap_filter_replace(ocelot, trap);
drivers/net/ethernet/mscc/ocelot.c
1721
static u32 ocelot_get_bond_mask(struct ocelot *ocelot, struct net_device *bond)
drivers/net/ethernet/mscc/ocelot.c
1726
lockdep_assert_held(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
1728
for (port = 0; port < ocelot->num_phys_ports; port++) {
drivers/net/ethernet/mscc/ocelot.c
1729
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
174
int ocelot_mact_learn_streamdata(struct ocelot *ocelot, int dst_idx,
drivers/net/ethernet/mscc/ocelot.c
1744
int ocelot_bond_get_id(struct ocelot *ocelot, struct net_device *bond)
drivers/net/ethernet/mscc/ocelot.c
1746
int bond_mask = ocelot_get_bond_mask(ocelot, bond);
drivers/net/ethernet/mscc/ocelot.c
1765
static u32 ocelot_dsa_8021q_cpu_assigned_ports(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot.c
1771
for (port = 0; port < ocelot->num_phys_ports; port++) {
drivers/net/ethernet/mscc/ocelot.c
1772
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
1782
mask &= ~ocelot_get_bond_mask(ocelot, cpu->bond);
drivers/net/ethernet/mscc/ocelot.c
1790
u32 ocelot_port_assigned_dsa_8021q_cpu_mask(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot.c
1792
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
1799
return ocelot_get_bond_mask(ocelot, cpu_port->bond);
drivers/net/ethernet/mscc/ocelot.c
1805
u32 ocelot_get_bridge_fwd_mask(struct ocelot *ocelot, int src_port)
drivers/net/ethernet/mscc/ocelot.c
1807
struct ocelot_port *ocelot_port = ocelot->ports[src_port];
drivers/net/ethernet/mscc/ocelot.c
1819
for (port = 0; port < ocelot->num_phys_ports; port++) {
drivers/net/ethernet/mscc/ocelot.c
182
mutex_lock(&ocelot->mact_lock);
drivers/net/ethernet/mscc/ocelot.c
1820
ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
1834
static void ocelot_apply_bridge_fwd_mask(struct ocelot *ocelot, bool joining)
drivers/net/ethernet/mscc/ocelot.c
1838
lockdep_assert_held(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
184
ocelot_write(ocelot,
drivers/net/ethernet/mscc/ocelot.c
1844
if (joining && ocelot->ops->cut_through_fwd)
drivers/net/ethernet/mscc/ocelot.c
1845
ocelot->ops->cut_through_fwd(ocelot);
drivers/net/ethernet/mscc/ocelot.c
1850
for (port = 0; port < ocelot->num_phys_ports; port++) {
drivers/net/ethernet/mscc/ocelot.c
1851
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
1861
mask = ocelot_dsa_8021q_cpu_assigned_ports(ocelot,
drivers/net/ethernet/mscc/ocelot.c
1866
mask = ocelot_get_bridge_fwd_mask(ocelot, port);
drivers/net/ethernet/mscc/ocelot.c
1869
mask |= ocelot_port_assigned_dsa_8021q_cpu_mask(ocelot,
drivers/net/ethernet/mscc/ocelot.c
1873
mask &= ~ocelot_get_bond_mask(ocelot, bond);
drivers/net/ethernet/mscc/ocelot.c
1879
mask = ocelot_port_assigned_dsa_8021q_cpu_mask(ocelot,
drivers/net/ethernet/mscc/ocelot.c
1883
ocelot_write_rix(ocelot, mask, ANA_PGID_PGID, PGID_SRC + port);
drivers/net/ethernet/mscc/ocelot.c
1893
if (!joining && ocelot->ops->cut_through_fwd)
drivers/net/ethernet/mscc/ocelot.c
1894
ocelot->ops->cut_through_fwd(ocelot);
drivers/net/ethernet/mscc/ocelot.c
1904
static void ocelot_update_pgid_cpu(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot.c
1909
for (port = 0; port < ocelot->num_phys_ports; port++) {
drivers/net/ethernet/mscc/ocelot.c
191
ret = __ocelot_mact_learn(ocelot, dst_idx, mac, vid, type);
drivers/net/ethernet/mscc/ocelot.c
1910
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
1919
pgid_cpu = BIT(ocelot->num_phys_ports);
drivers/net/ethernet/mscc/ocelot.c
1921
ocelot_write_rix(ocelot, pgid_cpu, ANA_PGID_PGID, PGID_CPU);
drivers/net/ethernet/mscc/ocelot.c
1924
void ocelot_port_setup_dsa_8021q_cpu(struct ocelot *ocelot, int cpu)
drivers/net/ethernet/mscc/ocelot.c
1926
struct ocelot_port *cpu_port = ocelot->ports[cpu];
drivers/net/ethernet/mscc/ocelot.c
1929
mutex_lock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
193
mutex_unlock(&ocelot->mact_lock);
drivers/net/ethernet/mscc/ocelot.c
1934
ocelot_vlan_member_add(ocelot, cpu, vid, true);
drivers/net/ethernet/mscc/ocelot.c
1936
ocelot_update_pgid_cpu(ocelot);
drivers/net/ethernet/mscc/ocelot.c
1938
mutex_unlock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
1942
void ocelot_port_teardown_dsa_8021q_cpu(struct ocelot *ocelot, int cpu)
drivers/net/ethernet/mscc/ocelot.c
1944
struct ocelot_port *cpu_port = ocelot->ports[cpu];
drivers/net/ethernet/mscc/ocelot.c
1947
mutex_lock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
1952
ocelot_vlan_member_del(ocelot, cpu_port->index, vid);
drivers/net/ethernet/mscc/ocelot.c
1954
ocelot_update_pgid_cpu(ocelot);
drivers/net/ethernet/mscc/ocelot.c
1956
mutex_unlock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
1960
void ocelot_port_assign_dsa_8021q_cpu(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.c
1963
struct ocelot_port *cpu_port = ocelot->ports[cpu];
drivers/net/ethernet/mscc/ocelot.c
1965
mutex_lock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
1967
ocelot->ports[port]->dsa_8021q_cpu = cpu_port;
drivers/net/ethernet/mscc/ocelot.c
1968
ocelot_apply_bridge_fwd_mask(ocelot, true);
drivers/net/ethernet/mscc/ocelot.c
1970
mutex_unlock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
1974
void ocelot_port_unassign_dsa_8021q_cpu(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot.c
1976
mutex_lock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
1978
ocelot->ports[port]->dsa_8021q_cpu = NULL;
drivers/net/ethernet/mscc/ocelot.c
1979
ocelot_apply_bridge_fwd_mask(ocelot, true);
drivers/net/ethernet/mscc/ocelot.c
1981
mutex_unlock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
1985
void ocelot_bridge_stp_state_set(struct ocelot *ocelot, int port, u8 state)
drivers/net/ethernet/mscc/ocelot.c
1987
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
199
static void ocelot_mact_init(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot.c
1990
mutex_lock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
1998
ocelot_rmw_gix(ocelot, learn_ena, ANA_PORT_PORT_CFG_LEARN_ENA,
drivers/net/ethernet/mscc/ocelot.c
2001
ocelot_apply_bridge_fwd_mask(ocelot, state == BR_STATE_FORWARDING);
drivers/net/ethernet/mscc/ocelot.c
2003
mutex_unlock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
2007
void ocelot_set_ageing_time(struct ocelot *ocelot, unsigned int msecs)
drivers/net/ethernet/mscc/ocelot.c
2017
ocelot_rmw(ocelot, age_period, ANA_AUTOAGE_AGE_PERIOD_M, ANA_AUTOAGE);
drivers/net/ethernet/mscc/ocelot.c
2021
static struct ocelot_multicast *ocelot_multicast_get(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot.c
2027
list_for_each_entry(mc, &ocelot->multicast, list) {
drivers/net/ethernet/mscc/ocelot.c
2044
static struct ocelot_pgid *ocelot_pgid_alloc(struct ocelot *ocelot, int index,
drivers/net/ethernet/mscc/ocelot.c
205
ocelot_rmw(ocelot, 0,
drivers/net/ethernet/mscc/ocelot.c
2056
list_add_tail(&pgid->list, &ocelot->pgids);
drivers/net/ethernet/mscc/ocelot.c
2061
static void ocelot_pgid_free(struct ocelot *ocelot, struct ocelot_pgid *pgid)
drivers/net/ethernet/mscc/ocelot.c
2070
static struct ocelot_pgid *ocelot_mdb_get_pgid(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot.c
2083
return ocelot_pgid_alloc(ocelot, 0, mc->ports);
drivers/net/ethernet/mscc/ocelot.c
2085
list_for_each_entry(pgid, &ocelot->pgids, list) {
drivers/net/ethernet/mscc/ocelot.c
2096
for_each_nonreserved_multicast_dest_pgid(ocelot, index) {
drivers/net/ethernet/mscc/ocelot.c
2099
list_for_each_entry(pgid, &ocelot->pgids, list) {
drivers/net/ethernet/mscc/ocelot.c
2107
return ocelot_pgid_alloc(ocelot, index, mc->ports);
drivers/net/ethernet/mscc/ocelot.c
2128
int ocelot_port_mdb_add(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.c
2138
vid = ocelot_vlan_unaware_pvid(ocelot, bridge);
drivers/net/ethernet/mscc/ocelot.c
214
ocelot_write(ocelot, MACACCESS_CMD_INIT, ANA_TABLES_MACACCESS);
drivers/net/ethernet/mscc/ocelot.c
2140
mc = ocelot_multicast_get(ocelot, mdb->addr, vid);
drivers/net/ethernet/mscc/ocelot.c
2143
mc = devm_kzalloc(ocelot->dev, sizeof(*mc), GFP_KERNEL);
drivers/net/ethernet/mscc/ocelot.c
2151
list_add_tail(&mc->list, &ocelot->multicast);
drivers/net/ethernet/mscc/ocelot.c
2156
ocelot_pgid_free(ocelot, mc->pgid);
drivers/net/ethernet/mscc/ocelot.c
2158
ocelot_mact_forget(ocelot, addr, vid);
drivers/net/ethernet/mscc/ocelot.c
2163
pgid = ocelot_mdb_get_pgid(ocelot, mc);
drivers/net/ethernet/mscc/ocelot.c
2165
dev_err(ocelot->dev,
drivers/net/ethernet/mscc/ocelot.c
2168
devm_kfree(ocelot->dev, mc);
drivers/net/ethernet/mscc/ocelot.c
217
void ocelot_pll5_init(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot.c
2177
ocelot_write_rix(ocelot, pgid->ports, ANA_PGID_PGID,
drivers/net/ethernet/mscc/ocelot.c
2180
return ocelot_mact_learn(ocelot, pgid->index, addr, vid,
drivers/net/ethernet/mscc/ocelot.c
2185
int ocelot_port_mdb_del(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.c
2195
vid = ocelot_vlan_unaware_pvid(ocelot, bridge);
drivers/net/ethernet/mscc/ocelot.c
2197
mc = ocelot_multicast_get(ocelot, mdb->addr, vid);
drivers/net/ethernet/mscc/ocelot.c
2202
ocelot_mact_forget(ocelot, addr, vid);
drivers/net/ethernet/mscc/ocelot.c
2204
ocelot_pgid_free(ocelot, mc->pgid);
drivers/net/ethernet/mscc/ocelot.c
2208
devm_kfree(ocelot->dev, mc);
drivers/net/ethernet/mscc/ocelot.c
2213
pgid = ocelot_mdb_get_pgid(ocelot, mc);
drivers/net/ethernet/mscc/ocelot.c
222
regmap_write(ocelot->targets[HSIO], HSIO_PLL5G_CFG4,
drivers/net/ethernet/mscc/ocelot.c
2222
ocelot_write_rix(ocelot, pgid->ports, ANA_PGID_PGID,
drivers/net/ethernet/mscc/ocelot.c
2225
return ocelot_mact_learn(ocelot, pgid->index, addr, vid,
drivers/net/ethernet/mscc/ocelot.c
2230
int ocelot_port_bridge_join(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.c
2234
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
2237
err = ocelot_single_vlan_aware_bridge(ocelot, extack);
drivers/net/ethernet/mscc/ocelot.c
2241
mutex_lock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
2246
ocelot_apply_bridge_fwd_mask(ocelot, true);
drivers/net/ethernet/mscc/ocelot.c
2248
mutex_unlock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
225
regmap_write(ocelot->targets[HSIO], HSIO_PLL5G_CFG0,
drivers/net/ethernet/mscc/ocelot.c
2253
return ocelot_add_vlan_unaware_pvid(ocelot, port, bridge);
drivers/net/ethernet/mscc/ocelot.c
2257
void ocelot_port_bridge_leave(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.c
2260
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
2262
mutex_lock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
2265
ocelot_del_vlan_unaware_pvid(ocelot, port, bridge);
drivers/net/ethernet/mscc/ocelot.c
2270
ocelot_port_set_pvid(ocelot, port, NULL);
drivers/net/ethernet/mscc/ocelot.c
2271
ocelot_port_manage_port_tag(ocelot, port);
drivers/net/ethernet/mscc/ocelot.c
2272
ocelot_apply_bridge_fwd_mask(ocelot, false);
drivers/net/ethernet/mscc/ocelot.c
2274
mutex_unlock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
2278
static void ocelot_set_aggr_pgids(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot.c
2280
unsigned long visited = GENMASK(ocelot->num_phys_ports - 1, 0);
drivers/net/ethernet/mscc/ocelot.c
2284
for_each_unicast_dest_pgid(ocelot, port)
drivers/net/ethernet/mscc/ocelot.c
2285
ocelot_write_rix(ocelot, BIT(port), ANA_PGID_PGID, port);
drivers/net/ethernet/mscc/ocelot.c
2287
for_each_aggr_pgid(ocelot, i)
drivers/net/ethernet/mscc/ocelot.c
2288
ocelot_write_rix(ocelot, GENMASK(ocelot->num_phys_ports - 1, 0),
drivers/net/ethernet/mscc/ocelot.c
2299
for (port = 0; port < ocelot->num_phys_ports; port++) {
drivers/net/ethernet/mscc/ocelot.c
2300
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
2309
for (lag = 0; lag < ocelot->num_phys_ports; lag++) {
drivers/net/ethernet/mscc/ocelot.c
2310
struct ocelot_port *ocelot_port = ocelot->ports[lag];
drivers/net/ethernet/mscc/ocelot.c
2320
bond_mask = ocelot_get_bond_mask(ocelot, bond);
drivers/net/ethernet/mscc/ocelot.c
2322
for_each_set_bit(port, &bond_mask, ocelot->num_phys_ports) {
drivers/net/ethernet/mscc/ocelot.c
2323
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
2326
ocelot_write_rix(ocelot, bond_mask,
drivers/net/ethernet/mscc/ocelot.c
2333
for_each_aggr_pgid(ocelot, i) {
drivers/net/ethernet/mscc/ocelot.c
2336
ac = ocelot_read_rix(ocelot, ANA_PGID_PGID, i);
drivers/net/ethernet/mscc/ocelot.c
2343
ocelot_write_rix(ocelot, ac, ANA_PGID_PGID, i);
drivers/net/ethernet/mscc/ocelot.c
2349
for (port = lag; port < ocelot->num_phys_ports; port++) {
drivers/net/ethernet/mscc/ocelot.c
2350
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
2366
static void ocelot_setup_logical_port_ids(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot.c
237
regmap_write(ocelot->targets[HSIO], HSIO_PLL5G_CFG2,
drivers/net/ethernet/mscc/ocelot.c
2370
for (port = 0; port < ocelot->num_phys_ports; port++) {
drivers/net/ethernet/mscc/ocelot.c
2371
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
2379
int lag = ocelot_bond_get_id(ocelot, bond);
drivers/net/ethernet/mscc/ocelot.c
2381
ocelot_rmw_gix(ocelot,
drivers/net/ethernet/mscc/ocelot.c
2386
ocelot_rmw_gix(ocelot,
drivers/net/ethernet/mscc/ocelot.c
2394
static int ocelot_migrate_mc(struct ocelot *ocelot, struct ocelot_multicast *mc,
drivers/net/ethernet/mscc/ocelot.c
2401
dev_dbg(ocelot->dev,
drivers/net/ethernet/mscc/ocelot.c
2408
ocelot_pgid_free(ocelot, mc->pgid);
drivers/net/ethernet/mscc/ocelot.c
2410
ocelot_mact_forget(ocelot, addr, vid);
drivers/net/ethernet/mscc/ocelot.c
2415
pgid = ocelot_mdb_get_pgid(ocelot, mc);
drivers/net/ethernet/mscc/ocelot.c
2417
dev_err(ocelot->dev,
drivers/net/ethernet/mscc/ocelot.c
2420
devm_kfree(ocelot->dev, mc);
drivers/net/ethernet/mscc/ocelot.c
2429
ocelot_write_rix(ocelot, pgid->ports, ANA_PGID_PGID,
drivers/net/ethernet/mscc/ocelot.c
2432
return ocelot_mact_learn(ocelot, pgid->index, addr, vid,
drivers/net/ethernet/mscc/ocelot.c
2436
int ocelot_migrate_mdbs(struct ocelot *ocelot, unsigned long from_mask,
drivers/net/ethernet/mscc/ocelot.c
2442
list_for_each_entry(mc, &ocelot->multicast, list) {
drivers/net/ethernet/mscc/ocelot.c
2446
err = ocelot_migrate_mc(ocelot, mc, from_mask, to_mask);
drivers/net/ethernet/mscc/ocelot.c
2465
static void ocelot_migrate_lag_fdbs(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot.c
247
static void ocelot_vcap_enable(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot.c
2472
lockdep_assert_held(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
2474
list_for_each_entry(fdb, &ocelot->lag_fdbs, list) {
drivers/net/ethernet/mscc/ocelot.c
2478
err = ocelot_mact_forget(ocelot, fdb->addr, fdb->vid);
drivers/net/ethernet/mscc/ocelot.c
2480
dev_err(ocelot->dev,
drivers/net/ethernet/mscc/ocelot.c
2485
err = ocelot_mact_learn(ocelot, lag, fdb->addr, fdb->vid,
drivers/net/ethernet/mscc/ocelot.c
2488
dev_err(ocelot->dev,
drivers/net/ethernet/mscc/ocelot.c
249
ocelot_write_gix(ocelot, ANA_PORT_VCAP_S2_CFG_S2_ENA |
drivers/net/ethernet/mscc/ocelot.c
2495
int ocelot_port_lag_join(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.c
2506
mutex_lock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
2508
ocelot->ports[port]->bond = bond;
drivers/net/ethernet/mscc/ocelot.c
2510
ocelot_setup_logical_port_ids(ocelot);
drivers/net/ethernet/mscc/ocelot.c
2511
ocelot_apply_bridge_fwd_mask(ocelot, true);
drivers/net/ethernet/mscc/ocelot.c
2512
ocelot_set_aggr_pgids(ocelot);
drivers/net/ethernet/mscc/ocelot.c
2514
mutex_unlock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
2520
void ocelot_port_lag_leave(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.c
2525
mutex_lock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
2527
old_lag_id = ocelot_bond_get_id(ocelot, bond);
drivers/net/ethernet/mscc/ocelot.c
2529
ocelot->ports[port]->bond = NULL;
drivers/net/ethernet/mscc/ocelot.c
253
ocelot_write_gix(ocelot, ANA_PORT_VCAP_CFG_S1_ENA,
drivers/net/ethernet/mscc/ocelot.c
2531
ocelot_setup_logical_port_ids(ocelot);
drivers/net/ethernet/mscc/ocelot.c
2532
ocelot_apply_bridge_fwd_mask(ocelot, false);
drivers/net/ethernet/mscc/ocelot.c
2533
ocelot_set_aggr_pgids(ocelot);
drivers/net/ethernet/mscc/ocelot.c
2535
new_lag_id = ocelot_bond_get_id(ocelot, bond);
drivers/net/ethernet/mscc/ocelot.c
2538
ocelot_migrate_lag_fdbs(ocelot, bond, new_lag_id);
drivers/net/ethernet/mscc/ocelot.c
2540
mutex_unlock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
2544
void ocelot_port_lag_change(struct ocelot *ocelot, int port, bool lag_tx_active)
drivers/net/ethernet/mscc/ocelot.c
2546
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
2548
mutex_lock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
2553
ocelot_set_aggr_pgids(ocelot);
drivers/net/ethernet/mscc/ocelot.c
2555
mutex_unlock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
2559
int ocelot_lag_fdb_add(struct ocelot *ocelot, struct net_device *bond,
drivers/net/ethernet/mscc/ocelot.c
256
ocelot_rmw_gix(ocelot, REW_PORT_CFG_ES0_EN,
drivers/net/ethernet/mscc/ocelot.c
2570
mutex_lock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
2573
vid = ocelot_vlan_unaware_pvid(ocelot, bridge);
drivers/net/ethernet/mscc/ocelot.c
2579
lag = ocelot_bond_get_id(ocelot, bond);
drivers/net/ethernet/mscc/ocelot.c
2581
err = ocelot_mact_learn(ocelot, lag, addr, vid, ENTRYTYPE_LOCKED);
drivers/net/ethernet/mscc/ocelot.c
2583
mutex_unlock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
2588
list_add_tail(&fdb->list, &ocelot->lag_fdbs);
drivers/net/ethernet/mscc/ocelot.c
2589
mutex_unlock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
2595
int ocelot_lag_fdb_del(struct ocelot *ocelot, struct net_device *bond,
drivers/net/ethernet/mscc/ocelot.c
2601
mutex_lock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
2604
vid = ocelot_vlan_unaware_pvid(ocelot, bridge);
drivers/net/ethernet/mscc/ocelot.c
2606
list_for_each_entry_safe(fdb, tmp, &ocelot->lag_fdbs, list) {
drivers/net/ethernet/mscc/ocelot.c
261
static int ocelot_single_vlan_aware_bridge(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot.c
2611
ocelot_mact_forget(ocelot, addr, vid);
drivers/net/ethernet/mscc/ocelot.c
2613
mutex_unlock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
2619
mutex_unlock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
2631
void ocelot_port_set_maxlen(struct ocelot *ocelot, int port, size_t sdu)
drivers/net/ethernet/mscc/ocelot.c
2633
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
2638
if (port == ocelot->npi) {
drivers/net/ethernet/mscc/ocelot.c
2641
if (ocelot->npi_inj_prefix == OCELOT_TAG_PREFIX_SHORT)
drivers/net/ethernet/mscc/ocelot.c
2643
else if (ocelot->npi_inj_prefix == OCELOT_TAG_PREFIX_LONG)
drivers/net/ethernet/mscc/ocelot.c
2652
ocelot_fields_write(ocelot, port, SYS_PAUSE_CFG_PAUSE_START,
drivers/net/ethernet/mscc/ocelot.c
2654
ocelot_fields_write(ocelot, port, SYS_PAUSE_CFG_PAUSE_STOP,
drivers/net/ethernet/mscc/ocelot.c
2658
atop_tot = (ocelot->packet_buffer_size - 9 * maxlen) /
drivers/net/ethernet/mscc/ocelot.c
2661
ocelot_write_rix(ocelot, ocelot->ops->wm_enc(atop), SYS_ATOP, port);
drivers/net/ethernet/mscc/ocelot.c
2662
ocelot_write(ocelot, ocelot->ops->wm_enc(atop_tot), SYS_ATOP_TOT_CFG);
drivers/net/ethernet/mscc/ocelot.c
2666
int ocelot_get_max_mtu(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot.c
267
for (port = 0; port < ocelot->num_phys_ports; port++) {
drivers/net/ethernet/mscc/ocelot.c
2670
if (port == ocelot->npi) {
drivers/net/ethernet/mscc/ocelot.c
2673
if (ocelot->npi_inj_prefix == OCELOT_TAG_PREFIX_SHORT)
drivers/net/ethernet/mscc/ocelot.c
2675
else if (ocelot->npi_inj_prefix == OCELOT_TAG_PREFIX_LONG)
drivers/net/ethernet/mscc/ocelot.c
268
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
2683
static void ocelot_port_set_learning(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.c
2686
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
2692
ocelot_rmw_gix(ocelot, val, ANA_PORT_PORT_CFG_LEARN_ENA,
drivers/net/ethernet/mscc/ocelot.c
2698
static void ocelot_port_set_ucast_flood(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.c
2706
ocelot_rmw_rix(ocelot, val, BIT(port), ANA_PGID_PGID, PGID_UC);
drivers/net/ethernet/mscc/ocelot.c
2709
static void ocelot_port_set_mcast_flood(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.c
2717
ocelot_rmw_rix(ocelot, val, BIT(port), ANA_PGID_PGID, PGID_MC);
drivers/net/ethernet/mscc/ocelot.c
2718
ocelot_rmw_rix(ocelot, val, BIT(port), ANA_PGID_PGID, PGID_MCIPV4);
drivers/net/ethernet/mscc/ocelot.c
2719
ocelot_rmw_rix(ocelot, val, BIT(port), ANA_PGID_PGID, PGID_MCIPV6);
drivers/net/ethernet/mscc/ocelot.c
2722
static void ocelot_port_set_bcast_flood(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.c
2730
ocelot_rmw_rix(ocelot, val, BIT(port), ANA_PGID_PGID, PGID_BC);
drivers/net/ethernet/mscc/ocelot.c
2733
int ocelot_port_pre_bridge_flags(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.c
2744
void ocelot_port_bridge_flags(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.c
2748
ocelot_port_set_learning(ocelot, port,
drivers/net/ethernet/mscc/ocelot.c
2752
ocelot_port_set_ucast_flood(ocelot, port,
drivers/net/ethernet/mscc/ocelot.c
2756
ocelot_port_set_mcast_flood(ocelot, port,
drivers/net/ethernet/mscc/ocelot.c
2760
ocelot_port_set_bcast_flood(ocelot, port,
drivers/net/ethernet/mscc/ocelot.c
2765
int ocelot_port_get_default_prio(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot.c
2767
int val = ocelot_read_gix(ocelot, ANA_PORT_QOS_CFG, port);
drivers/net/ethernet/mscc/ocelot.c
2773
int ocelot_port_set_default_prio(struct ocelot *ocelot, int port, u8 prio)
drivers/net/ethernet/mscc/ocelot.c
2778
ocelot_rmw_gix(ocelot,
drivers/net/ethernet/mscc/ocelot.c
2784
return ocelot_update_vlan_reclassify_rule(ocelot, port);
drivers/net/ethernet/mscc/ocelot.c
2788
int ocelot_port_get_dscp_prio(struct ocelot *ocelot, int port, u8 dscp)
drivers/net/ethernet/mscc/ocelot.c
2790
int qos_cfg = ocelot_read_gix(ocelot, ANA_PORT_QOS_CFG, port);
drivers/net/ethernet/mscc/ocelot.c
2791
int dscp_cfg = ocelot_read_rix(ocelot, ANA_DSCP_CFG, dscp);
drivers/net/ethernet/mscc/ocelot.c
2800
dscp_cfg = ocelot_read_rix(ocelot, ANA_DSCP_CFG, dscp);
drivers/net/ethernet/mscc/ocelot.c
2813
int ocelot_port_add_dscp_prio(struct ocelot *ocelot, int port, u8 dscp, u8 prio)
drivers/net/ethernet/mscc/ocelot.c
2828
ocelot_rmw_gix(ocelot, ANA_PORT_QOS_CFG_QOS_DSCP_ENA, mask,
drivers/net/ethernet/mscc/ocelot.c
2834
ocelot_write_rix(ocelot, val, ANA_DSCP_CFG, dscp);
drivers/net/ethernet/mscc/ocelot.c
2840
int ocelot_port_del_dscp_prio(struct ocelot *ocelot, int port, u8 dscp, u8 prio)
drivers/net/ethernet/mscc/ocelot.c
2842
int dscp_cfg = ocelot_read_rix(ocelot, ANA_DSCP_CFG, dscp);
drivers/net/ethernet/mscc/ocelot.c
2857
ocelot_write_rix(ocelot, 0, ANA_DSCP_CFG, dscp);
drivers/net/ethernet/mscc/ocelot.c
2860
int dscp_cfg = ocelot_read_rix(ocelot, ANA_DSCP_CFG, i);
drivers/net/ethernet/mscc/ocelot.c
2875
ocelot_rmw_gix(ocelot, 0, mask, ANA_PORT_QOS_CFG, port);
drivers/net/ethernet/mscc/ocelot.c
2881
struct ocelot_mirror *ocelot_mirror_get(struct ocelot *ocelot, int to,
drivers/net/ethernet/mscc/ocelot.c
2884
struct ocelot_mirror *m = ocelot->mirror;
drivers/net/ethernet/mscc/ocelot.c
290
static inline u32 ocelot_vlant_read_vlanaccess(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot.c
2903
ocelot->mirror = m;
drivers/net/ethernet/mscc/ocelot.c
2906
ocelot_write(ocelot, BIT(to), ANA_MIRRORPORTS);
drivers/net/ethernet/mscc/ocelot.c
2911
void ocelot_mirror_put(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot.c
2913
struct ocelot_mirror *m = ocelot->mirror;
drivers/net/ethernet/mscc/ocelot.c
2918
ocelot_write(ocelot, 0, ANA_MIRRORPORTS);
drivers/net/ethernet/mscc/ocelot.c
2919
ocelot->mirror = NULL;
drivers/net/ethernet/mscc/ocelot.c
292
return ocelot_read(ocelot, ANA_TABLES_VLANACCESS);
drivers/net/ethernet/mscc/ocelot.c
2923
int ocelot_port_mirror_add(struct ocelot *ocelot, int from, int to,
drivers/net/ethernet/mscc/ocelot.c
2926
struct ocelot_mirror *m = ocelot_mirror_get(ocelot, to, extack);
drivers/net/ethernet/mscc/ocelot.c
2932
ocelot_rmw_gix(ocelot, ANA_PORT_PORT_CFG_SRC_MIRROR_ENA,
drivers/net/ethernet/mscc/ocelot.c
2936
ocelot_rmw(ocelot, BIT(from), BIT(from),
drivers/net/ethernet/mscc/ocelot.c
2944
void ocelot_port_mirror_del(struct ocelot *ocelot, int from, bool ingress)
drivers/net/ethernet/mscc/ocelot.c
2947
ocelot_rmw_gix(ocelot, 0, ANA_PORT_PORT_CFG_SRC_MIRROR_ENA,
drivers/net/ethernet/mscc/ocelot.c
295
static inline int ocelot_vlant_wait_for_completion(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot.c
2950
ocelot_rmw(ocelot, 0, BIT(from), ANA_EMIRRORPORTS);
drivers/net/ethernet/mscc/ocelot.c
2953
ocelot_mirror_put(ocelot);
drivers/net/ethernet/mscc/ocelot.c
2957
static void ocelot_port_reset_mqprio(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot.c
2959
struct net_device *dev = ocelot->ops->port_to_netdev(ocelot, port);
drivers/net/ethernet/mscc/ocelot.c
2962
ocelot_port_change_fp(ocelot, port, 0);
drivers/net/ethernet/mscc/ocelot.c
2965
int ocelot_port_mqprio(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.c
2968
struct net_device *dev = ocelot->ops->port_to_netdev(ocelot, port);
drivers/net/ethernet/mscc/ocelot.c
2975
ocelot_port_reset_mqprio(ocelot, port);
drivers/net/ethernet/mscc/ocelot.c
2999
ocelot_port_change_fp(ocelot, port, mqprio->preemptible_tcs);
drivers/net/ethernet/mscc/ocelot.c
300
ocelot,
drivers/net/ethernet/mscc/ocelot.c
3004
ocelot_port_reset_mqprio(ocelot, port);
drivers/net/ethernet/mscc/ocelot.c
3009
void ocelot_init_port(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot.c
3011
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
3033
ocelot_port_set_maxlen(ocelot, port, ETH_DATA_LEN);
drivers/net/ethernet/mscc/ocelot.c
3045
ocelot_fields_write(ocelot, port, SYS_PAUSE_CFG_PAUSE_ENA, 1);
drivers/net/ethernet/mscc/ocelot.c
3048
ocelot_rmw_gix(ocelot, ANA_PORT_DROP_CFG_DROP_MC_SMAC_ENA,
drivers/net/ethernet/mscc/ocelot.c
3053
ocelot_rmw_gix(ocelot, REW_PORT_VLAN_CFG_PORT_TPID(ETH_P_8021Q),
drivers/net/ethernet/mscc/ocelot.c
3058
ocelot_port_set_learning(ocelot, port, false);
drivers/net/ethernet/mscc/ocelot.c
3064
ocelot_write_gix(ocelot, ANA_PORT_PORT_CFG_LEARNAUTO |
drivers/net/ethernet/mscc/ocelot.c
307
static int ocelot_vlant_set_mask(struct ocelot *ocelot, u16 vid, u32 mask)
drivers/net/ethernet/mscc/ocelot.c
3070
ocelot_vcap_enable(ocelot, port);
drivers/net/ethernet/mscc/ocelot.c
3078
static void ocelot_cpu_port_init(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot.c
3080
int cpu = ocelot->num_phys_ports;
drivers/net/ethernet/mscc/ocelot.c
3083
ocelot_write_rix(ocelot, 0, ANA_PGID_PGID, cpu);
drivers/net/ethernet/mscc/ocelot.c
3088
ocelot_write_rix(ocelot, BIT(cpu), ANA_PGID_PGID, PGID_CPU);
drivers/net/ethernet/mscc/ocelot.c
3089
ocelot_write_gix(ocelot, ANA_PORT_PORT_CFG_RECV_ENA |
drivers/net/ethernet/mscc/ocelot.c
3094
ocelot_fields_write(ocelot, cpu, QSYS_SWITCH_PORT_MODE_PORT_ENA, 1);
drivers/net/ethernet/mscc/ocelot.c
3096
ocelot_fields_write(ocelot, cpu, SYS_PORT_MODE_INCL_XTR_HDR,
drivers/net/ethernet/mscc/ocelot.c
3098
ocelot_fields_write(ocelot, cpu, SYS_PORT_MODE_INCL_INJ_HDR,
drivers/net/ethernet/mscc/ocelot.c
31
static inline u32 ocelot_mact_read_macaccess(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot.c
310
ocelot_write(ocelot, ANA_TABLES_VLANTIDX_V_INDEX(vid),
drivers/net/ethernet/mscc/ocelot.c
3102
ocelot_write_gix(ocelot,
drivers/net/ethernet/mscc/ocelot.c
3109
static void ocelot_detect_features(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot.c
3117
mmgt = ocelot_read(ocelot, SYS_MMGT);
drivers/net/ethernet/mscc/ocelot.c
3118
ocelot->packet_buffer_size = 240 * SYS_MMGT_FREECNT(mmgt);
drivers/net/ethernet/mscc/ocelot.c
3120
eq_ctrl = ocelot_read(ocelot, QSYS_EQ_CTRL);
drivers/net/ethernet/mscc/ocelot.c
3121
ocelot->num_frame_refs = QSYS_MMGT_EQ_CTRL_FP_FREE_CNT(eq_ctrl);
drivers/net/ethernet/mscc/ocelot.c
3124
static int ocelot_mem_init_status(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot.c
3129
err = regmap_field_read(ocelot->regfields[SYS_RESET_CFG_MEM_INIT],
drivers/net/ethernet/mscc/ocelot.c
313
ocelot_write(ocelot, ANA_TABLES_VLANACCESS_VLAN_PORT_MASK(mask) |
drivers/net/ethernet/mscc/ocelot.c
3135
int ocelot_reset(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot.c
3140
err = regmap_field_write(ocelot->regfields[SYS_RESET_CFG_MEM_INIT], 1);
drivers/net/ethernet/mscc/ocelot.c
3144
err = regmap_field_write(ocelot->regfields[SYS_RESET_CFG_MEM_ENA], 1);
drivers/net/ethernet/mscc/ocelot.c
3151
err = readx_poll_timeout(ocelot_mem_init_status, ocelot, val, !val,
drivers/net/ethernet/mscc/ocelot.c
3156
err = regmap_field_write(ocelot->regfields[SYS_RESET_CFG_MEM_ENA], 1);
drivers/net/ethernet/mscc/ocelot.c
3160
return regmap_field_write(ocelot->regfields[SYS_RESET_CFG_CORE_ENA], 1);
drivers/net/ethernet/mscc/ocelot.c
3164
int ocelot_init(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot.c
3169
if (ocelot->ops->reset) {
drivers/net/ethernet/mscc/ocelot.c
317
return ocelot_vlant_wait_for_completion(ocelot);
drivers/net/ethernet/mscc/ocelot.c
3170
ret = ocelot->ops->reset(ocelot);
drivers/net/ethernet/mscc/ocelot.c
3172
dev_err(ocelot->dev, "Switch reset failed\n");
drivers/net/ethernet/mscc/ocelot.c
3177
mutex_init(&ocelot->mact_lock);
drivers/net/ethernet/mscc/ocelot.c
3178
mutex_init(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot.c
3179
spin_lock_init(&ocelot->ptp_clock_lock);
drivers/net/ethernet/mscc/ocelot.c
3180
spin_lock_init(&ocelot->ts_id_lock);
drivers/net/ethernet/mscc/ocelot.c
3181
spin_lock_init(&ocelot->inj_lock);
drivers/net/ethernet/mscc/ocelot.c
3182
spin_lock_init(&ocelot->xtr_lock);
drivers/net/ethernet/mscc/ocelot.c
3184
ocelot->owq = alloc_ordered_workqueue("ocelot-owq", 0);
drivers/net/ethernet/mscc/ocelot.c
3185
if (!ocelot->owq)
drivers/net/ethernet/mscc/ocelot.c
3188
ret = ocelot_stats_init(ocelot);
drivers/net/ethernet/mscc/ocelot.c
3192
INIT_LIST_HEAD(&ocelot->multicast);
drivers/net/ethernet/mscc/ocelot.c
3193
INIT_LIST_HEAD(&ocelot->pgids);
drivers/net/ethernet/mscc/ocelot.c
3194
INIT_LIST_HEAD(&ocelot->vlans);
drivers/net/ethernet/mscc/ocelot.c
3195
INIT_LIST_HEAD(&ocelot->lag_fdbs);
drivers/net/ethernet/mscc/ocelot.c
3196
ocelot_detect_features(ocelot);
drivers/net/ethernet/mscc/ocelot.c
3197
ocelot_mact_init(ocelot);
drivers/net/ethernet/mscc/ocelot.c
3198
ocelot_vlan_init(ocelot);
drivers/net/ethernet/mscc/ocelot.c
3199
ocelot_vcap_init(ocelot);
drivers/net/ethernet/mscc/ocelot.c
320
static int ocelot_port_num_untagged_vlans(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot.c
3200
ocelot_cpu_port_init(ocelot);
drivers/net/ethernet/mscc/ocelot.c
3202
if (ocelot->ops->psfp_init)
drivers/net/ethernet/mscc/ocelot.c
3203
ocelot->ops->psfp_init(ocelot);
drivers/net/ethernet/mscc/ocelot.c
3205
if (ocelot->mm_supported) {
drivers/net/ethernet/mscc/ocelot.c
3206
ret = ocelot_mm_init(ocelot);
drivers/net/ethernet/mscc/ocelot.c
3211
for (port = 0; port < ocelot->num_phys_ports; port++) {
drivers/net/ethernet/mscc/ocelot.c
3213
ocelot_write(ocelot, SYS_STAT_CFG_STAT_VIEW(port) |
drivers/net/ethernet/mscc/ocelot.c
3219
ocelot_write(ocelot, ETH_P_8021AD, SYS_VLAN_ETYPE_CFG);
drivers/net/ethernet/mscc/ocelot.c
3222
ocelot_write(ocelot, ANA_AGGR_CFG_AC_SMAC_ENA |
drivers/net/ethernet/mscc/ocelot.c
3233
ocelot_write(ocelot,
drivers/net/ethernet/mscc/ocelot.c
3238
regmap_field_write(ocelot->regfields[ANA_ADVLEARN_VLAN_CHK], 1);
drivers/net/ethernet/mscc/ocelot.c
3241
ocelot_write(ocelot, SYS_FRM_AGING_AGE_TX_ENA |
drivers/net/ethernet/mscc/ocelot.c
3245
for (i = 0; i < ocelot->num_flooding_pgids; i++)
drivers/net/ethernet/mscc/ocelot.c
3246
ocelot_write_rix(ocelot, ANA_FLOODING_FLD_MULTICAST(PGID_MC) |
drivers/net/ethernet/mscc/ocelot.c
325
list_for_each_entry(vlan, &ocelot->vlans, list) {
drivers/net/ethernet/mscc/ocelot.c
3250
ocelot_write(ocelot, ANA_FLOODING_IPMC_FLD_MC6_DATA(PGID_MCIPV6) |
drivers/net/ethernet/mscc/ocelot.c
3256
for (port = 0; port < ocelot->num_phys_ports; port++) {
drivers/net/ethernet/mscc/ocelot.c
3258
ocelot_write_rix(ocelot, BIT(port), ANA_PGID_PGID, port);
drivers/net/ethernet/mscc/ocelot.c
3260
ocelot_write_gix(ocelot,
drivers/net/ethernet/mscc/ocelot.c
3265
ocelot_write_rix(ocelot, 0, ANA_PGID_PGID, PGID_SRC + port);
drivers/net/ethernet/mscc/ocelot.c
3268
for_each_nonreserved_multicast_dest_pgid(ocelot, i) {
drivers/net/ethernet/mscc/ocelot.c
3269
u32 val = ANA_PGID_PGID_PGID(GENMASK(ocelot->num_phys_ports - 1, 0));
drivers/net/ethernet/mscc/ocelot.c
3271
ocelot_write_rix(ocelot, val, ANA_PGID_PGID, i);
drivers/net/ethernet/mscc/ocelot.c
3274
ocelot_write_rix(ocelot, 0, ANA_PGID_PGID, PGID_BLACKHOLE);
drivers/net/ethernet/mscc/ocelot.c
3277
ocelot_rmw_rix(ocelot, ANA_PGID_PGID_PGID(BIT(ocelot->num_phys_ports)),
drivers/net/ethernet/mscc/ocelot.c
3278
ANA_PGID_PGID_PGID(BIT(ocelot->num_phys_ports)),
drivers/net/ethernet/mscc/ocelot.c
3280
ocelot_rmw_rix(ocelot, ANA_PGID_PGID_PGID(BIT(ocelot->num_phys_ports)),
drivers/net/ethernet/mscc/ocelot.c
3281
ANA_PGID_PGID_PGID(BIT(ocelot->num_phys_ports)),
drivers/net/ethernet/mscc/ocelot.c
3283
ocelot_write_rix(ocelot, 0, ANA_PGID_PGID, PGID_MCIPV4);
drivers/net/ethernet/mscc/ocelot.c
3284
ocelot_write_rix(ocelot, 0, ANA_PGID_PGID, PGID_MCIPV6);
drivers/net/ethernet/mscc/ocelot.c
3289
ocelot_write_rix(ocelot, QS_INJ_GRP_CFG_BYTE_SWAP |
drivers/net/ethernet/mscc/ocelot.c
3291
ocelot_write_rix(ocelot, QS_XTR_GRP_CFG_BYTE_SWAP |
drivers/net/ethernet/mscc/ocelot.c
3293
ocelot_write(ocelot, ANA_CPUQ_CFG_CPUQ_MIRROR(2) |
drivers/net/ethernet/mscc/ocelot.c
33
return ocelot_read(ocelot, ANA_TABLES_MACACCESS);
drivers/net/ethernet/mscc/ocelot.c
3303
ocelot_write_rix(ocelot, ANA_CPUQ_8021_CFG_CPUQ_GARP_VAL(6) |
drivers/net/ethernet/mscc/ocelot.c
3310
ocelot_stats_deinit(ocelot);
drivers/net/ethernet/mscc/ocelot.c
3312
destroy_workqueue(ocelot->owq);
drivers/net/ethernet/mscc/ocelot.c
3317
void ocelot_deinit(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot.c
3319
ocelot_stats_deinit(ocelot);
drivers/net/ethernet/mscc/ocelot.c
3320
destroy_workqueue(ocelot->owq);
drivers/net/ethernet/mscc/ocelot.c
3324
void ocelot_deinit_port(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot.c
3326
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
343
static int ocelot_port_num_tagged_vlans(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot.c
348
list_for_each_entry(vlan, &ocelot->vlans, list) {
drivers/net/ethernet/mscc/ocelot.c
362
static bool ocelot_port_uses_native_vlan(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot.c
364
return ocelot_port_num_tagged_vlans(ocelot, port) &&
drivers/net/ethernet/mscc/ocelot.c
365
ocelot_port_num_untagged_vlans(ocelot, port) == 1;
drivers/net/ethernet/mscc/ocelot.c
369
ocelot_port_find_native_vlan(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot.c
37
static inline int ocelot_mact_wait_for_completion(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot.c
373
list_for_each_entry(vlan, &ocelot->vlans, list)
drivers/net/ethernet/mscc/ocelot.c
384
static void ocelot_port_manage_port_tag(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot.c
386
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
391
uses_native_vlan = ocelot_port_uses_native_vlan(ocelot, port);
drivers/net/ethernet/mscc/ocelot.c
395
else if (ocelot_port_num_untagged_vlans(ocelot, port))
drivers/net/ethernet/mscc/ocelot.c
403
ocelot_rmw_gix(ocelot, REW_TAG_CFG_TAG_CFG(tag_cfg),
drivers/net/ethernet/mscc/ocelot.c
414
native_vlan = ocelot_port_find_native_vlan(ocelot, port);
drivers/net/ethernet/mscc/ocelot.c
416
ocelot_rmw_gix(ocelot,
drivers/net/ethernet/mscc/ocelot.c
42
ocelot, val,
drivers/net/ethernet/mscc/ocelot.c
423
int ocelot_bridge_num_find(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot.c
428
for (port = 0; port < ocelot->num_phys_ports; port++) {
drivers/net/ethernet/mscc/ocelot.c
429
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
439
static u16 ocelot_vlan_unaware_pvid(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot.c
448
bridge_num = ocelot_bridge_num_find(ocelot, bridge);
drivers/net/ethernet/mscc/ocelot.c
49
static void ocelot_mact_select(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot.c
516
static int ocelot_update_vlan_reclassify_rule(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot.c
518
unsigned long cookie = OCELOT_VCAP_IS1_VLAN_RECLASSIFY(ocelot, port);
drivers/net/ethernet/mscc/ocelot.c
519
struct ocelot_vcap_block *block_vcap_is1 = &ocelot->block[VCAP_IS1];
drivers/net/ethernet/mscc/ocelot.c
520
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
538
return ocelot_vcap_filter_del(ocelot, filter);
drivers/net/ethernet/mscc/ocelot.c
551
val = ocelot_read_gix(ocelot, ANA_PORT_QOS_CFG, port);
drivers/net/ethernet/mscc/ocelot.c
575
return ocelot_vcap_filter_replace(ocelot, filter);
drivers/net/ethernet/mscc/ocelot.c
598
err = ocelot_vcap_filter_add(ocelot, filter, NULL);
drivers/net/ethernet/mscc/ocelot.c
606
static int ocelot_port_set_pvid(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.c
609
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
610
u16 pvid = ocelot_vlan_unaware_pvid(ocelot, ocelot_port->bridge);
drivers/net/ethernet/mscc/ocelot.c
618
ocelot_rmw_gix(ocelot,
drivers/net/ethernet/mscc/ocelot.c
637
ocelot_rmw_gix(ocelot, val,
drivers/net/ethernet/mscc/ocelot.c
643
return ocelot_update_vlan_reclassify_rule(ocelot, port);
drivers/net/ethernet/mscc/ocelot.c
646
static struct ocelot_bridge_vlan *ocelot_bridge_vlan_find(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot.c
651
list_for_each_entry(vlan, &ocelot->vlans, list)
drivers/net/ethernet/mscc/ocelot.c
658
static int ocelot_vlan_member_add(struct ocelot *ocelot, int port, u16 vid,
drivers/net/ethernet/mscc/ocelot.c
66
ocelot_write(ocelot, macl, ANA_TABLES_MACLDATA);
drivers/net/ethernet/mscc/ocelot.c
661
struct ocelot_bridge_vlan *vlan = ocelot_bridge_vlan_find(ocelot, vid);
drivers/net/ethernet/mscc/ocelot.c
668
err = ocelot_vlant_set_mask(ocelot, vid, portmask);
drivers/net/ethernet/mscc/ocelot.c
67
ocelot_write(ocelot, mach, ANA_TABLES_MACHDATA);
drivers/net/ethernet/mscc/ocelot.c
691
err = ocelot_vlant_set_mask(ocelot, vid, portmask);
drivers/net/ethernet/mscc/ocelot.c
702
list_add_tail(&vlan->list, &ocelot->vlans);
drivers/net/ethernet/mscc/ocelot.c
707
static int ocelot_vlan_member_del(struct ocelot *ocelot, int port, u16 vid)
drivers/net/ethernet/mscc/ocelot.c
709
struct ocelot_bridge_vlan *vlan = ocelot_bridge_vlan_find(ocelot, vid);
drivers/net/ethernet/mscc/ocelot.c
71
static int __ocelot_mact_learn(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.c
718
err = ocelot_vlant_set_mask(ocelot, vid, portmask);
drivers/net/ethernet/mscc/ocelot.c
732
static int ocelot_add_vlan_unaware_pvid(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.c
735
u16 vid = ocelot_vlan_unaware_pvid(ocelot, bridge);
drivers/net/ethernet/mscc/ocelot.c
737
return ocelot_vlan_member_add(ocelot, port, vid, true);
drivers/net/ethernet/mscc/ocelot.c
740
static int ocelot_del_vlan_unaware_pvid(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.c
743
u16 vid = ocelot_vlan_unaware_pvid(ocelot, bridge);
drivers/net/ethernet/mscc/ocelot.c
745
return ocelot_vlan_member_del(ocelot, port, vid);
drivers/net/ethernet/mscc/ocelot.c
748
int ocelot_port_vlan_filtering(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.c
751
struct ocelot_vcap_block *block = &ocelot->block[VCAP_IS1];
drivers/net/ethernet/mscc/ocelot.c
752
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
766
err = ocelot_single_vlan_aware_bridge(ocelot, extack);
drivers/net/ethernet/mscc/ocelot.c
771
err = ocelot_del_vlan_unaware_pvid(ocelot, port,
drivers/net/ethernet/mscc/ocelot.c
774
err = ocelot_add_vlan_unaware_pvid(ocelot, port,
drivers/net/ethernet/mscc/ocelot.c
786
ocelot_rmw_gix(ocelot, val,
drivers/net/ethernet/mscc/ocelot.c
791
err = ocelot_port_set_pvid(ocelot, port, ocelot_port->pvid_vlan);
drivers/net/ethernet/mscc/ocelot.c
795
ocelot_port_manage_port_tag(ocelot, port);
drivers/net/ethernet/mscc/ocelot.c
801
int ocelot_vlan_prepare(struct ocelot *ocelot, int port, u16 vid, bool pvid,
drivers/net/ethernet/mscc/ocelot.c
806
if (ocelot_port_uses_native_vlan(ocelot, port)) {
drivers/net/ethernet/mscc/ocelot.c
813
if (ocelot_port_num_untagged_vlans(ocelot, port) > 1) {
drivers/net/ethernet/mscc/ocelot.c
830
int ocelot_vlan_add(struct ocelot *ocelot, int port, u16 vid, bool pvid,
drivers/net/ethernet/mscc/ocelot.c
833
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
843
err = ocelot_vlan_member_add(ocelot, port, vid, untagged);
drivers/net/ethernet/mscc/ocelot.c
849
err = ocelot_port_set_pvid(ocelot, port,
drivers/net/ethernet/mscc/ocelot.c
850
ocelot_bridge_vlan_find(ocelot, vid));
drivers/net/ethernet/mscc/ocelot.c
854
ocelot_bridge_vlan_find(ocelot, vid) == ocelot_port->pvid_vlan) {
drivers/net/ethernet/mscc/ocelot.c
855
err = ocelot_port_set_pvid(ocelot, port, NULL);
drivers/net/ethernet/mscc/ocelot.c
861
ocelot_port_manage_port_tag(ocelot, port);
drivers/net/ethernet/mscc/ocelot.c
867
int ocelot_vlan_del(struct ocelot *ocelot, int port, u16 vid)
drivers/net/ethernet/mscc/ocelot.c
869
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
879
err = ocelot_vlan_member_del(ocelot, port, vid);
drivers/net/ethernet/mscc/ocelot.c
885
err = ocelot_port_set_pvid(ocelot, port, NULL);
drivers/net/ethernet/mscc/ocelot.c
891
ocelot_port_manage_port_tag(ocelot, port);
drivers/net/ethernet/mscc/ocelot.c
897
static void ocelot_vlan_init(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot.c
899
unsigned long all_ports = GENMASK(ocelot->num_phys_ports - 1, 0);
drivers/net/ethernet/mscc/ocelot.c
90
if (mc_ports & BIT(ocelot->num_phys_ports))
drivers/net/ethernet/mscc/ocelot.c
903
ocelot_write(ocelot, ANA_TABLES_VLANACCESS_CMD_INIT,
drivers/net/ethernet/mscc/ocelot.c
905
ocelot_vlant_wait_for_completion(ocelot);
drivers/net/ethernet/mscc/ocelot.c
909
ocelot_vlant_set_mask(ocelot, vid, 0);
drivers/net/ethernet/mscc/ocelot.c
915
ocelot_vlant_set_mask(ocelot, OCELOT_STANDALONE_PVID, all_ports);
drivers/net/ethernet/mscc/ocelot.c
920
ocelot_write(ocelot, all_ports, ANA_VLANMASK);
drivers/net/ethernet/mscc/ocelot.c
922
for (port = 0; port < ocelot->num_phys_ports; port++) {
drivers/net/ethernet/mscc/ocelot.c
923
ocelot_write_gix(ocelot, 0, REW_PORT_VLAN_CFG, port);
drivers/net/ethernet/mscc/ocelot.c
924
ocelot_write_gix(ocelot, 0, REW_TAG_CFG, port);
drivers/net/ethernet/mscc/ocelot.c
928
static u32 ocelot_read_eq_avail(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot.c
93
ocelot_mact_select(ocelot, mac, vid);
drivers/net/ethernet/mscc/ocelot.c
930
return ocelot_read_rix(ocelot, QSYS_SW_STATUS, port);
drivers/net/ethernet/mscc/ocelot.c
933
static int ocelot_port_flush(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot.c
939
ocelot_rmw_rix(ocelot, QSYS_PORT_MODE_DEQUEUE_DIS,
drivers/net/ethernet/mscc/ocelot.c
944
ocelot_fields_read(ocelot, port, SYS_PAUSE_CFG_PAUSE_ENA, &pause_ena);
drivers/net/ethernet/mscc/ocelot.c
945
ocelot_fields_write(ocelot, port, SYS_PAUSE_CFG_PAUSE_ENA, 0);
drivers/net/ethernet/mscc/ocelot.c
948
ocelot_fields_write(ocelot, port,
drivers/net/ethernet/mscc/ocelot.c
96
ocelot_write(ocelot, cmd, ANA_TABLES_MACACCESS);
drivers/net/ethernet/mscc/ocelot.c
962
ocelot_rmw_rix(ocelot, 0, SYS_FRONT_PORT_MODE_HDX_MODE,
drivers/net/ethernet/mscc/ocelot.c
966
ocelot_rmw_gix(ocelot, REW_PORT_CFG_FLUSH_ENA, REW_PORT_CFG_FLUSH_ENA,
drivers/net/ethernet/mscc/ocelot.c
970
ocelot_rmw_rix(ocelot, 0, QSYS_PORT_MODE_DEQUEUE_DIS, QSYS_PORT_MODE,
drivers/net/ethernet/mscc/ocelot.c
975
100, 2000000, false, ocelot, port);
drivers/net/ethernet/mscc/ocelot.c
978
ocelot_rmw_gix(ocelot, 0, REW_PORT_CFG_FLUSH_ENA, REW_PORT_CFG, port);
drivers/net/ethernet/mscc/ocelot.c
98
err = ocelot_mact_wait_for_completion(ocelot);
drivers/net/ethernet/mscc/ocelot.c
981
ocelot_fields_write(ocelot, port, SYS_PAUSE_CFG_PAUSE_ENA, pause_ena);
drivers/net/ethernet/mscc/ocelot.c
986
int ocelot_port_configure_serdes(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.c
989
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot.c
990
struct device *dev = ocelot->dev;
drivers/net/ethernet/mscc/ocelot.h
100
int ocelot_port_devlink_init(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.h
102
void ocelot_port_devlink_teardown(struct ocelot *ocelot, int port);
drivers/net/ethernet/mscc/ocelot.h
104
int ocelot_trap_add(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.h
107
int ocelot_trap_del(struct ocelot *ocelot, int port, unsigned long cookie);
drivers/net/ethernet/mscc/ocelot.h
109
struct ocelot_mirror *ocelot_mirror_get(struct ocelot *ocelot, int to,
drivers/net/ethernet/mscc/ocelot.h
111
void ocelot_mirror_put(struct ocelot *ocelot);
drivers/net/ethernet/mscc/ocelot.h
113
int ocelot_stats_init(struct ocelot *ocelot);
drivers/net/ethernet/mscc/ocelot.h
114
void ocelot_stats_deinit(struct ocelot *ocelot);
drivers/net/ethernet/mscc/ocelot.h
116
int ocelot_mm_init(struct ocelot *ocelot);
drivers/net/ethernet/mscc/ocelot.h
117
void ocelot_port_change_fp(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.h
119
void ocelot_port_update_active_preemptible_tcs(struct ocelot *ocelot, int port);
drivers/net/ethernet/mscc/ocelot.h
77
static inline void ocelot_reg_to_target_addr(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot.h
83
*addr = ocelot->map[*target][reg & REG_MASK];
drivers/net/ethernet/mscc/ocelot.h
86
int ocelot_bridge_num_find(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot.h
89
int ocelot_mact_learn(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot.h
92
int ocelot_mact_forget(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot.h
94
struct net_device *ocelot_port_to_netdev(struct ocelot *ocelot, int port);
drivers/net/ethernet/mscc/ocelot.h
97
int ocelot_probe_port(struct ocelot *ocelot, int port, struct regmap *target,
drivers/net/ethernet/mscc/ocelot_devlink.c
221
static u32 ocelot_wm_read(struct ocelot *ocelot, int index)
drivers/net/ethernet/mscc/ocelot_devlink.c
223
int wm = ocelot_read_gix(ocelot, QSYS_RES_CFG, index);
drivers/net/ethernet/mscc/ocelot_devlink.c
225
return ocelot->ops->wm_dec(wm);
drivers/net/ethernet/mscc/ocelot_devlink.c
228
static void ocelot_wm_write(struct ocelot *ocelot, int index, u32 val)
drivers/net/ethernet/mscc/ocelot_devlink.c
230
u32 wm = ocelot->ops->wm_enc(val);
drivers/net/ethernet/mscc/ocelot_devlink.c
232
ocelot_write_gix(ocelot, wm, QSYS_RES_CFG, index);
drivers/net/ethernet/mscc/ocelot_devlink.c
235
static void ocelot_wm_status(struct ocelot *ocelot, int index, u32 *inuse,
drivers/net/ethernet/mscc/ocelot_devlink.c
238
int res_stat = ocelot_read_gix(ocelot, QSYS_RES_STAT, index);
drivers/net/ethernet/mscc/ocelot_devlink.c
240
return ocelot->ops->wm_stat(res_stat, inuse, maxuse);
drivers/net/ethernet/mscc/ocelot_devlink.c
252
static void ocelot_disable_reservation_watermarks(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_devlink.c
258
ocelot_wm_write(ocelot, BUF_Q_RSRV_I(port, prio), 0);
drivers/net/ethernet/mscc/ocelot_devlink.c
259
ocelot_wm_write(ocelot, BUF_Q_RSRV_E(port, prio), 0);
drivers/net/ethernet/mscc/ocelot_devlink.c
260
ocelot_wm_write(ocelot, REF_Q_RSRV_I(port, prio), 0);
drivers/net/ethernet/mscc/ocelot_devlink.c
261
ocelot_wm_write(ocelot, REF_Q_RSRV_E(port, prio), 0);
drivers/net/ethernet/mscc/ocelot_devlink.c
264
ocelot_wm_write(ocelot, BUF_P_RSRV_I(port), 0);
drivers/net/ethernet/mscc/ocelot_devlink.c
265
ocelot_wm_write(ocelot, BUF_P_RSRV_E(port), 0);
drivers/net/ethernet/mscc/ocelot_devlink.c
266
ocelot_wm_write(ocelot, REF_P_RSRV_I(port), 0);
drivers/net/ethernet/mscc/ocelot_devlink.c
267
ocelot_wm_write(ocelot, REF_P_RSRV_E(port), 0);
drivers/net/ethernet/mscc/ocelot_devlink.c
289
static void ocelot_disable_tc_sharing_watermarks(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot_devlink.c
294
ocelot_wm_write(ocelot, BUF_PRIO_SHR_I(prio), 0);
drivers/net/ethernet/mscc/ocelot_devlink.c
295
ocelot_wm_write(ocelot, BUF_PRIO_SHR_E(prio), 0);
drivers/net/ethernet/mscc/ocelot_devlink.c
296
ocelot_wm_write(ocelot, REF_PRIO_SHR_I(prio), 0);
drivers/net/ethernet/mscc/ocelot_devlink.c
297
ocelot_wm_write(ocelot, REF_PRIO_SHR_E(prio), 0);
drivers/net/ethernet/mscc/ocelot_devlink.c
301
static void ocelot_get_buf_rsrv(struct ocelot *ocelot, u32 *buf_rsrv_i,
drivers/net/ethernet/mscc/ocelot_devlink.c
309
for (port = 0; port <= ocelot->num_phys_ports; port++) {
drivers/net/ethernet/mscc/ocelot_devlink.c
311
*buf_rsrv_i += ocelot_wm_read(ocelot,
drivers/net/ethernet/mscc/ocelot_devlink.c
313
*buf_rsrv_e += ocelot_wm_read(ocelot,
drivers/net/ethernet/mscc/ocelot_devlink.c
317
*buf_rsrv_i += ocelot_wm_read(ocelot, BUF_P_RSRV_I(port));
drivers/net/ethernet/mscc/ocelot_devlink.c
318
*buf_rsrv_e += ocelot_wm_read(ocelot, BUF_P_RSRV_E(port));
drivers/net/ethernet/mscc/ocelot_devlink.c
325
static void ocelot_get_ref_rsrv(struct ocelot *ocelot, u32 *ref_rsrv_i,
drivers/net/ethernet/mscc/ocelot_devlink.c
333
for (port = 0; port <= ocelot->num_phys_ports; port++) {
drivers/net/ethernet/mscc/ocelot_devlink.c
335
*ref_rsrv_i += ocelot_wm_read(ocelot,
drivers/net/ethernet/mscc/ocelot_devlink.c
337
*ref_rsrv_e += ocelot_wm_read(ocelot,
drivers/net/ethernet/mscc/ocelot_devlink.c
341
*ref_rsrv_i += ocelot_wm_read(ocelot, REF_P_RSRV_I(port));
drivers/net/ethernet/mscc/ocelot_devlink.c
342
*ref_rsrv_e += ocelot_wm_read(ocelot, REF_P_RSRV_E(port));
drivers/net/ethernet/mscc/ocelot_devlink.c
349
static void ocelot_setup_sharing_watermarks(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot_devlink.c
356
ocelot_get_buf_rsrv(ocelot, &buf_rsrv_i, &buf_rsrv_e);
drivers/net/ethernet/mscc/ocelot_devlink.c
357
ocelot_get_ref_rsrv(ocelot, &ref_rsrv_i, &ref_rsrv_e);
drivers/net/ethernet/mscc/ocelot_devlink.c
359
buf_shr_i = ocelot->pool_size[OCELOT_SB_BUF][OCELOT_SB_POOL_ING] -
drivers/net/ethernet/mscc/ocelot_devlink.c
361
buf_shr_e = ocelot->pool_size[OCELOT_SB_BUF][OCELOT_SB_POOL_EGR] -
drivers/net/ethernet/mscc/ocelot_devlink.c
363
ref_shr_i = ocelot->pool_size[OCELOT_SB_REF][OCELOT_SB_POOL_ING] -
drivers/net/ethernet/mscc/ocelot_devlink.c
365
ref_shr_e = ocelot->pool_size[OCELOT_SB_REF][OCELOT_SB_POOL_EGR] -
drivers/net/ethernet/mscc/ocelot_devlink.c
371
ocelot_wm_write(ocelot, BUF_COL_SHR_I(0), buf_shr_i);
drivers/net/ethernet/mscc/ocelot_devlink.c
372
ocelot_wm_write(ocelot, BUF_COL_SHR_E(0), buf_shr_e);
drivers/net/ethernet/mscc/ocelot_devlink.c
373
ocelot_wm_write(ocelot, REF_COL_SHR_E(0), ref_shr_e);
drivers/net/ethernet/mscc/ocelot_devlink.c
374
ocelot_wm_write(ocelot, REF_COL_SHR_I(0), ref_shr_i);
drivers/net/ethernet/mscc/ocelot_devlink.c
375
ocelot_wm_write(ocelot, BUF_COL_SHR_I(1), 0);
drivers/net/ethernet/mscc/ocelot_devlink.c
376
ocelot_wm_write(ocelot, BUF_COL_SHR_E(1), 0);
drivers/net/ethernet/mscc/ocelot_devlink.c
377
ocelot_wm_write(ocelot, REF_COL_SHR_E(1), 0);
drivers/net/ethernet/mscc/ocelot_devlink.c
378
ocelot_wm_write(ocelot, REF_COL_SHR_I(1), 0);
drivers/net/ethernet/mscc/ocelot_devlink.c
382
static int ocelot_watermark_validate(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_devlink.c
388
ocelot_get_buf_rsrv(ocelot, &buf_rsrv_i, &buf_rsrv_e);
drivers/net/ethernet/mscc/ocelot_devlink.c
389
ocelot_get_ref_rsrv(ocelot, &ref_rsrv_i, &ref_rsrv_e);
drivers/net/ethernet/mscc/ocelot_devlink.c
391
if (buf_rsrv_i > ocelot->pool_size[OCELOT_SB_BUF][OCELOT_SB_POOL_ING]) {
drivers/net/ethernet/mscc/ocelot_devlink.c
396
if (buf_rsrv_e > ocelot->pool_size[OCELOT_SB_BUF][OCELOT_SB_POOL_EGR]) {
drivers/net/ethernet/mscc/ocelot_devlink.c
401
if (ref_rsrv_i > ocelot->pool_size[OCELOT_SB_REF][OCELOT_SB_POOL_ING]) {
drivers/net/ethernet/mscc/ocelot_devlink.c
406
if (ref_rsrv_e > ocelot->pool_size[OCELOT_SB_REF][OCELOT_SB_POOL_EGR]) {
drivers/net/ethernet/mscc/ocelot_devlink.c
476
static void ocelot_watermark_init(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot_devlink.c
481
ocelot_write(ocelot, all_tcs, QSYS_RES_QOS_MODE);
drivers/net/ethernet/mscc/ocelot_devlink.c
483
for (port = 0; port <= ocelot->num_phys_ports; port++)
drivers/net/ethernet/mscc/ocelot_devlink.c
484
ocelot_disable_reservation_watermarks(ocelot, port);
drivers/net/ethernet/mscc/ocelot_devlink.c
486
ocelot_disable_tc_sharing_watermarks(ocelot);
drivers/net/ethernet/mscc/ocelot_devlink.c
487
ocelot_setup_sharing_watermarks(ocelot);
drivers/net/ethernet/mscc/ocelot_devlink.c
536
int ocelot_sb_pool_get(struct ocelot *ocelot, unsigned int sb_index,
drivers/net/ethernet/mscc/ocelot_devlink.c
546
pool_info->size = ocelot->pool_size[sb_index][pool_index];
drivers/net/ethernet/mscc/ocelot_devlink.c
561
int ocelot_sb_pool_set(struct ocelot *ocelot, unsigned int sb_index,
drivers/net/ethernet/mscc/ocelot_devlink.c
585
old_pool_size = ocelot->pool_size[sb_index][pool_index];
drivers/net/ethernet/mscc/ocelot_devlink.c
586
ocelot->pool_size[sb_index][pool_index] = size;
drivers/net/ethernet/mscc/ocelot_devlink.c
588
err = ocelot_watermark_validate(ocelot, extack);
drivers/net/ethernet/mscc/ocelot_devlink.c
590
ocelot->pool_size[sb_index][pool_index] = old_pool_size;
drivers/net/ethernet/mscc/ocelot_devlink.c
594
ocelot_setup_sharing_watermarks(ocelot);
drivers/net/ethernet/mscc/ocelot_devlink.c
601
int ocelot_sb_port_pool_get(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_devlink.c
624
*p_threshold = ocelot_wm_read(ocelot, wm_index);
drivers/net/ethernet/mscc/ocelot_devlink.c
632
int ocelot_sb_port_pool_set(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_devlink.c
659
old_thr = ocelot_wm_read(ocelot, wm_index);
drivers/net/ethernet/mscc/ocelot_devlink.c
660
ocelot_wm_write(ocelot, wm_index, threshold);
drivers/net/ethernet/mscc/ocelot_devlink.c
662
err = ocelot_watermark_validate(ocelot, extack);
drivers/net/ethernet/mscc/ocelot_devlink.c
664
ocelot_wm_write(ocelot, wm_index, old_thr);
drivers/net/ethernet/mscc/ocelot_devlink.c
668
ocelot_setup_sharing_watermarks(ocelot);
drivers/net/ethernet/mscc/ocelot_devlink.c
675
int ocelot_sb_tc_pool_bind_get(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_devlink.c
699
*p_threshold = ocelot_wm_read(ocelot, wm_index);
drivers/net/ethernet/mscc/ocelot_devlink.c
712
int ocelot_sb_tc_pool_bind_set(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_devlink.c
749
old_thr = ocelot_wm_read(ocelot, wm_index);
drivers/net/ethernet/mscc/ocelot_devlink.c
750
ocelot_wm_write(ocelot, wm_index, threshold);
drivers/net/ethernet/mscc/ocelot_devlink.c
751
err = ocelot_watermark_validate(ocelot, extack);
drivers/net/ethernet/mscc/ocelot_devlink.c
753
ocelot_wm_write(ocelot, wm_index, old_thr);
drivers/net/ethernet/mscc/ocelot_devlink.c
757
ocelot_setup_sharing_watermarks(ocelot);
drivers/net/ethernet/mscc/ocelot_devlink.c
766
int ocelot_sb_occ_snapshot(struct ocelot *ocelot, unsigned int sb_index)
drivers/net/ethernet/mscc/ocelot_devlink.c
775
int ocelot_sb_occ_max_clear(struct ocelot *ocelot, unsigned int sb_index)
drivers/net/ethernet/mscc/ocelot_devlink.c
782
for (port = 0; port <= ocelot->num_phys_ports; port++) {
drivers/net/ethernet/mscc/ocelot_devlink.c
784
ocelot_wm_status(ocelot, BUF_Q_RSRV_I(port, prio),
drivers/net/ethernet/mscc/ocelot_devlink.c
786
ocelot_wm_status(ocelot, BUF_Q_RSRV_E(port, prio),
drivers/net/ethernet/mscc/ocelot_devlink.c
789
ocelot_wm_status(ocelot, BUF_P_RSRV_I(port),
drivers/net/ethernet/mscc/ocelot_devlink.c
791
ocelot_wm_status(ocelot, BUF_P_RSRV_E(port),
drivers/net/ethernet/mscc/ocelot_devlink.c
796
for (port = 0; port <= ocelot->num_phys_ports; port++) {
drivers/net/ethernet/mscc/ocelot_devlink.c
798
ocelot_wm_status(ocelot, REF_Q_RSRV_I(port, prio),
drivers/net/ethernet/mscc/ocelot_devlink.c
800
ocelot_wm_status(ocelot, REF_Q_RSRV_E(port, prio),
drivers/net/ethernet/mscc/ocelot_devlink.c
803
ocelot_wm_status(ocelot, REF_P_RSRV_I(port),
drivers/net/ethernet/mscc/ocelot_devlink.c
805
ocelot_wm_status(ocelot, REF_P_RSRV_E(port),
drivers/net/ethernet/mscc/ocelot_devlink.c
818
int ocelot_sb_occ_port_pool_get(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_devlink.c
841
ocelot_wm_status(ocelot, wm_index, p_cur, p_max);
drivers/net/ethernet/mscc/ocelot_devlink.c
850
int ocelot_sb_occ_tc_port_bind_get(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_devlink.c
874
ocelot_wm_status(ocelot, wm_index, p_cur, p_max);
drivers/net/ethernet/mscc/ocelot_devlink.c
882
int ocelot_devlink_sb_register(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot_devlink.c
886
err = devlink_sb_register(ocelot->devlink, OCELOT_SB_BUF,
drivers/net/ethernet/mscc/ocelot_devlink.c
887
ocelot->packet_buffer_size, 1, 1,
drivers/net/ethernet/mscc/ocelot_devlink.c
892
err = devlink_sb_register(ocelot->devlink, OCELOT_SB_REF,
drivers/net/ethernet/mscc/ocelot_devlink.c
893
ocelot->num_frame_refs, 1, 1,
drivers/net/ethernet/mscc/ocelot_devlink.c
896
devlink_sb_unregister(ocelot->devlink, OCELOT_SB_BUF);
drivers/net/ethernet/mscc/ocelot_devlink.c
900
ocelot->pool_size[OCELOT_SB_BUF][OCELOT_SB_POOL_ING] = ocelot->packet_buffer_size;
drivers/net/ethernet/mscc/ocelot_devlink.c
901
ocelot->pool_size[OCELOT_SB_BUF][OCELOT_SB_POOL_EGR] = ocelot->packet_buffer_size;
drivers/net/ethernet/mscc/ocelot_devlink.c
902
ocelot->pool_size[OCELOT_SB_REF][OCELOT_SB_POOL_ING] = ocelot->num_frame_refs;
drivers/net/ethernet/mscc/ocelot_devlink.c
903
ocelot->pool_size[OCELOT_SB_REF][OCELOT_SB_POOL_EGR] = ocelot->num_frame_refs;
drivers/net/ethernet/mscc/ocelot_devlink.c
905
ocelot_watermark_init(ocelot);
drivers/net/ethernet/mscc/ocelot_devlink.c
911
void ocelot_devlink_sb_unregister(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot_devlink.c
913
devlink_sb_unregister(ocelot->devlink, OCELOT_SB_BUF);
drivers/net/ethernet/mscc/ocelot_devlink.c
914
devlink_sb_unregister(ocelot->devlink, OCELOT_SB_REF);
drivers/net/ethernet/mscc/ocelot_fdma.c
101
static int ocelot_fdma_wait_chan_safe(struct ocelot *ocelot, int chan)
drivers/net/ethernet/mscc/ocelot_fdma.c
105
return readx_poll_timeout_atomic(ocelot_fdma_read_ch_safe, ocelot, safe,
drivers/net/ethernet/mscc/ocelot_fdma.c
122
static bool ocelot_fdma_rx_alloc_page(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_fdma.c
132
mapping = dma_map_page(ocelot->dev, page, 0, PAGE_SIZE,
drivers/net/ethernet/mscc/ocelot_fdma.c
134
if (unlikely(dma_mapping_error(ocelot->dev, mapping))) {
drivers/net/ethernet/mscc/ocelot_fdma.c
146
static int ocelot_fdma_alloc_rx_buffs(struct ocelot *ocelot, u16 alloc_cnt)
drivers/net/ethernet/mscc/ocelot_fdma.c
148
struct ocelot_fdma *fdma = ocelot->fdma;
drivers/net/ethernet/mscc/ocelot_fdma.c
163
if (unlikely(!ocelot_fdma_rx_alloc_page(ocelot, rxb))) {
drivers/net/ethernet/mscc/ocelot_fdma.c
164
dev_err_ratelimited(ocelot->dev,
drivers/net/ethernet/mscc/ocelot_fdma.c
186
static bool ocelot_fdma_tx_dcb_set_skb(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_fdma.c
193
mapping = dma_map_single(ocelot->dev, skb->data, skb->len,
drivers/net/ethernet/mscc/ocelot_fdma.c
195
if (unlikely(dma_mapping_error(ocelot->dev, mapping)))
drivers/net/ethernet/mscc/ocelot_fdma.c
208
static bool ocelot_fdma_check_stop_rx(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot_fdma.c
213
llp = ocelot_fdma_readl(ocelot, MSCC_FDMA_DCB_LLP(MSCC_FDMA_XTR_CHAN));
drivers/net/ethernet/mscc/ocelot_fdma.c
217
ocelot_fdma_writel(ocelot, MSCC_FDMA_CH_DISABLE,
drivers/net/ethernet/mscc/ocelot_fdma.c
22
static void ocelot_fdma_writel(struct ocelot *ocelot, u32 reg, u32 data)
drivers/net/ethernet/mscc/ocelot_fdma.c
234
static void ocelot_fdma_rx_restart(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot_fdma.c
236
struct ocelot_fdma *fdma = ocelot->fdma;
drivers/net/ethernet/mscc/ocelot_fdma.c
24
regmap_write(ocelot->targets[FDMA], reg, data);
drivers/net/ethernet/mscc/ocelot_fdma.c
245
ret = ocelot_fdma_wait_chan_safe(ocelot, chan);
drivers/net/ethernet/mscc/ocelot_fdma.c
247
dev_err_ratelimited(ocelot->dev,
drivers/net/ethernet/mscc/ocelot_fdma.c
258
llp_prev = ocelot_fdma_readl(ocelot, MSCC_FDMA_DCB_LLP_PREV(chan));
drivers/net/ethernet/mscc/ocelot_fdma.c
267
ocelot_fdma_activate_chan(ocelot, new_llp, chan);
drivers/net/ethernet/mscc/ocelot_fdma.c
27
static u32 ocelot_fdma_readl(struct ocelot *ocelot, u32 reg)
drivers/net/ethernet/mscc/ocelot_fdma.c
295
static void ocelot_fdma_reuse_rx_page(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_fdma.c
298
struct ocelot_fdma_rx_ring *rx_ring = &ocelot->fdma->rx_ring;
drivers/net/ethernet/mscc/ocelot_fdma.c
309
dma_sync_single_range_for_device(ocelot->dev, old_rxb->dma_addr,
drivers/net/ethernet/mscc/ocelot_fdma.c
31
regmap_read(ocelot->targets[FDMA], reg, &retval);
drivers/net/ethernet/mscc/ocelot_fdma.c
314
static struct sk_buff *ocelot_fdma_get_skb(struct ocelot *ocelot, u32 stat,
drivers/net/ethernet/mscc/ocelot_fdma.c
327
dev_err_ratelimited(ocelot->dev,
drivers/net/ethernet/mscc/ocelot_fdma.c
334
dma_sync_single_range_for_cpu(ocelot->dev, rxb->dma_addr,
drivers/net/ethernet/mscc/ocelot_fdma.c
340
ocelot_fdma_reuse_rx_page(ocelot, rxb);
drivers/net/ethernet/mscc/ocelot_fdma.c
343
dma_unmap_page(ocelot->dev, rxb->dma_addr, PAGE_SIZE,
drivers/net/ethernet/mscc/ocelot_fdma.c
353
static bool ocelot_fdma_receive_skb(struct ocelot *ocelot, struct sk_buff *skb)
drivers/net/ethernet/mscc/ocelot_fdma.c
363
if (unlikely(src_port >= ocelot->num_phys_ports))
drivers/net/ethernet/mscc/ocelot_fdma.c
366
ndev = ocelot_port_to_netdev(ocelot, src_port);
drivers/net/ethernet/mscc/ocelot_fdma.c
378
if (ocelot->ptp) {
drivers/net/ethernet/mscc/ocelot_fdma.c
380
ocelot_ptp_rx_timestamp(ocelot, skb, timestamp);
drivers/net/ethernet/mscc/ocelot_fdma.c
389
static int ocelot_fdma_rx_get(struct ocelot *ocelot, int budget)
drivers/net/ethernet/mscc/ocelot_fdma.c
391
struct ocelot_fdma *fdma = ocelot->fdma;
drivers/net/ethernet/mscc/ocelot_fdma.c
422
skb = ocelot_fdma_get_skb(ocelot, stat, rxb, skb);
drivers/net/ethernet/mscc/ocelot_fdma.c
434
dev_err_ratelimited(ocelot->dev,
drivers/net/ethernet/mscc/ocelot_fdma.c
447
if (unlikely(!ocelot_fdma_receive_skb(ocelot, skb)))
drivers/net/ethernet/mscc/ocelot_fdma.c
456
ocelot_fdma_alloc_rx_buffs(ocelot, cleaned_cnt);
drivers/net/ethernet/mscc/ocelot_fdma.c
461
static void ocelot_fdma_wakeup_netdev(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot_fdma.c
468
for (port = 0; port < ocelot->num_phys_ports; port++) {
drivers/net/ethernet/mscc/ocelot_fdma.c
469
ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot_fdma.c
481
static void ocelot_fdma_tx_cleanup(struct ocelot *ocelot, int budget)
drivers/net/ethernet/mscc/ocelot_fdma.c
483
struct ocelot_fdma *fdma = ocelot->fdma;
drivers/net/ethernet/mscc/ocelot_fdma.c
508
dma_unmap_single(ocelot->dev, dma_unmap_addr(buf, dma_addr),
drivers/net/ethernet/mscc/ocelot_fdma.c
526
ocelot_fdma_wakeup_netdev(ocelot);
drivers/net/ethernet/mscc/ocelot_fdma.c
534
ret = ocelot_fdma_wait_chan_safe(ocelot, MSCC_FDMA_INJ_CHAN);
drivers/net/ethernet/mscc/ocelot_fdma.c
536
dev_warn(ocelot->dev,
drivers/net/ethernet/mscc/ocelot_fdma.c
548
ocelot_fdma_activate_chan(ocelot, dma, MSCC_FDMA_INJ_CHAN);
drivers/net/ethernet/mscc/ocelot_fdma.c
554
struct ocelot *ocelot = fdma->ocelot;
drivers/net/ethernet/mscc/ocelot_fdma.c
558
ocelot_fdma_tx_cleanup(ocelot, budget);
drivers/net/ethernet/mscc/ocelot_fdma.c
560
rx_stopped = ocelot_fdma_check_stop_rx(ocelot);
drivers/net/ethernet/mscc/ocelot_fdma.c
562
work_done = ocelot_fdma_rx_get(ocelot, budget);
drivers/net/ethernet/mscc/ocelot_fdma.c
565
ocelot_fdma_rx_restart(ocelot);
drivers/net/ethernet/mscc/ocelot_fdma.c
569
ocelot_fdma_writel(ocelot, MSCC_FDMA_INTR_ENA,
drivers/net/ethernet/mscc/ocelot_fdma.c
580
struct ocelot *ocelot = dev_id;
drivers/net/ethernet/mscc/ocelot_fdma.c
582
ident = ocelot_fdma_readl(ocelot, MSCC_FDMA_INTR_IDENT);
drivers/net/ethernet/mscc/ocelot_fdma.c
583
frm = ocelot_fdma_readl(ocelot, MSCC_FDMA_INTR_FRM);
drivers/net/ethernet/mscc/ocelot_fdma.c
584
llp = ocelot_fdma_readl(ocelot, MSCC_FDMA_INTR_LLP);
drivers/net/ethernet/mscc/ocelot_fdma.c
586
ocelot_fdma_writel(ocelot, MSCC_FDMA_INTR_LLP, llp & ident);
drivers/net/ethernet/mscc/ocelot_fdma.c
587
ocelot_fdma_writel(ocelot, MSCC_FDMA_INTR_FRM, frm & ident);
drivers/net/ethernet/mscc/ocelot_fdma.c
589
ocelot_fdma_writel(ocelot, MSCC_FDMA_INTR_ENA, 0);
drivers/net/ethernet/mscc/ocelot_fdma.c
590
napi_schedule(&ocelot->fdma->napi);
drivers/net/ethernet/mscc/ocelot_fdma.c
593
err = ocelot_fdma_readl(ocelot, MSCC_FDMA_EVT_ERR);
drivers/net/ethernet/mscc/ocelot_fdma.c
595
err_code = ocelot_fdma_readl(ocelot, MSCC_FDMA_EVT_ERR_CODE);
drivers/net/ethernet/mscc/ocelot_fdma.c
596
dev_err_ratelimited(ocelot->dev,
drivers/net/ethernet/mscc/ocelot_fdma.c
600
ocelot_fdma_writel(ocelot, MSCC_FDMA_EVT_ERR, err);
drivers/net/ethernet/mscc/ocelot_fdma.c
601
ocelot_fdma_writel(ocelot, MSCC_FDMA_EVT_ERR_CODE, err_code);
drivers/net/ethernet/mscc/ocelot_fdma.c
607
static void ocelot_fdma_send_skb(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_fdma.c
618
if (!ocelot_fdma_tx_dcb_set_skb(ocelot, tx_buf, dcb, skb)) {
drivers/net/ethernet/mscc/ocelot_fdma.c
631
ocelot_fdma_activate_chan(ocelot, dma, MSCC_FDMA_INJ_CHAN);
drivers/net/ethernet/mscc/ocelot_fdma.c
640
static int ocelot_fdma_prepare_skb(struct ocelot *ocelot, int port, u32 rew_op,
drivers/net/ethernet/mscc/ocelot_fdma.c
668
ocelot_ifh_set_basic(ifh, ocelot, port, rew_op, skb);
drivers/net/ethernet/mscc/ocelot_fdma.c
673
int ocelot_fdma_inject_frame(struct ocelot *ocelot, int port, u32 rew_op,
drivers/net/ethernet/mscc/ocelot_fdma.c
676
struct ocelot_fdma *fdma = ocelot->fdma;
drivers/net/ethernet/mscc/ocelot_fdma.c
687
if (ocelot_fdma_prepare_skb(ocelot, port, rew_op, skb, dev))
drivers/net/ethernet/mscc/ocelot_fdma.c
690
ocelot_fdma_send_skb(ocelot, fdma, skb);
drivers/net/ethernet/mscc/ocelot_fdma.c
698
static void ocelot_fdma_free_rx_ring(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot_fdma.c
700
struct ocelot_fdma *fdma = ocelot->fdma;
drivers/net/ethernet/mscc/ocelot_fdma.c
711
dma_unmap_page(ocelot->dev, rxb->dma_addr, PAGE_SIZE,
drivers/net/ethernet/mscc/ocelot_fdma.c
721
static void ocelot_fdma_free_tx_ring(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot_fdma.c
723
struct ocelot_fdma *fdma = ocelot->fdma;
drivers/net/ethernet/mscc/ocelot_fdma.c
735
dma_unmap_single(ocelot->dev, dma_unmap_addr(txb, dma_addr),
drivers/net/ethernet/mscc/ocelot_fdma.c
742
static int ocelot_fdma_rings_alloc(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot_fdma.c
744
struct ocelot_fdma *fdma = ocelot->fdma;
drivers/net/ethernet/mscc/ocelot_fdma.c
751
fdma->dcbs_base = dmam_alloc_coherent(ocelot->dev,
drivers/net/ethernet/mscc/ocelot_fdma.c
774
ret = ocelot_fdma_alloc_rx_buffs(ocelot,
drivers/net/ethernet/mscc/ocelot_fdma.c
777
ocelot_fdma_free_rx_ring(ocelot);
drivers/net/ethernet/mscc/ocelot_fdma.c
789
void ocelot_fdma_netdev_init(struct ocelot *ocelot, struct net_device *dev)
drivers/net/ethernet/mscc/ocelot_fdma.c
791
struct ocelot_fdma *fdma = ocelot->fdma;
drivers/net/ethernet/mscc/ocelot_fdma.c
804
void ocelot_fdma_netdev_deinit(struct ocelot *ocelot, struct net_device *dev)
drivers/net/ethernet/mscc/ocelot_fdma.c
806
struct ocelot_fdma *fdma = ocelot->fdma;
drivers/net/ethernet/mscc/ocelot_fdma.c
814
void ocelot_fdma_init(struct platform_device *pdev, struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot_fdma.c
816
struct device *dev = ocelot->dev;
drivers/net/ethernet/mscc/ocelot_fdma.c
824
ocelot->fdma = fdma;
drivers/net/ethernet/mscc/ocelot_fdma.c
825
ocelot->dev->coherent_dma_mask = DMA_BIT_MASK(32);
drivers/net/ethernet/mscc/ocelot_fdma.c
827
ocelot_fdma_writel(ocelot, MSCC_FDMA_INTR_ENA, 0);
drivers/net/ethernet/mscc/ocelot_fdma.c
829
fdma->ocelot = ocelot;
drivers/net/ethernet/mscc/ocelot_fdma.c
832
dev_name(dev), ocelot);
drivers/net/ethernet/mscc/ocelot_fdma.c
836
ret = ocelot_fdma_rings_alloc(ocelot);
drivers/net/ethernet/mscc/ocelot_fdma.c
849
ocelot->fdma = NULL;
drivers/net/ethernet/mscc/ocelot_fdma.c
85
static void ocelot_fdma_activate_chan(struct ocelot *ocelot, dma_addr_t dma,
drivers/net/ethernet/mscc/ocelot_fdma.c
852
void ocelot_fdma_start(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot_fdma.c
854
struct ocelot_fdma *fdma = ocelot->fdma;
drivers/net/ethernet/mscc/ocelot_fdma.c
857
ocelot_write_rix(ocelot, QS_INJ_GRP_CFG_MODE(2), QS_INJ_GRP_CFG, 0);
drivers/net/ethernet/mscc/ocelot_fdma.c
858
ocelot_write_rix(ocelot, QS_INJ_CTRL_GAP_SIZE(0), QS_INJ_CTRL, 0);
drivers/net/ethernet/mscc/ocelot_fdma.c
860
ocelot_write_rix(ocelot, QS_XTR_GRP_CFG_MODE(2), QS_XTR_GRP_CFG, 0);
drivers/net/ethernet/mscc/ocelot_fdma.c
862
ocelot_fdma_writel(ocelot, MSCC_FDMA_INTR_LLP, 0xffffffff);
drivers/net/ethernet/mscc/ocelot_fdma.c
863
ocelot_fdma_writel(ocelot, MSCC_FDMA_INTR_FRM, 0xffffffff);
drivers/net/ethernet/mscc/ocelot_fdma.c
865
ocelot_fdma_writel(ocelot, MSCC_FDMA_INTR_LLP_ENA,
drivers/net/ethernet/mscc/ocelot_fdma.c
867
ocelot_fdma_writel(ocelot, MSCC_FDMA_INTR_FRM_ENA,
drivers/net/ethernet/mscc/ocelot_fdma.c
869
ocelot_fdma_writel(ocelot, MSCC_FDMA_INTR_ENA,
drivers/net/ethernet/mscc/ocelot_fdma.c
874
ocelot_fdma_activate_chan(ocelot, ocelot->fdma->rx_ring.dcbs_dma,
drivers/net/ethernet/mscc/ocelot_fdma.c
878
void ocelot_fdma_deinit(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot_fdma.c
88
ocelot_fdma_writel(ocelot, MSCC_FDMA_DCB_LLP(chan), dma);
drivers/net/ethernet/mscc/ocelot_fdma.c
880
struct ocelot_fdma *fdma = ocelot->fdma;
drivers/net/ethernet/mscc/ocelot_fdma.c
882
ocelot_fdma_writel(ocelot, MSCC_FDMA_INTR_ENA, 0);
drivers/net/ethernet/mscc/ocelot_fdma.c
883
ocelot_fdma_writel(ocelot, MSCC_FDMA_CH_FORCEDIS,
drivers/net/ethernet/mscc/ocelot_fdma.c
885
ocelot_fdma_writel(ocelot, MSCC_FDMA_CH_FORCEDIS,
drivers/net/ethernet/mscc/ocelot_fdma.c
890
ocelot_fdma_free_rx_ring(ocelot);
drivers/net/ethernet/mscc/ocelot_fdma.c
891
ocelot_fdma_free_tx_ring(ocelot);
drivers/net/ethernet/mscc/ocelot_fdma.c
93
ocelot_fdma_writel(ocelot, MSCC_FDMA_CH_ACTIVATE, BIT(chan));
drivers/net/ethernet/mscc/ocelot_fdma.c
96
static u32 ocelot_fdma_read_ch_safe(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot_fdma.c
98
return ocelot_fdma_readl(ocelot, MSCC_FDMA_CH_SAFE);
drivers/net/ethernet/mscc/ocelot_fdma.h
154
struct ocelot *ocelot;
drivers/net/ethernet/mscc/ocelot_fdma.h
157
void ocelot_fdma_init(struct platform_device *pdev, struct ocelot *ocelot);
drivers/net/ethernet/mscc/ocelot_fdma.h
158
void ocelot_fdma_start(struct ocelot *ocelot);
drivers/net/ethernet/mscc/ocelot_fdma.h
159
void ocelot_fdma_deinit(struct ocelot *ocelot);
drivers/net/ethernet/mscc/ocelot_fdma.h
160
int ocelot_fdma_inject_frame(struct ocelot *fdma, int port, u32 rew_op,
drivers/net/ethernet/mscc/ocelot_fdma.h
162
void ocelot_fdma_netdev_init(struct ocelot *ocelot, struct net_device *dev);
drivers/net/ethernet/mscc/ocelot_fdma.h
163
void ocelot_fdma_netdev_deinit(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_flower.c
1001
int ocelot_cls_flower_stats(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_flower.c
1014
if (ocelot->ops->psfp_stats_get) {
drivers/net/ethernet/mscc/ocelot_flower.c
1015
ret = ocelot->ops->psfp_stats_get(ocelot, f, &stats);
drivers/net/ethernet/mscc/ocelot_flower.c
1025
block = &ocelot->block[block_id];
drivers/net/ethernet/mscc/ocelot_flower.c
1031
ret = ocelot_vcap_filter_stats_update(ocelot, filter);
drivers/net/ethernet/mscc/ocelot_flower.c
145
ocelot_find_vcap_filter_that_points_at(struct ocelot *ocelot, int chain)
drivers/net/ethernet/mscc/ocelot_flower.c
156
block = &ocelot->block[VCAP_IS1];
drivers/net/ethernet/mscc/ocelot_flower.c
164
list_for_each_entry(filter, &ocelot->dummy_rules, list)
drivers/net/ethernet/mscc/ocelot_flower.c
172
ocelot_flower_parse_ingress_vlan_modify(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_flower.c
177
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot_flower.c
232
ocelot_flower_parse_egress_port(struct ocelot *ocelot, struct flow_cls_offload *f,
drivers/net/ethernet/mscc/ocelot_flower.c
237
int egress_port = ocelot->ops->netdev_to_port(a->dev);
drivers/net/ethernet/mscc/ocelot_flower.c
251
egress_port = ocelot->num_phys_ports;
drivers/net/ethernet/mscc/ocelot_flower.c
257
static int ocelot_flower_parse_action(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_flower.c
366
pol_ix = a->hw_index + ocelot->vcap_pol.base;
drivers/net/ethernet/mscc/ocelot_flower.c
367
pol_max = ocelot->vcap_pol.max;
drivers/net/ethernet/mscc/ocelot_flower.c
369
if (ocelot->vcap_pol.max2 && pol_ix > pol_max) {
drivers/net/ethernet/mscc/ocelot_flower.c
370
pol_ix += ocelot->vcap_pol.base2 - pol_max - 1;
drivers/net/ethernet/mscc/ocelot_flower.c
371
pol_max = ocelot->vcap_pol.max2;
drivers/net/ethernet/mscc/ocelot_flower.c
397
egress_port = ocelot_flower_parse_egress_port(ocelot, f,
drivers/net/ethernet/mscc/ocelot_flower.c
420
egress_port = ocelot_flower_parse_egress_port(ocelot, f,
drivers/net/ethernet/mscc/ocelot_flower.c
452
err = ocelot_flower_parse_ingress_vlan_modify(ocelot, port,
drivers/net/ethernet/mscc/ocelot_flower.c
550
static int ocelot_flower_parse_indev(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_flower.c
555
const struct vcap_props *vcap = &ocelot->vcap[VCAP_ES0];
drivers/net/ethernet/mscc/ocelot_flower.c
572
dev = ocelot->ops->port_to_netdev(ocelot, port);
drivers/net/ethernet/mscc/ocelot_flower.c
583
ingress_port = ocelot->ops->netdev_to_port(indev);
drivers/net/ethernet/mscc/ocelot_flower.c
602
ocelot_flower_parse_key(struct ocelot *ocelot, int port, bool ingress,
drivers/net/ethernet/mscc/ocelot_flower.c
637
ret = ocelot_flower_parse_indev(ocelot, port, f, filter);
drivers/net/ethernet/mscc/ocelot_flower.c
809
static int ocelot_flower_parse(struct ocelot *ocelot, int port, bool ingress,
drivers/net/ethernet/mscc/ocelot_flower.c
819
ret = ocelot_flower_parse_action(ocelot, port, ingress, f, filter);
drivers/net/ethernet/mscc/ocelot_flower.c
827
return ocelot_flower_parse_key(ocelot, port, ingress, f, filter);
drivers/net/ethernet/mscc/ocelot_flower.c
831
*ocelot_vcap_filter_create(struct ocelot *ocelot, int port, bool ingress,
drivers/net/ethernet/mscc/ocelot_flower.c
843
const struct vcap_props *vcap = &ocelot->vcap[VCAP_ES0];
drivers/net/ethernet/mscc/ocelot_flower.c
853
static int ocelot_vcap_dummy_filter_add(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_flower.c
856
list_add(&filter->list, &ocelot->dummy_rules);
drivers/net/ethernet/mscc/ocelot_flower.c
861
static int ocelot_vcap_dummy_filter_del(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_flower.c
895
int ocelot_cls_flower_replace(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_flower.c
903
if (chain && !ocelot_find_vcap_filter_that_points_at(ocelot, chain)) {
drivers/net/ethernet/mscc/ocelot_flower.c
914
filter = ocelot_vcap_block_find_filter_by_id(&ocelot->block[block_id],
drivers/net/ethernet/mscc/ocelot_flower.c
925
return ocelot_vcap_filter_replace(ocelot, filter);
drivers/net/ethernet/mscc/ocelot_flower.c
929
filter = ocelot_vcap_filter_create(ocelot, port, ingress, f);
drivers/net/ethernet/mscc/ocelot_flower.c
933
ret = ocelot_flower_parse(ocelot, port, ingress, f, filter);
drivers/net/ethernet/mscc/ocelot_flower.c
949
return ocelot_vcap_dummy_filter_add(ocelot, filter);
drivers/net/ethernet/mscc/ocelot_flower.c
953
if (ocelot->ops->psfp_filter_add)
drivers/net/ethernet/mscc/ocelot_flower.c
954
return ocelot->ops->psfp_filter_add(ocelot, port, f);
drivers/net/ethernet/mscc/ocelot_flower.c
960
return ocelot_vcap_filter_add(ocelot, filter, f->common.extack);
drivers/net/ethernet/mscc/ocelot_flower.c
964
int ocelot_cls_flower_destroy(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_flower.c
976
if (ocelot->ops->psfp_filter_del)
drivers/net/ethernet/mscc/ocelot_flower.c
977
return ocelot->ops->psfp_filter_del(ocelot, f);
drivers/net/ethernet/mscc/ocelot_flower.c
982
block = &ocelot->block[block_id];
drivers/net/ethernet/mscc/ocelot_flower.c
989
return ocelot_vcap_dummy_filter_del(ocelot, filter);
drivers/net/ethernet/mscc/ocelot_flower.c
994
return ocelot_vcap_filter_replace(ocelot, filter);
drivers/net/ethernet/mscc/ocelot_flower.c
997
return ocelot_vcap_filter_del(ocelot, filter);
drivers/net/ethernet/mscc/ocelot_io.c
104
regmap_read(ocelot->targets[target],
drivers/net/ethernet/mscc/ocelot_io.c
105
ocelot->map[target][reg] + offset, &val);
drivers/net/ethernet/mscc/ocelot_io.c
109
void __ocelot_target_write_ix(struct ocelot *ocelot, enum ocelot_target target,
drivers/net/ethernet/mscc/ocelot_io.c
112
regmap_write(ocelot->targets[target],
drivers/net/ethernet/mscc/ocelot_io.c
113
ocelot->map[target][reg] + offset, val);
drivers/net/ethernet/mscc/ocelot_io.c
116
int ocelot_regfields_init(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_io.c
13
int __ocelot_bulk_read_ix(struct ocelot *ocelot, enum ocelot_reg reg,
drivers/net/ethernet/mscc/ocelot_io.c
131
regfield.reg = ocelot->map[target][reg & REG_MASK];
drivers/net/ethernet/mscc/ocelot_io.c
137
ocelot->regfields[i] =
drivers/net/ethernet/mscc/ocelot_io.c
138
devm_regmap_field_alloc(ocelot->dev,
drivers/net/ethernet/mscc/ocelot_io.c
139
ocelot->targets[target],
drivers/net/ethernet/mscc/ocelot_io.c
142
if (IS_ERR(ocelot->regfields[i]))
drivers/net/ethernet/mscc/ocelot_io.c
143
return PTR_ERR(ocelot->regfields[i]);
drivers/net/ethernet/mscc/ocelot_io.c
156
struct regmap *ocelot_regmap_init(struct ocelot *ocelot, struct resource *res)
drivers/net/ethernet/mscc/ocelot_io.c
160
regs = devm_ioremap_resource(ocelot->dev, res);
drivers/net/ethernet/mscc/ocelot_io.c
166
return devm_regmap_init_mmio(ocelot->dev, regs, &ocelot_regmap_config);
drivers/net/ethernet/mscc/ocelot_io.c
19
ocelot_reg_to_target_addr(ocelot, reg, &target, &addr);
drivers/net/ethernet/mscc/ocelot_io.c
22
return regmap_bulk_read(ocelot->targets[target], addr + offset,
drivers/net/ethernet/mscc/ocelot_io.c
27
u32 __ocelot_read_ix(struct ocelot *ocelot, enum ocelot_reg reg, u32 offset)
drivers/net/ethernet/mscc/ocelot_io.c
32
ocelot_reg_to_target_addr(ocelot, reg, &target, &addr);
drivers/net/ethernet/mscc/ocelot_io.c
35
regmap_read(ocelot->targets[target], addr + offset, &val);
drivers/net/ethernet/mscc/ocelot_io.c
40
void __ocelot_write_ix(struct ocelot *ocelot, u32 val, enum ocelot_reg reg,
drivers/net/ethernet/mscc/ocelot_io.c
46
ocelot_reg_to_target_addr(ocelot, reg, &target, &addr);
drivers/net/ethernet/mscc/ocelot_io.c
49
regmap_write(ocelot->targets[target], addr + offset, val);
drivers/net/ethernet/mscc/ocelot_io.c
53
void __ocelot_rmw_ix(struct ocelot *ocelot, u32 val, u32 mask,
drivers/net/ethernet/mscc/ocelot_io.c
59
ocelot_reg_to_target_addr(ocelot, reg, &target, &addr);
drivers/net/ethernet/mscc/ocelot_io.c
62
regmap_update_bits(ocelot->targets[target], addr + offset, mask, val);
drivers/net/ethernet/mscc/ocelot_io.c
68
struct ocelot *ocelot = port->ocelot;
drivers/net/ethernet/mscc/ocelot_io.c
74
regmap_read(port->target, ocelot->map[target][reg & REG_MASK], &val);
drivers/net/ethernet/mscc/ocelot_io.c
81
struct ocelot *ocelot = port->ocelot;
drivers/net/ethernet/mscc/ocelot_io.c
86
regmap_write(port->target, ocelot->map[target][reg & REG_MASK], val);
drivers/net/ethernet/mscc/ocelot_io.c
99
u32 __ocelot_target_read_ix(struct ocelot *ocelot, enum ocelot_target target,
drivers/net/ethernet/mscc/ocelot_mm.c
102
ocelot_port_update_active_preemptible_tcs(ocelot, port);
drivers/net/ethernet/mscc/ocelot_mm.c
105
static void ocelot_mm_update_port_status(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot_mm.c
107
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot_mm.c
108
struct ocelot_mm_state *mm = &ocelot->mm[port];
drivers/net/ethernet/mscc/ocelot_mm.c
119
dev_dbg(ocelot->dev,
drivers/net/ethernet/mscc/ocelot_mm.c
128
dev_dbg(ocelot->dev, "Port %d TX preemption %s\n",
drivers/net/ethernet/mscc/ocelot_mm.c
130
ocelot_port_update_active_preemptible_tcs(ocelot, port);
drivers/net/ethernet/mscc/ocelot_mm.c
136
dev_err(ocelot->dev,
drivers/net/ethernet/mscc/ocelot_mm.c
144
dev_err(ocelot->dev,
drivers/net/ethernet/mscc/ocelot_mm.c
155
void ocelot_mm_irq(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot_mm.c
159
mutex_lock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot_mm.c
161
for (port = 0; port < ocelot->num_phys_ports; port++)
drivers/net/ethernet/mscc/ocelot_mm.c
162
ocelot_mm_update_port_status(ocelot, port);
drivers/net/ethernet/mscc/ocelot_mm.c
164
mutex_unlock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot_mm.c
168
int ocelot_port_set_mm(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_mm.c
172
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot_mm.c
177
if (!ocelot->mm_supported)
drivers/net/ethernet/mscc/ocelot_mm.c
180
mm = &ocelot->mm[port];
drivers/net/ethernet/mscc/ocelot_mm.c
196
mutex_lock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot_mm.c
209
ocelot_rmw_rix(ocelot,
drivers/net/ethernet/mscc/ocelot_mm.c
222
ocelot_mm_update_port_status(ocelot, port);
drivers/net/ethernet/mscc/ocelot_mm.c
228
mutex_unlock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot_mm.c
234
int ocelot_port_get_mm(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_mm.c
237
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot_mm.c
241
if (!ocelot->mm_supported)
drivers/net/ethernet/mscc/ocelot_mm.c
244
mm = &ocelot->mm[port];
drivers/net/ethernet/mscc/ocelot_mm.c
246
mutex_lock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot_mm.c
257
val = ocelot_read_rix(ocelot, QSYS_PREEMPTION_CFG, port);
drivers/net/ethernet/mscc/ocelot_mm.c
262
ocelot_mm_update_port_status(ocelot, port);
drivers/net/ethernet/mscc/ocelot_mm.c
266
mutex_unlock(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot_mm.c
272
int ocelot_mm_init(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot_mm.c
278
if (!ocelot->mm_supported)
drivers/net/ethernet/mscc/ocelot_mm.c
281
ocelot->mm = devm_kcalloc(ocelot->dev, ocelot->num_phys_ports,
drivers/net/ethernet/mscc/ocelot_mm.c
282
sizeof(*ocelot->mm), GFP_KERNEL);
drivers/net/ethernet/mscc/ocelot_mm.c
283
if (!ocelot->mm)
drivers/net/ethernet/mscc/ocelot_mm.c
286
for (port = 0; port < ocelot->num_phys_ports; port++) {
drivers/net/ethernet/mscc/ocelot_mm.c
289
mm = &ocelot->mm[port];
drivers/net/ethernet/mscc/ocelot_mm.c
290
ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot_mm.c
52
void ocelot_port_update_active_preemptible_tcs(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot_mm.c
54
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot_mm.c
55
struct ocelot_mm_state *mm = &ocelot->mm[port];
drivers/net/ethernet/mscc/ocelot_mm.c
58
lockdep_assert_held(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot_mm.c
76
ocelot->ops->tas_guard_bands_update(ocelot, port);
drivers/net/ethernet/mscc/ocelot_mm.c
78
dev_dbg(ocelot->dev,
drivers/net/ethernet/mscc/ocelot_mm.c
85
ocelot_rmw_rix(ocelot, QSYS_PREEMPTION_CFG_P_QUEUES(val),
drivers/net/ethernet/mscc/ocelot_mm.c
90
void ocelot_port_change_fp(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_mm.c
93
struct ocelot_mm_state *mm = &ocelot->mm[port];
drivers/net/ethernet/mscc/ocelot_mm.c
95
lockdep_assert_held(&ocelot->fwd_domain_lock);
drivers/net/ethernet/mscc/ocelot_mrp.c
101
unsigned long cookie = OCELOT_VCAP_IS2_MRP_TRAP(ocelot);
drivers/net/ethernet/mscc/ocelot_mrp.c
103
return ocelot_trap_del(ocelot, port, cookie);
drivers/net/ethernet/mscc/ocelot_mrp.c
106
static void ocelot_mrp_save_mac(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_mrp.c
109
ocelot_mact_learn(ocelot, PGID_BLACKHOLE, mrp_test_dmac,
drivers/net/ethernet/mscc/ocelot_mrp.c
111
ocelot_mact_learn(ocelot, PGID_BLACKHOLE, mrp_control_dmac,
drivers/net/ethernet/mscc/ocelot_mrp.c
115
static void ocelot_mrp_del_mac(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_mrp.c
118
ocelot_mact_forget(ocelot, mrp_test_dmac, OCELOT_STANDALONE_PVID);
drivers/net/ethernet/mscc/ocelot_mrp.c
119
ocelot_mact_forget(ocelot, mrp_control_dmac, OCELOT_STANDALONE_PVID);
drivers/net/ethernet/mscc/ocelot_mrp.c
122
int ocelot_mrp_add(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_mrp.c
125
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot_mrp.c
144
int ocelot_mrp_del(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_mrp.c
147
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot_mrp.c
161
int ocelot_mrp_add_ring_role(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_mrp.c
164
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot_mrp.c
177
ocelot_mrp_save_mac(ocelot, ocelot_port);
drivers/net/ethernet/mscc/ocelot_mrp.c
18
static int ocelot_mrp_find_partner_port(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_mrp.c
180
return ocelot_mrp_trap_add(ocelot, port);
drivers/net/ethernet/mscc/ocelot_mrp.c
182
dst_port = ocelot_mrp_find_partner_port(ocelot, ocelot_port);
drivers/net/ethernet/mscc/ocelot_mrp.c
186
err = ocelot_mrp_redirect_add_vcap(ocelot, port, dst_port);
drivers/net/ethernet/mscc/ocelot_mrp.c
190
err = ocelot_mrp_trap_add(ocelot, port);
drivers/net/ethernet/mscc/ocelot_mrp.c
192
ocelot_mrp_del_vcap(ocelot,
drivers/net/ethernet/mscc/ocelot_mrp.c
193
OCELOT_VCAP_IS2_MRP_REDIRECT(ocelot, port));
drivers/net/ethernet/mscc/ocelot_mrp.c
201
int ocelot_mrp_del_ring_role(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_mrp.c
204
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot_mrp.c
216
err = ocelot_mrp_trap_del(ocelot, port);
drivers/net/ethernet/mscc/ocelot_mrp.c
220
ocelot_mrp_del_vcap(ocelot, OCELOT_VCAP_IS2_MRP_REDIRECT(ocelot, port));
drivers/net/ethernet/mscc/ocelot_mrp.c
222
for (i = 0; i < ocelot->num_phys_ports; ++i) {
drivers/net/ethernet/mscc/ocelot_mrp.c
223
ocelot_port = ocelot->ports[i];
drivers/net/ethernet/mscc/ocelot_mrp.c
23
for (i = 0; i < ocelot->num_phys_ports; ++i) {
drivers/net/ethernet/mscc/ocelot_mrp.c
232
ocelot_mrp_del_mac(ocelot, ocelot->ports[port]);
drivers/net/ethernet/mscc/ocelot_mrp.c
24
struct ocelot_port *ocelot_port = ocelot->ports[i];
drivers/net/ethernet/mscc/ocelot_mrp.c
36
static int ocelot_mrp_del_vcap(struct ocelot *ocelot, int id)
drivers/net/ethernet/mscc/ocelot_mrp.c
41
block_vcap_is2 = &ocelot->block[VCAP_IS2];
drivers/net/ethernet/mscc/ocelot_mrp.c
47
return ocelot_vcap_filter_del(ocelot, filter);
drivers/net/ethernet/mscc/ocelot_mrp.c
50
static int ocelot_mrp_redirect_add_vcap(struct ocelot *ocelot, int src_port,
drivers/net/ethernet/mscc/ocelot_mrp.c
63
filter->id.cookie = OCELOT_VCAP_IS2_MRP_REDIRECT(ocelot, src_port);
drivers/net/ethernet/mscc/ocelot_mrp.c
73
err = ocelot_vcap_filter_add(ocelot, filter, NULL);
drivers/net/ethernet/mscc/ocelot_mrp.c
91
static int ocelot_mrp_trap_add(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot_mrp.c
93
unsigned long cookie = OCELOT_VCAP_IS2_MRP_TRAP(ocelot);
drivers/net/ethernet/mscc/ocelot_mrp.c
95
return ocelot_trap_add(ocelot, port, cookie, false,
drivers/net/ethernet/mscc/ocelot_mrp.c
99
static int ocelot_mrp_trap_del(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot_net.c
1003
struct ocelot *ocelot = priv->port.ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
1006
ocelot_get_strings(ocelot, port, sset, data);
drivers/net/ethernet/mscc/ocelot_net.c
1014
struct ocelot *ocelot = priv->port.ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
1017
ocelot_get_ethtool_stats(ocelot, port, data);
drivers/net/ethernet/mscc/ocelot_net.c
1023
struct ocelot *ocelot = priv->port.ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
1026
return ocelot_get_sset_count(ocelot, port, sset);
drivers/net/ethernet/mscc/ocelot_net.c
1033
struct ocelot *ocelot = priv->port.ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
1036
if (!ocelot->ptp)
drivers/net/ethernet/mscc/ocelot_net.c
1039
return ocelot_get_ts_info(ocelot, port, info);
drivers/net/ethernet/mscc/ocelot_net.c
1046
struct ocelot *ocelot = priv->port.ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
1049
ocelot_port_get_ts_stats(ocelot, port, ts_stats);
drivers/net/ethernet/mscc/ocelot_net.c
1062
static void ocelot_port_attr_stp_state_set(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_net.c
1065
ocelot_bridge_stp_state_set(ocelot, port, state);
drivers/net/ethernet/mscc/ocelot_net.c
1068
static void ocelot_port_attr_ageing_set(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_net.c
1074
ocelot_set_ageing_time(ocelot, ageing_time);
drivers/net/ethernet/mscc/ocelot_net.c
1077
static void ocelot_port_attr_mc_set(struct ocelot *ocelot, int port, bool mc)
drivers/net/ethernet/mscc/ocelot_net.c
108
struct ocelot *ocelot = devlink_port_to_ocelot(dlp);
drivers/net/ethernet/mscc/ocelot_net.c
1087
ocelot_rmw_gix(ocelot, val, cpu_fwd_mcast,
drivers/net/ethernet/mscc/ocelot_net.c
1096
struct ocelot *ocelot = priv->port.ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
1105
ocelot_port_attr_stp_state_set(ocelot, port, attr->u.stp_state);
drivers/net/ethernet/mscc/ocelot_net.c
1108
ocelot_port_attr_ageing_set(ocelot, port, attr->u.ageing_time);
drivers/net/ethernet/mscc/ocelot_net.c
111
return ocelot_sb_tc_pool_bind_set(ocelot, port, sb_index, tc_index,
drivers/net/ethernet/mscc/ocelot_net.c
1111
ocelot_port_vlan_filtering(ocelot, port, attr->u.vlan_filtering,
drivers/net/ethernet/mscc/ocelot_net.c
1115
ocelot_port_attr_mc_set(ocelot, port, !attr->u.mc_disabled);
drivers/net/ethernet/mscc/ocelot_net.c
1118
err = ocelot_port_pre_bridge_flags(ocelot, port,
drivers/net/ethernet/mscc/ocelot_net.c
1122
ocelot_port_bridge_flags(ocelot, port, attr->u.brport_flags);
drivers/net/ethernet/mscc/ocelot_net.c
1137
struct ocelot *ocelot = ocelot_port->ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
1140
return ocelot_vlan_prepare(ocelot, port, vid, pvid, untagged, extack);
drivers/net/ethernet/mscc/ocelot_net.c
1163
struct ocelot *ocelot = ocelot_port->ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
1166
return ocelot_port_mdb_add(ocelot, port, mdb, ocelot_port->bridge);
drivers/net/ethernet/mscc/ocelot_net.c
1174
struct ocelot *ocelot = ocelot_port->ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
1177
return ocelot_port_mdb_del(ocelot, port, mdb, ocelot_port->bridge);
drivers/net/ethernet/mscc/ocelot_net.c
1185
struct ocelot *ocelot = ocelot_port->ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
1188
return ocelot_mrp_add(ocelot, port, mrp);
drivers/net/ethernet/mscc/ocelot_net.c
119
struct ocelot *ocelot = devlink_priv(dl);
drivers/net/ethernet/mscc/ocelot_net.c
1196
struct ocelot *ocelot = ocelot_port->ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
1199
return ocelot_mrp_del(ocelot, port, mrp);
drivers/net/ethernet/mscc/ocelot_net.c
1208
struct ocelot *ocelot = ocelot_port->ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
121
return ocelot_sb_occ_snapshot(ocelot, sb_index);
drivers/net/ethernet/mscc/ocelot_net.c
1211
return ocelot_mrp_add_ring_role(ocelot, port, mrp);
drivers/net/ethernet/mscc/ocelot_net.c
1220
struct ocelot *ocelot = ocelot_port->ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
1223
return ocelot_mrp_del_ring_role(ocelot, port, mrp);
drivers/net/ethernet/mscc/ocelot_net.c
127
struct ocelot *ocelot = devlink_priv(dl);
drivers/net/ethernet/mscc/ocelot_net.c
129
return ocelot_sb_occ_max_clear(ocelot, sb_index);
drivers/net/ethernet/mscc/ocelot_net.c
1290
static void ocelot_inherit_brport_flags(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_net.c
1302
ocelot_port_bridge_flags(ocelot, port, flags);
drivers/net/ethernet/mscc/ocelot_net.c
1305
static void ocelot_clear_brport_flags(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot_net.c
1312
ocelot_port_bridge_flags(ocelot, port, flags);
drivers/net/ethernet/mscc/ocelot_net.c
1315
static int ocelot_switchdev_sync(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_net.c
1323
ocelot_inherit_brport_flags(ocelot, port, brport_dev);
drivers/net/ethernet/mscc/ocelot_net.c
1326
ocelot_bridge_stp_state_set(ocelot, port, stp_state);
drivers/net/ethernet/mscc/ocelot_net.c
1329
ocelot_port_attr_ageing_set(ocelot, port, ageing_time);
drivers/net/ethernet/mscc/ocelot_net.c
1331
return ocelot_port_vlan_filtering(ocelot, port,
drivers/net/ethernet/mscc/ocelot_net.c
1336
static int ocelot_switchdev_unsync(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot_net.c
1340
err = ocelot_port_vlan_filtering(ocelot, port, false, NULL);
drivers/net/ethernet/mscc/ocelot_net.c
1344
ocelot_clear_brport_flags(ocelot, port);
drivers/net/ethernet/mscc/ocelot_net.c
1346
ocelot_bridge_stp_state_set(ocelot, port, BR_STATE_FORWARDING);
drivers/net/ethernet/mscc/ocelot_net.c
1351
static int ocelot_bridge_num_get(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_net.c
1354
int bridge_num = ocelot_bridge_num_find(ocelot, bridge_dev);
drivers/net/ethernet/mscc/ocelot_net.c
1358
bridge_num = find_first_zero_bit(&ocelot->bridges,
drivers/net/ethernet/mscc/ocelot_net.c
1359
ocelot->num_phys_ports);
drivers/net/ethernet/mscc/ocelot_net.c
1361
set_bit(bridge_num, &ocelot->bridges);
drivers/net/ethernet/mscc/ocelot_net.c
1367
static void ocelot_bridge_num_put(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_net.c
137
struct ocelot *ocelot = devlink_port_to_ocelot(dlp);
drivers/net/ethernet/mscc/ocelot_net.c
1374
if (!ocelot_bridge_num_find(ocelot, bridge_dev))
drivers/net/ethernet/mscc/ocelot_net.c
1375
clear_bit(bridge_num, &ocelot->bridges);
drivers/net/ethernet/mscc/ocelot_net.c
1385
struct ocelot *ocelot = ocelot_port->ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
1389
bridge_num = ocelot_bridge_num_get(ocelot, bridge);
drivers/net/ethernet/mscc/ocelot_net.c
1391
err = ocelot_port_bridge_join(ocelot, port, bridge, bridge_num,
drivers/net/ethernet/mscc/ocelot_net.c
140
return ocelot_sb_occ_port_pool_get(ocelot, port, sb_index, pool_index,
drivers/net/ethernet/mscc/ocelot_net.c
1403
err = ocelot_switchdev_sync(ocelot, port, brport_dev, bridge, extack);
drivers/net/ethernet/mscc/ocelot_net.c
1414
ocelot_port_bridge_leave(ocelot, port, bridge);
drivers/net/ethernet/mscc/ocelot_net.c
1416
ocelot_bridge_num_put(ocelot, bridge, bridge_num);
drivers/net/ethernet/mscc/ocelot_net.c
1436
struct ocelot *ocelot = ocelot_port->ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
1441
err = ocelot_switchdev_unsync(ocelot, port);
drivers/net/ethernet/mscc/ocelot_net.c
1445
ocelot_port_bridge_leave(ocelot, port, bridge);
drivers/net/ethernet/mscc/ocelot_net.c
1446
ocelot_bridge_num_put(ocelot, bridge, bridge_num);
drivers/net/ethernet/mscc/ocelot_net.c
1458
struct ocelot *ocelot = ocelot_port->ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
1463
err = ocelot_port_lag_join(ocelot, port, bond, info, extack);
drivers/net/ethernet/mscc/ocelot_net.c
1479
ocelot_port_lag_leave(ocelot, port, bond);
drivers/net/ethernet/mscc/ocelot_net.c
150
struct ocelot *ocelot = devlink_port_to_ocelot(dlp);
drivers/net/ethernet/mscc/ocelot_net.c
1500
struct ocelot *ocelot = ocelot_port->ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
1504
ocelot_port_lag_leave(ocelot, port, bond);
drivers/net/ethernet/mscc/ocelot_net.c
153
return ocelot_sb_occ_tc_port_bind_get(ocelot, port, sb_index,
drivers/net/ethernet/mscc/ocelot_net.c
1615
struct ocelot *ocelot = ocelot_port->ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
1624
ocelot_port_lag_change(ocelot, port, is_active);
drivers/net/ethernet/mscc/ocelot_net.c
171
int ocelot_port_devlink_init(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_net.c
1736
struct ocelot *ocelot = priv->port.ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
1739
ocelot_phylink_mac_config(ocelot, port, link_an_mode, state);
drivers/net/ethernet/mscc/ocelot_net.c
174
struct devlink_port *dlp = &ocelot->devlink_ports[port];
drivers/net/ethernet/mscc/ocelot_net.c
1748
struct ocelot *ocelot = priv->port.ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
175
int id_len = sizeof(ocelot->base_mac);
drivers/net/ethernet/mscc/ocelot_net.c
1751
ocelot_phylink_mac_link_down(ocelot, port, link_an_mode, interface,
drivers/net/ethernet/mscc/ocelot_net.c
176
struct devlink *dl = ocelot->devlink;
drivers/net/ethernet/mscc/ocelot_net.c
1764
struct ocelot *ocelot = priv->port.ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
1767
ocelot_phylink_mac_link_up(ocelot, port, phydev, link_an_mode,
drivers/net/ethernet/mscc/ocelot_net.c
1778
static int ocelot_port_phylink_create(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_net.c
1781
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot_net.c
1783
struct device *dev = ocelot->dev;
drivers/net/ethernet/mscc/ocelot_net.c
180
memcpy(attrs.switch_id.id, &ocelot->base_mac, id_len);
drivers/net/ethernet/mscc/ocelot_net.c
1805
err = ocelot_port_configure_serdes(ocelot, port, portnp);
drivers/net/ethernet/mscc/ocelot_net.c
1841
int ocelot_probe_port(struct ocelot *ocelot, int port, struct regmap *target,
drivers/net/ethernet/mscc/ocelot_net.c
1852
SET_NETDEV_DEV(dev, ocelot->dev);
drivers/net/ethernet/mscc/ocelot_net.c
1856
ocelot_port->ocelot = ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
1859
ocelot->ports[port] = ocelot_port;
drivers/net/ethernet/mscc/ocelot_net.c
1871
eth_hw_addr_gen(dev, ocelot->base_mac, port);
drivers/net/ethernet/mscc/ocelot_net.c
1873
ocelot_mact_learn(ocelot, PGID_CPU, dev->dev_addr,
drivers/net/ethernet/mscc/ocelot_net.c
1876
ocelot_init_port(ocelot, port);
drivers/net/ethernet/mscc/ocelot_net.c
1878
err = ocelot_port_phylink_create(ocelot, port, portnp);
drivers/net/ethernet/mscc/ocelot_net.c
1882
if (ocelot->fdma)
drivers/net/ethernet/mscc/ocelot_net.c
1883
ocelot_fdma_netdev_init(ocelot, dev);
drivers/net/ethernet/mscc/ocelot_net.c
1885
SET_NETDEV_DEVLINK_PORT(dev, &ocelot->devlink_ports[port]);
drivers/net/ethernet/mscc/ocelot_net.c
1888
dev_err(ocelot->dev, "register_netdev failed\n");
drivers/net/ethernet/mscc/ocelot_net.c
1895
if (ocelot->fdma)
drivers/net/ethernet/mscc/ocelot_net.c
1896
ocelot_fdma_netdev_deinit(ocelot, dev);
drivers/net/ethernet/mscc/ocelot_net.c
1898
ocelot->ports[port] = NULL;
drivers/net/ethernet/mscc/ocelot_net.c
190
void ocelot_port_devlink_teardown(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot_net.c
1909
struct ocelot *ocelot = ocelot_port->ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
1910
struct ocelot_fdma *fdma = ocelot->fdma;
drivers/net/ethernet/mscc/ocelot_net.c
1915
ocelot_fdma_netdev_deinit(ocelot, priv->dev);
drivers/net/ethernet/mscc/ocelot_net.c
192
struct devlink_port *dlp = &ocelot->devlink_ports[port];
drivers/net/ethernet/mscc/ocelot_net.c
201
struct ocelot *ocelot = priv->port.ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
209
return ocelot_cls_flower_replace(ocelot, port, f, ingress);
drivers/net/ethernet/mscc/ocelot_net.c
211
return ocelot_cls_flower_destroy(ocelot, port, f, ingress);
drivers/net/ethernet/mscc/ocelot_net.c
213
return ocelot_cls_flower_stats(ocelot, port, f, ingress);
drivers/net/ethernet/mscc/ocelot_net.c
225
struct ocelot *ocelot = priv->port.ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
248
err = ocelot_port_policer_add(ocelot, port, &pol);
drivers/net/ethernet/mscc/ocelot_net.c
266
struct ocelot *ocelot = priv->port.ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
289
err = ocelot_port_mirror_add(ocelot, priv->port.index,
drivers/net/ethernet/mscc/ocelot_net.c
306
struct ocelot *ocelot = priv->port.ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
310
err = ocelot_port_policer_del(ocelot, port);
drivers/net/ethernet/mscc/ocelot_net.c
32
static struct ocelot *devlink_port_to_ocelot(struct devlink_port *dlp)
drivers/net/ethernet/mscc/ocelot_net.c
327
struct ocelot *ocelot = priv->port.ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
330
ocelot_port_mirror_del(ocelot, port, ingress);
drivers/net/ethernet/mscc/ocelot_net.c
39
struct ocelot *ocelot = devlink_port_to_ocelot(dlp);
drivers/net/ethernet/mscc/ocelot_net.c
41
return dlp - ocelot->devlink_ports;
drivers/net/ethernet/mscc/ocelot_net.c
48
struct ocelot *ocelot = devlink_priv(dl);
drivers/net/ethernet/mscc/ocelot_net.c
497
struct ocelot *ocelot = ocelot_port->ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
50
return ocelot_sb_pool_get(ocelot, sb_index, pool_index, pool_info);
drivers/net/ethernet/mscc/ocelot_net.c
501
ret = ocelot_vlan_add(ocelot, port, vid, pvid, untagged);
drivers/net/ethernet/mscc/ocelot_net.c
506
ocelot_mact_learn(ocelot, PGID_CPU, dev->dev_addr, vid,
drivers/net/ethernet/mscc/ocelot_net.c
515
struct ocelot *ocelot = priv->port.ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
526
ret = ocelot_vlan_del(ocelot, port, vid);
drivers/net/ethernet/mscc/ocelot_net.c
531
ocelot_mact_forget(ocelot, dev->dev_addr, vid);
drivers/net/ethernet/mscc/ocelot_net.c
554
static bool ocelot_xmit_timestamp(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_net.c
557
if (ocelot->ptp && (skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP)) {
drivers/net/ethernet/mscc/ocelot_net.c
560
if (ocelot_port_txtstamp_request(ocelot, port, skb, &clone)) {
drivers/net/ethernet/mscc/ocelot_net.c
579
struct ocelot *ocelot = ocelot_port->ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
58
struct ocelot *ocelot = devlink_priv(dl);
drivers/net/ethernet/mscc/ocelot_net.c
583
if (!ocelot_xmit_timestamp(ocelot, port, skb, &rew_op))
drivers/net/ethernet/mscc/ocelot_net.c
586
ocelot_fdma_inject_frame(ocelot, port, rew_op, skb, dev);
drivers/net/ethernet/mscc/ocelot_net.c
596
struct ocelot *ocelot = ocelot_port->ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
60
return ocelot_sb_pool_set(ocelot, sb_index, pool_index, size,
drivers/net/ethernet/mscc/ocelot_net.c
600
ocelot_lock_inj_grp(ocelot, 0);
drivers/net/ethernet/mscc/ocelot_net.c
602
if (!ocelot_can_inject(ocelot, 0)) {
drivers/net/ethernet/mscc/ocelot_net.c
603
ocelot_unlock_inj_grp(ocelot, 0);
drivers/net/ethernet/mscc/ocelot_net.c
607
if (!ocelot_xmit_timestamp(ocelot, port, skb, &rew_op)) {
drivers/net/ethernet/mscc/ocelot_net.c
608
ocelot_unlock_inj_grp(ocelot, 0);
drivers/net/ethernet/mscc/ocelot_net.c
612
ocelot_port_inject_frame(ocelot, port, 0, rew_op, skb);
drivers/net/ethernet/mscc/ocelot_net.c
614
ocelot_unlock_inj_grp(ocelot, 0);
drivers/net/ethernet/mscc/ocelot_net.c
636
struct ocelot *ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
660
struct ocelot *ocelot = w->ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
664
ocelot_mact_learn(ocelot, w->learn.pgid, w->learn.addr,
drivers/net/ethernet/mscc/ocelot_net.c
668
ocelot_mact_forget(ocelot, w->forget.addr, w->forget.vid);
drivers/net/ethernet/mscc/ocelot_net.c
677
static int ocelot_enqueue_mact_action(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_net.c
68
struct ocelot *ocelot = devlink_port_to_ocelot(dlp);
drivers/net/ethernet/mscc/ocelot_net.c
685
w->ocelot = ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
687
queue_work(ocelot->owq, &w->work);
drivers/net/ethernet/mscc/ocelot_net.c
696
struct ocelot *ocelot = ocelot_port->ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
703
return ocelot_enqueue_mact_action(ocelot, &w);
drivers/net/ethernet/mscc/ocelot_net.c
71
return ocelot_sb_port_pool_get(ocelot, port, sb_index, pool_index,
drivers/net/ethernet/mscc/ocelot_net.c
710
struct ocelot *ocelot = ocelot_port->ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
719
return ocelot_enqueue_mact_action(ocelot, &w);
drivers/net/ethernet/mscc/ocelot_net.c
725
struct ocelot *ocelot = priv->port.ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
733
val = GENMASK(ocelot->num_phys_ports - 1, 0);
drivers/net/ethernet/mscc/ocelot_net.c
734
for_each_nonreserved_multicast_dest_pgid(ocelot, i)
drivers/net/ethernet/mscc/ocelot_net.c
735
ocelot_write_rix(ocelot, val, ANA_PGID_PGID, i);
drivers/net/ethernet/mscc/ocelot_net.c
744
struct ocelot *ocelot = ocelot_port->ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
748
ocelot_mact_learn(ocelot, PGID_CPU, addr->sa_data,
drivers/net/ethernet/mscc/ocelot_net.c
751
ocelot_mact_forget(ocelot, dev->dev_addr, OCELOT_STANDALONE_PVID);
drivers/net/ethernet/mscc/ocelot_net.c
761
struct ocelot *ocelot = priv->port.ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
764
return ocelot_port_get_stats64(ocelot, port, stats);
drivers/net/ethernet/mscc/ocelot_net.c
775
struct ocelot *ocelot = ocelot_port->ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
778
return ocelot_fdb_add(ocelot, port, addr, vid, ocelot_port->bridge);
drivers/net/ethernet/mscc/ocelot_net.c
788
struct ocelot *ocelot = ocelot_port->ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
791
return ocelot_fdb_del(ocelot, port, addr, vid, ocelot_port->bridge);
drivers/net/ethernet/mscc/ocelot_net.c
80
struct ocelot *ocelot = devlink_port_to_ocelot(dlp);
drivers/net/ethernet/mscc/ocelot_net.c
83
return ocelot_sb_port_pool_set(ocelot, port, sb_index, pool_index,
drivers/net/ethernet/mscc/ocelot_net.c
844
struct ocelot *ocelot = priv->port.ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
854
ret = ocelot_fdb_dump(ocelot, port, ocelot_port_fdb_do_dump, &dump);
drivers/net/ethernet/mscc/ocelot_net.c
873
static void ocelot_vlan_mode(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_net.c
879
val = ocelot_read(ocelot, ANA_VLANMASK);
drivers/net/ethernet/mscc/ocelot_net.c
884
ocelot_write(ocelot, val, ANA_VLANMASK);
drivers/net/ethernet/mscc/ocelot_net.c
892
struct ocelot *ocelot = priv->port.ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
903
ocelot_vlan_mode(ocelot, port, features);
drivers/net/ethernet/mscc/ocelot_net.c
917
struct ocelot *ocelot = priv->port.ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
920
ocelot_hwstamp_get(ocelot, port, cfg);
drivers/net/ethernet/mscc/ocelot_net.c
93
struct ocelot *ocelot = devlink_port_to_ocelot(dlp);
drivers/net/ethernet/mscc/ocelot_net.c
930
struct ocelot *ocelot = priv->port.ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
933
return ocelot_hwstamp_set(ocelot, port, cfg, extack);
drivers/net/ethernet/mscc/ocelot_net.c
940
struct ocelot *ocelot = ocelot_port->ocelot;
drivers/net/ethernet/mscc/ocelot_net.c
942
ocelot_port_set_maxlen(ocelot, priv->port.index, new_mtu);
drivers/net/ethernet/mscc/ocelot_net.c
96
return ocelot_sb_tc_pool_bind_get(ocelot, port, sb_index, tc_index,
drivers/net/ethernet/mscc/ocelot_net.c
968
struct net_device *ocelot_port_to_netdev(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot_net.c
970
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot_police.c
105
dev_err(ocelot->dev,
drivers/net/ethernet/mscc/ocelot_police.c
112
dev_err(ocelot->dev,
drivers/net/ethernet/mscc/ocelot_police.c
119
dev_err(ocelot->dev,
drivers/net/ethernet/mscc/ocelot_police.c
126
dev_err(ocelot->dev,
drivers/net/ethernet/mscc/ocelot_police.c
138
ocelot_write_gix(ocelot, value, ANA_POL_MODE_CFG, pol_ix);
drivers/net/ethernet/mscc/ocelot_police.c
140
ocelot_write_gix(ocelot,
drivers/net/ethernet/mscc/ocelot_police.c
145
ocelot_write_gix(ocelot,
drivers/net/ethernet/mscc/ocelot_police.c
149
ocelot_write_gix(ocelot,
drivers/net/ethernet/mscc/ocelot_police.c
154
ocelot_write_gix(ocelot,
drivers/net/ethernet/mscc/ocelot_police.c
202
int ocelot_port_policer_add(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_police.c
215
dev_dbg(ocelot->dev, "%s: port %u pir %u kbps, pbs %u bytes\n",
drivers/net/ethernet/mscc/ocelot_police.c
218
err = qos_policer_conf_set(ocelot, POL_IX_PORT + port, &pp);
drivers/net/ethernet/mscc/ocelot_police.c
222
ocelot_rmw_gix(ocelot,
drivers/net/ethernet/mscc/ocelot_police.c
23
int qos_policer_conf_set(struct ocelot *ocelot, u32 pol_ix,
drivers/net/ethernet/mscc/ocelot_police.c
233
int ocelot_port_policer_del(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot_police.c
238
dev_dbg(ocelot->dev, "%s: port %u\n", __func__, port);
drivers/net/ethernet/mscc/ocelot_police.c
242
err = qos_policer_conf_set(ocelot, POL_IX_PORT + port, &pp);
drivers/net/ethernet/mscc/ocelot_police.c
246
ocelot_rmw_gix(ocelot,
drivers/net/ethernet/mscc/ocelot_police.h
34
int qos_policer_conf_set(struct ocelot *ocelot, u32 pol_ix,
drivers/net/ethernet/mscc/ocelot_ptp.c
104
ocelot_write_rix(ocelot, val, PTP_PIN_CFG, TOD_ACC_PIN);
drivers/net/ethernet/mscc/ocelot_ptp.c
106
ocelot_write_rix(ocelot, 0, PTP_PIN_TOD_SEC_LSB, TOD_ACC_PIN);
drivers/net/ethernet/mscc/ocelot_ptp.c
107
ocelot_write_rix(ocelot, 0, PTP_PIN_TOD_SEC_MSB, TOD_ACC_PIN);
drivers/net/ethernet/mscc/ocelot_ptp.c
108
ocelot_write_rix(ocelot, delta, PTP_PIN_TOD_NSEC, TOD_ACC_PIN);
drivers/net/ethernet/mscc/ocelot_ptp.c
110
val = ocelot_read_rix(ocelot, PTP_PIN_CFG, TOD_ACC_PIN);
drivers/net/ethernet/mscc/ocelot_ptp.c
115
ocelot_write_rix(ocelot, val, PTP_PIN_CFG, TOD_ACC_PIN);
drivers/net/ethernet/mscc/ocelot_ptp.c
117
spin_unlock_irqrestore(&ocelot->ptp_clock_lock, flags);
drivers/net/ethernet/mscc/ocelot_ptp.c
119
if (ocelot->ops->tas_clock_adjust)
drivers/net/ethernet/mscc/ocelot_ptp.c
120
ocelot->ops->tas_clock_adjust(ocelot);
drivers/net/ethernet/mscc/ocelot_ptp.c
140
struct ocelot *ocelot = container_of(ptp, struct ocelot, ptp_info);
drivers/net/ethernet/mscc/ocelot_ptp.c
145
spin_lock_irqsave(&ocelot->ptp_clock_lock, flags);
drivers/net/ethernet/mscc/ocelot_ptp.c
169
ocelot_write(ocelot, unit | adj, PTP_CLK_CFG_ADJ_FREQ);
drivers/net/ethernet/mscc/ocelot_ptp.c
170
ocelot_write(ocelot, PTP_CFG_CLK_ADJ_CFG_ENA | direction,
drivers/net/ethernet/mscc/ocelot_ptp.c
173
spin_unlock_irqrestore(&ocelot->ptp_clock_lock, flags);
drivers/net/ethernet/mscc/ocelot_ptp.c
177
ocelot_write(ocelot, 0, PTP_CLK_CFG_ADJ_CFG);
drivers/net/ethernet/mscc/ocelot_ptp.c
179
spin_unlock_irqrestore(&ocelot->ptp_clock_lock, flags);
drivers/net/ethernet/mscc/ocelot_ptp.c
202
struct ocelot *ocelot = container_of(ptp, struct ocelot, ptp_info);
drivers/net/ethernet/mscc/ocelot_ptp.c
21
struct ocelot *ocelot = container_of(ptp, struct ocelot, ptp_info);
drivers/net/ethernet/mscc/ocelot_ptp.c
214
pin = ptp_find_pin(ocelot->ptp_clock, PTP_PF_PEROUT,
drivers/net/ethernet/mscc/ocelot_ptp.c
235
spin_lock_irqsave(&ocelot->ptp_clock_lock, flags);
drivers/net/ethernet/mscc/ocelot_ptp.c
237
ocelot_write_rix(ocelot, val, PTP_PIN_CFG, ptp_pin);
drivers/net/ethernet/mscc/ocelot_ptp.c
238
spin_unlock_irqrestore(&ocelot->ptp_clock_lock, flags);
drivers/net/ethernet/mscc/ocelot_ptp.c
251
dev_warn(ocelot->dev,
drivers/net/ethernet/mscc/ocelot_ptp.c
253
dev_warn(ocelot->dev,
drivers/net/ethernet/mscc/ocelot_ptp.c
27
spin_lock_irqsave(&ocelot->ptp_clock_lock, flags);
drivers/net/ethernet/mscc/ocelot_ptp.c
280
spin_lock_irqsave(&ocelot->ptp_clock_lock, flags);
drivers/net/ethernet/mscc/ocelot_ptp.c
281
ocelot_write_rix(ocelot, ts_phase.tv_nsec,
drivers/net/ethernet/mscc/ocelot_ptp.c
283
ocelot_write_rix(ocelot, wf_high,
drivers/net/ethernet/mscc/ocelot_ptp.c
287
ocelot_write_rix(ocelot, val, PTP_PIN_CFG, ptp_pin);
drivers/net/ethernet/mscc/ocelot_ptp.c
288
spin_unlock_irqrestore(&ocelot->ptp_clock_lock, flags);
drivers/net/ethernet/mscc/ocelot_ptp.c
29
val = ocelot_read_rix(ocelot, PTP_PIN_CFG, TOD_ACC_PIN);
drivers/net/ethernet/mscc/ocelot_ptp.c
298
spin_lock_irqsave(&ocelot->ptp_clock_lock, flags);
drivers/net/ethernet/mscc/ocelot_ptp.c
299
ocelot_write_rix(ocelot, wf_low, PTP_PIN_WF_LOW_PERIOD,
drivers/net/ethernet/mscc/ocelot_ptp.c
301
ocelot_write_rix(ocelot, wf_high, PTP_PIN_WF_HIGH_PERIOD,
drivers/net/ethernet/mscc/ocelot_ptp.c
304
ocelot_write_rix(ocelot, val, PTP_PIN_CFG, ptp_pin);
drivers/net/ethernet/mscc/ocelot_ptp.c
305
spin_unlock_irqrestore(&ocelot->ptp_clock_lock, flags);
drivers/net/ethernet/mscc/ocelot_ptp.c
32
ocelot_write_rix(ocelot, val, PTP_PIN_CFG, TOD_ACC_PIN);
drivers/net/ethernet/mscc/ocelot_ptp.c
34
s = ocelot_read_rix(ocelot, PTP_PIN_TOD_SEC_MSB, TOD_ACC_PIN) & 0xffff;
drivers/net/ethernet/mscc/ocelot_ptp.c
36
s += ocelot_read_rix(ocelot, PTP_PIN_TOD_SEC_LSB, TOD_ACC_PIN);
drivers/net/ethernet/mscc/ocelot_ptp.c
361
static int ocelot_l2_ptp_trap_add(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot_ptp.c
363
unsigned long l2_cookie = OCELOT_VCAP_IS2_L2_PTP_TRAP(ocelot);
drivers/net/ethernet/mscc/ocelot_ptp.c
365
return ocelot_trap_add(ocelot, port, l2_cookie, true,
drivers/net/ethernet/mscc/ocelot_ptp.c
369
static int ocelot_l2_ptp_trap_del(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot_ptp.c
37
ns = ocelot_read_rix(ocelot, PTP_PIN_TOD_NSEC, TOD_ACC_PIN);
drivers/net/ethernet/mscc/ocelot_ptp.c
371
unsigned long l2_cookie = OCELOT_VCAP_IS2_L2_PTP_TRAP(ocelot);
drivers/net/ethernet/mscc/ocelot_ptp.c
373
return ocelot_trap_del(ocelot, port, l2_cookie);
drivers/net/ethernet/mscc/ocelot_ptp.c
376
static int ocelot_ipv4_ptp_trap_add(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot_ptp.c
378
unsigned long ipv4_gen_cookie = OCELOT_VCAP_IS2_IPV4_GEN_PTP_TRAP(ocelot);
drivers/net/ethernet/mscc/ocelot_ptp.c
379
unsigned long ipv4_ev_cookie = OCELOT_VCAP_IS2_IPV4_EV_PTP_TRAP(ocelot);
drivers/net/ethernet/mscc/ocelot_ptp.c
382
err = ocelot_trap_add(ocelot, port, ipv4_ev_cookie, true,
drivers/net/ethernet/mscc/ocelot_ptp.c
387
err = ocelot_trap_add(ocelot, port, ipv4_gen_cookie, false,
drivers/net/ethernet/mscc/ocelot_ptp.c
39
spin_unlock_irqrestore(&ocelot->ptp_clock_lock, flags);
drivers/net/ethernet/mscc/ocelot_ptp.c
390
ocelot_trap_del(ocelot, port, ipv4_ev_cookie);
drivers/net/ethernet/mscc/ocelot_ptp.c
395
static int ocelot_ipv4_ptp_trap_del(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot_ptp.c
397
unsigned long ipv4_gen_cookie = OCELOT_VCAP_IS2_IPV4_GEN_PTP_TRAP(ocelot);
drivers/net/ethernet/mscc/ocelot_ptp.c
398
unsigned long ipv4_ev_cookie = OCELOT_VCAP_IS2_IPV4_EV_PTP_TRAP(ocelot);
drivers/net/ethernet/mscc/ocelot_ptp.c
401
err = ocelot_trap_del(ocelot, port, ipv4_ev_cookie);
drivers/net/ethernet/mscc/ocelot_ptp.c
402
err |= ocelot_trap_del(ocelot, port, ipv4_gen_cookie);
drivers/net/ethernet/mscc/ocelot_ptp.c
406
static int ocelot_ipv6_ptp_trap_add(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot_ptp.c
408
unsigned long ipv6_gen_cookie = OCELOT_VCAP_IS2_IPV6_GEN_PTP_TRAP(ocelot);
drivers/net/ethernet/mscc/ocelot_ptp.c
409
unsigned long ipv6_ev_cookie = OCELOT_VCAP_IS2_IPV6_EV_PTP_TRAP(ocelot);
drivers/net/ethernet/mscc/ocelot_ptp.c
412
err = ocelot_trap_add(ocelot, port, ipv6_ev_cookie, true,
drivers/net/ethernet/mscc/ocelot_ptp.c
417
err = ocelot_trap_add(ocelot, port, ipv6_gen_cookie, false,
drivers/net/ethernet/mscc/ocelot_ptp.c
420
ocelot_trap_del(ocelot, port, ipv6_ev_cookie);
drivers/net/ethernet/mscc/ocelot_ptp.c
425
static int ocelot_ipv6_ptp_trap_del(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot_ptp.c
427
unsigned long ipv6_gen_cookie = OCELOT_VCAP_IS2_IPV6_GEN_PTP_TRAP(ocelot);
drivers/net/ethernet/mscc/ocelot_ptp.c
428
unsigned long ipv6_ev_cookie = OCELOT_VCAP_IS2_IPV6_EV_PTP_TRAP(ocelot);
drivers/net/ethernet/mscc/ocelot_ptp.c
431
err = ocelot_trap_del(ocelot, port, ipv6_ev_cookie);
drivers/net/ethernet/mscc/ocelot_ptp.c
432
err |= ocelot_trap_del(ocelot, port, ipv6_gen_cookie);
drivers/net/ethernet/mscc/ocelot_ptp.c
436
static int ocelot_setup_ptp_traps(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_ptp.c
439
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot_ptp.c
446
err = ocelot_l2_ptp_trap_add(ocelot, port);
drivers/net/ethernet/mscc/ocelot_ptp.c
448
err = ocelot_l2_ptp_trap_del(ocelot, port);
drivers/net/ethernet/mscc/ocelot_ptp.c
453
err = ocelot_ipv4_ptp_trap_add(ocelot, port);
drivers/net/ethernet/mscc/ocelot_ptp.c
457
err = ocelot_ipv6_ptp_trap_add(ocelot, port);
drivers/net/ethernet/mscc/ocelot_ptp.c
461
err = ocelot_ipv4_ptp_trap_del(ocelot, port);
drivers/net/ethernet/mscc/ocelot_ptp.c
463
err |= ocelot_ipv6_ptp_trap_del(ocelot, port);
drivers/net/ethernet/mscc/ocelot_ptp.c
476
ocelot_ipv4_ptp_trap_del(ocelot, port);
drivers/net/ethernet/mscc/ocelot_ptp.c
479
ocelot_l2_ptp_trap_del(ocelot, port);
drivers/net/ethernet/mscc/ocelot_ptp.c
517
void ocelot_hwstamp_get(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_ptp.c
520
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot_ptp.c
538
int ocelot_hwstamp_set(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_ptp.c
542
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot_ptp.c
56
struct ocelot *ocelot = container_of(ptp, struct ocelot, ptp_info);
drivers/net/ethernet/mscc/ocelot_ptp.c
575
err = ocelot_setup_ptp_traps(ocelot, port, l2, l4);
drivers/net/ethernet/mscc/ocelot_ptp.c
587
int ocelot_get_ts_info(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_ptp.c
590
if (ocelot->ptp_clock) {
drivers/net/ethernet/mscc/ocelot_ptp.c
591
info->phc_index = ptp_clock_index(ocelot->ptp_clock);
drivers/net/ethernet/mscc/ocelot_ptp.c
60
spin_lock_irqsave(&ocelot->ptp_clock_lock, flags);
drivers/net/ethernet/mscc/ocelot_ptp.c
611
static struct sk_buff *ocelot_port_dequeue_ptp_tx_skb(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_ptp.c
615
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot_ptp.c
619
spin_lock(&ocelot->ts_id_lock);
drivers/net/ethernet/mscc/ocelot_ptp.c
62
val = ocelot_read_rix(ocelot, PTP_PIN_CFG, TOD_ACC_PIN);
drivers/net/ethernet/mscc/ocelot_ptp.c
634
ocelot->ptp_skbs_in_flight--;
drivers/net/ethernet/mscc/ocelot_ptp.c
639
spin_unlock(&ocelot->ts_id_lock);
drivers/net/ethernet/mscc/ocelot_ptp.c
644
static int ocelot_port_queue_ptp_tx_skb(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_ptp.c
647
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot_ptp.c
652
spin_lock(&ocelot->ts_id_lock);
drivers/net/ethernet/mscc/ocelot_ptp.c
66
ocelot_write_rix(ocelot, val, PTP_PIN_CFG, TOD_ACC_PIN);
drivers/net/ethernet/mscc/ocelot_ptp.c
665
dev_dbg_ratelimited(ocelot->dev,
drivers/net/ethernet/mscc/ocelot_ptp.c
671
ocelot->ptp_skbs_in_flight--;
drivers/net/ethernet/mscc/ocelot_ptp.c
677
if (ocelot->ptp_skbs_in_flight == OCELOT_PTP_FIFO_SIZE) {
drivers/net/ethernet/mscc/ocelot_ptp.c
678
spin_unlock(&ocelot->ts_id_lock);
drivers/net/ethernet/mscc/ocelot_ptp.c
68
ocelot_write_rix(ocelot, lower_32_bits(ts->tv_sec), PTP_PIN_TOD_SEC_LSB,
drivers/net/ethernet/mscc/ocelot_ptp.c
684
spin_unlock(&ocelot->ts_id_lock);
drivers/net/ethernet/mscc/ocelot_ptp.c
691
ocelot->ptp_skbs_in_flight++;
drivers/net/ethernet/mscc/ocelot_ptp.c
694
spin_unlock(&ocelot->ts_id_lock);
drivers/net/ethernet/mscc/ocelot_ptp.c
696
dev_dbg_ratelimited(ocelot->dev, "port %d timestamp id %lu\n", port, n);
drivers/net/ethernet/mscc/ocelot_ptp.c
70
ocelot_write_rix(ocelot, upper_32_bits(ts->tv_sec), PTP_PIN_TOD_SEC_MSB,
drivers/net/ethernet/mscc/ocelot_ptp.c
72
ocelot_write_rix(ocelot, ts->tv_nsec, PTP_PIN_TOD_NSEC, TOD_ACC_PIN);
drivers/net/ethernet/mscc/ocelot_ptp.c
720
int ocelot_port_txtstamp_request(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_ptp.c
724
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot_ptp.c
74
val = ocelot_read_rix(ocelot, PTP_PIN_CFG, TOD_ACC_PIN);
drivers/net/ethernet/mscc/ocelot_ptp.c
763
err = ocelot_port_queue_ptp_tx_skb(ocelot, port, *clone);
drivers/net/ethernet/mscc/ocelot_ptp.c
78
ocelot_write_rix(ocelot, val, PTP_PIN_CFG, TOD_ACC_PIN);
drivers/net/ethernet/mscc/ocelot_ptp.c
784
static void ocelot_get_hwtimestamp(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_ptp.c
790
spin_lock_irqsave(&ocelot->ptp_clock_lock, flags);
drivers/net/ethernet/mscc/ocelot_ptp.c
793
val = ocelot_read_rix(ocelot, PTP_PIN_CFG, TOD_ACC_PIN);
drivers/net/ethernet/mscc/ocelot_ptp.c
797
ocelot_write_rix(ocelot, val, PTP_PIN_CFG, TOD_ACC_PIN);
drivers/net/ethernet/mscc/ocelot_ptp.c
798
ts->tv_sec = ocelot_read_rix(ocelot, PTP_PIN_TOD_SEC_LSB, TOD_ACC_PIN);
drivers/net/ethernet/mscc/ocelot_ptp.c
80
spin_unlock_irqrestore(&ocelot->ptp_clock_lock, flags);
drivers/net/ethernet/mscc/ocelot_ptp.c
801
val = ocelot_read(ocelot, SYS_PTP_TXSTAMP);
drivers/net/ethernet/mscc/ocelot_ptp.c
808
spin_unlock_irqrestore(&ocelot->ptp_clock_lock, flags);
drivers/net/ethernet/mscc/ocelot_ptp.c
811
void ocelot_get_txtstamp(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot_ptp.c
82
if (ocelot->ops->tas_clock_adjust)
drivers/net/ethernet/mscc/ocelot_ptp.c
822
val = ocelot_read(ocelot, SYS_PTP_STATUS);
drivers/net/ethernet/mscc/ocelot_ptp.c
83
ocelot->ops->tas_clock_adjust(ocelot);
drivers/net/ethernet/mscc/ocelot_ptp.c
834
ocelot_port = ocelot->ports[txport];
drivers/net/ethernet/mscc/ocelot_ptp.c
837
skb_match = ocelot_port_dequeue_ptp_tx_skb(ocelot, txport, id,
drivers/net/ethernet/mscc/ocelot_ptp.c
844
dev_dbg_ratelimited(ocelot->dev,
drivers/net/ethernet/mscc/ocelot_ptp.c
856
ocelot_get_hwtimestamp(ocelot, &ts);
drivers/net/ethernet/mscc/ocelot_ptp.c
864
ocelot_write(ocelot, SYS_PTP_NXT_PTP_NXT, SYS_PTP_NXT);
drivers/net/ethernet/mscc/ocelot_ptp.c
869
int ocelot_init_timestamp(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_ptp.c
875
ocelot->ptp_info = *info;
drivers/net/ethernet/mscc/ocelot_ptp.c
878
struct ptp_pin_desc *p = &ocelot->ptp_pins[i];
drivers/net/ethernet/mscc/ocelot_ptp.c
885
ocelot->ptp_info.pin_config = &ocelot->ptp_pins[0];
drivers/net/ethernet/mscc/ocelot_ptp.c
887
ptp_clock = ptp_clock_register(&ocelot->ptp_info, ocelot->dev);
drivers/net/ethernet/mscc/ocelot_ptp.c
894
ocelot->ptp_clock = ptp_clock;
drivers/net/ethernet/mscc/ocelot_ptp.c
896
ocelot_write(ocelot, SYS_PTP_CFG_PTP_STAMP_WID(30), SYS_PTP_CFG);
drivers/net/ethernet/mscc/ocelot_ptp.c
897
ocelot_write(ocelot, 0xffffffff, ANA_TABLES_PTP_ID_LOW);
drivers/net/ethernet/mscc/ocelot_ptp.c
898
ocelot_write(ocelot, 0xffffffff, ANA_TABLES_PTP_ID_HIGH);
drivers/net/ethernet/mscc/ocelot_ptp.c
900
ocelot_write(ocelot, PTP_CFG_MISC_PTP_EN, PTP_CFG_MISC);
drivers/net/ethernet/mscc/ocelot_ptp.c
906
int ocelot_deinit_timestamp(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot_ptp.c
908
if (ocelot->ptp_clock)
drivers/net/ethernet/mscc/ocelot_ptp.c
909
ptp_clock_unregister(ocelot->ptp_clock);
drivers/net/ethernet/mscc/ocelot_ptp.c
92
struct ocelot *ocelot = container_of(ptp, struct ocelot,
drivers/net/ethernet/mscc/ocelot_ptp.c
97
spin_lock_irqsave(&ocelot->ptp_clock_lock, flags);
drivers/net/ethernet/mscc/ocelot_ptp.c
99
val = ocelot_read_rix(ocelot, PTP_PIN_CFG, TOD_ACC_PIN);
drivers/net/ethernet/mscc/ocelot_stats.c
1001
dev_name(ocelot->dev));
drivers/net/ethernet/mscc/ocelot_stats.c
1002
ocelot->stats_queue = create_singlethread_workqueue(queue_name);
drivers/net/ethernet/mscc/ocelot_stats.c
1003
if (!ocelot->stats_queue)
drivers/net/ethernet/mscc/ocelot_stats.c
1006
spin_lock_init(&ocelot->stats_lock);
drivers/net/ethernet/mscc/ocelot_stats.c
1007
mutex_init(&ocelot->stat_view_lock);
drivers/net/ethernet/mscc/ocelot_stats.c
1009
ret = ocelot_prepare_stats_regions(ocelot);
drivers/net/ethernet/mscc/ocelot_stats.c
1011
destroy_workqueue(ocelot->stats_queue);
drivers/net/ethernet/mscc/ocelot_stats.c
1015
INIT_DELAYED_WORK(&ocelot->stats_work, ocelot_check_stats_work);
drivers/net/ethernet/mscc/ocelot_stats.c
1016
queue_delayed_work(ocelot->stats_queue, &ocelot->stats_work,
drivers/net/ethernet/mscc/ocelot_stats.c
1022
void ocelot_stats_deinit(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot_stats.c
1024
disable_delayed_work_sync(&ocelot->stats_work);
drivers/net/ethernet/mscc/ocelot_stats.c
1025
destroy_workqueue(ocelot->stats_queue);
drivers/net/ethernet/mscc/ocelot_stats.c
312
ocelot_get_stats_layout(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot_stats.c
314
if (ocelot->mm_supported)
drivers/net/ethernet/mscc/ocelot_stats.c
323
static int ocelot_port_update_stats(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot_stats.c
329
ocelot_write(ocelot, SYS_STAT_CFG_STAT_VIEW(port), SYS_STAT_CFG);
drivers/net/ethernet/mscc/ocelot_stats.c
331
list_for_each_entry(region, &ocelot->stats_regions, node) {
drivers/net/ethernet/mscc/ocelot_stats.c
332
err = ocelot_bulk_read(ocelot, region->base, region->buf,
drivers/net/ethernet/mscc/ocelot_stats.c
344
static void ocelot_port_transfer_stats(struct ocelot *ocelot, int port)
drivers/net/ethernet/mscc/ocelot_stats.c
349
list_for_each_entry(region, &ocelot->stats_regions, node) {
drivers/net/ethernet/mscc/ocelot_stats.c
353
u64 *stat = &ocelot->stats[idx + j];
drivers/net/ethernet/mscc/ocelot_stats.c
367
struct ocelot *ocelot = container_of(del_work, struct ocelot,
drivers/net/ethernet/mscc/ocelot_stats.c
371
mutex_lock(&ocelot->stat_view_lock);
drivers/net/ethernet/mscc/ocelot_stats.c
373
for (port = 0; port < ocelot->num_phys_ports; port++) {
drivers/net/ethernet/mscc/ocelot_stats.c
374
err = ocelot_port_update_stats(ocelot, port);
drivers/net/ethernet/mscc/ocelot_stats.c
378
spin_lock(&ocelot->stats_lock);
drivers/net/ethernet/mscc/ocelot_stats.c
379
ocelot_port_transfer_stats(ocelot, port);
drivers/net/ethernet/mscc/ocelot_stats.c
380
spin_unlock(&ocelot->stats_lock);
drivers/net/ethernet/mscc/ocelot_stats.c
383
if (!err && ocelot->ops->update_stats)
drivers/net/ethernet/mscc/ocelot_stats.c
384
ocelot->ops->update_stats(ocelot);
drivers/net/ethernet/mscc/ocelot_stats.c
386
mutex_unlock(&ocelot->stat_view_lock);
drivers/net/ethernet/mscc/ocelot_stats.c
389
dev_err(ocelot->dev, "Error %d updating ethtool stats\n", err);
drivers/net/ethernet/mscc/ocelot_stats.c
391
queue_delayed_work(ocelot->stats_queue, &ocelot->stats_work,
drivers/net/ethernet/mscc/ocelot_stats.c
395
void ocelot_get_strings(struct ocelot *ocelot, int port, u32 sset, u8 *data)
drivers/net/ethernet/mscc/ocelot_stats.c
403
layout = ocelot_get_stats_layout(ocelot);
drivers/net/ethernet/mscc/ocelot_stats.c
416
static void ocelot_port_stats_run(struct ocelot *ocelot, int port, void *priv,
drivers/net/ethernet/mscc/ocelot_stats.c
417
void (*cb)(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_stats.c
422
mutex_lock(&ocelot->stat_view_lock);
drivers/net/ethernet/mscc/ocelot_stats.c
424
err = ocelot_port_update_stats(ocelot, port);
drivers/net/ethernet/mscc/ocelot_stats.c
426
dev_err(ocelot->dev, "Failed to update port %d stats: %pe\n",
drivers/net/ethernet/mscc/ocelot_stats.c
431
spin_lock(&ocelot->stats_lock);
drivers/net/ethernet/mscc/ocelot_stats.c
433
ocelot_port_transfer_stats(ocelot, port);
drivers/net/ethernet/mscc/ocelot_stats.c
434
cb(ocelot, port, priv);
drivers/net/ethernet/mscc/ocelot_stats.c
436
spin_unlock(&ocelot->stats_lock);
drivers/net/ethernet/mscc/ocelot_stats.c
439
mutex_unlock(&ocelot->stat_view_lock);
drivers/net/ethernet/mscc/ocelot_stats.c
442
int ocelot_get_sset_count(struct ocelot *ocelot, int port, int sset)
drivers/net/ethernet/mscc/ocelot_stats.c
451
layout = ocelot_get_stats_layout(ocelot);
drivers/net/ethernet/mscc/ocelot_stats.c
461
static void ocelot_port_ethtool_stats_cb(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_stats.c
468
layout = ocelot_get_stats_layout(ocelot);
drivers/net/ethernet/mscc/ocelot_stats.c
477
*data++ = ocelot->stats[index];
drivers/net/ethernet/mscc/ocelot_stats.c
481
void ocelot_get_ethtool_stats(struct ocelot *ocelot, int port, u64 *data)
drivers/net/ethernet/mscc/ocelot_stats.c
483
ocelot_port_stats_run(ocelot, port, data, ocelot_port_ethtool_stats_cb);
drivers/net/ethernet/mscc/ocelot_stats.c
487
static void ocelot_port_pause_stats_cb(struct ocelot *ocelot, int port, void *priv)
drivers/net/ethernet/mscc/ocelot_stats.c
489
u64 *s = &ocelot->stats[port * OCELOT_NUM_STATS];
drivers/net/ethernet/mscc/ocelot_stats.c
496
static void ocelot_port_pmac_pause_stats_cb(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_stats.c
499
u64 *s = &ocelot->stats[port * OCELOT_NUM_STATS];
drivers/net/ethernet/mscc/ocelot_stats.c
506
static void ocelot_port_mm_stats_cb(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_stats.c
509
u64 *s = &ocelot->stats[port * OCELOT_NUM_STATS];
drivers/net/ethernet/mscc/ocelot_stats.c
520
void ocelot_port_get_pause_stats(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_stats.c
527
ocelot_port_stats_run(ocelot, port, pause_stats,
drivers/net/ethernet/mscc/ocelot_stats.c
531
if (ocelot->mm_supported)
drivers/net/ethernet/mscc/ocelot_stats.c
532
ocelot_port_stats_run(ocelot, port, pause_stats,
drivers/net/ethernet/mscc/ocelot_stats.c
536
dev = ocelot->ops->port_to_netdev(ocelot, port);
drivers/net/ethernet/mscc/ocelot_stats.c
543
void ocelot_port_get_mm_stats(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_stats.c
546
if (!ocelot->mm_supported)
drivers/net/ethernet/mscc/ocelot_stats.c
549
ocelot_port_stats_run(ocelot, port, stats, ocelot_port_mm_stats_cb);
drivers/net/ethernet/mscc/ocelot_stats.c
564
static void ocelot_port_rmon_stats_cb(struct ocelot *ocelot, int port, void *priv)
drivers/net/ethernet/mscc/ocelot_stats.c
566
u64 *s = &ocelot->stats[port * OCELOT_NUM_STATS];
drivers/net/ethernet/mscc/ocelot_stats.c
591
static void ocelot_port_pmac_rmon_stats_cb(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_stats.c
594
u64 *s = &ocelot->stats[port * OCELOT_NUM_STATS];
drivers/net/ethernet/mscc/ocelot_stats.c
619
void ocelot_port_get_rmon_stats(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_stats.c
629
ocelot_port_stats_run(ocelot, port, rmon_stats,
drivers/net/ethernet/mscc/ocelot_stats.c
633
if (ocelot->mm_supported)
drivers/net/ethernet/mscc/ocelot_stats.c
634
ocelot_port_stats_run(ocelot, port, rmon_stats,
drivers/net/ethernet/mscc/ocelot_stats.c
638
dev = ocelot->ops->port_to_netdev(ocelot, port);
drivers/net/ethernet/mscc/ocelot_stats.c
645
static void ocelot_port_ctrl_stats_cb(struct ocelot *ocelot, int port, void *priv)
drivers/net/ethernet/mscc/ocelot_stats.c
647
u64 *s = &ocelot->stats[port * OCELOT_NUM_STATS];
drivers/net/ethernet/mscc/ocelot_stats.c
653
static void ocelot_port_pmac_ctrl_stats_cb(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_stats.c
656
u64 *s = &ocelot->stats[port * OCELOT_NUM_STATS];
drivers/net/ethernet/mscc/ocelot_stats.c
662
void ocelot_port_get_eth_ctrl_stats(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_stats.c
669
ocelot_port_stats_run(ocelot, port, ctrl_stats,
drivers/net/ethernet/mscc/ocelot_stats.c
673
if (ocelot->mm_supported)
drivers/net/ethernet/mscc/ocelot_stats.c
674
ocelot_port_stats_run(ocelot, port, ctrl_stats,
drivers/net/ethernet/mscc/ocelot_stats.c
678
dev = ocelot->ops->port_to_netdev(ocelot, port);
drivers/net/ethernet/mscc/ocelot_stats.c
685
static void ocelot_port_mac_stats_cb(struct ocelot *ocelot, int port, void *priv)
drivers/net/ethernet/mscc/ocelot_stats.c
687
u64 *s = &ocelot->stats[port * OCELOT_NUM_STATS];
drivers/net/ethernet/mscc/ocelot_stats.c
727
static void ocelot_port_pmac_mac_stats_cb(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_stats.c
730
u64 *s = &ocelot->stats[port * OCELOT_NUM_STATS];
drivers/net/ethernet/mscc/ocelot_stats.c
761
void ocelot_port_get_eth_mac_stats(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_stats.c
768
ocelot_port_stats_run(ocelot, port, mac_stats,
drivers/net/ethernet/mscc/ocelot_stats.c
772
if (ocelot->mm_supported)
drivers/net/ethernet/mscc/ocelot_stats.c
773
ocelot_port_stats_run(ocelot, port, mac_stats,
drivers/net/ethernet/mscc/ocelot_stats.c
777
dev = ocelot->ops->port_to_netdev(ocelot, port);
drivers/net/ethernet/mscc/ocelot_stats.c
784
static void ocelot_port_phy_stats_cb(struct ocelot *ocelot, int port, void *priv)
drivers/net/ethernet/mscc/ocelot_stats.c
786
u64 *s = &ocelot->stats[port * OCELOT_NUM_STATS];
drivers/net/ethernet/mscc/ocelot_stats.c
792
static void ocelot_port_pmac_phy_stats_cb(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_stats.c
795
u64 *s = &ocelot->stats[port * OCELOT_NUM_STATS];
drivers/net/ethernet/mscc/ocelot_stats.c
801
void ocelot_port_get_eth_phy_stats(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_stats.c
808
ocelot_port_stats_run(ocelot, port, phy_stats,
drivers/net/ethernet/mscc/ocelot_stats.c
812
if (ocelot->mm_supported)
drivers/net/ethernet/mscc/ocelot_stats.c
813
ocelot_port_stats_run(ocelot, port, phy_stats,
drivers/net/ethernet/mscc/ocelot_stats.c
817
dev = ocelot->ops->port_to_netdev(ocelot, port);
drivers/net/ethernet/mscc/ocelot_stats.c
824
void ocelot_port_get_ts_stats(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_stats.c
827
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot_stats.c
831
if (!ocelot->ptp)
drivers/net/ethernet/mscc/ocelot_stats.c
844
void ocelot_port_get_stats64(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_stats.c
847
u64 *s = &ocelot->stats[port * OCELOT_NUM_STATS];
drivers/net/ethernet/mscc/ocelot_stats.c
849
spin_lock(&ocelot->stats_lock);
drivers/net/ethernet/mscc/ocelot_stats.c
905
spin_unlock(&ocelot->stats_lock);
drivers/net/ethernet/mscc/ocelot_stats.c
909
static int ocelot_prepare_stats_regions(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot_stats.c
916
INIT_LIST_HEAD(&ocelot->stats_regions);
drivers/net/ethernet/mscc/ocelot_stats.c
918
layout = ocelot_get_stats_layout(ocelot);
drivers/net/ethernet/mscc/ocelot_stats.c
929
WARN(ocelot->map[SYS][last & REG_MASK] >= ocelot->map[SYS][layout[i].reg & REG_MASK],
drivers/net/ethernet/mscc/ocelot_stats.c
931
last, ocelot->map[SYS][last & REG_MASK],
drivers/net/ethernet/mscc/ocelot_stats.c
932
layout[i].reg, ocelot->map[SYS][layout[i].reg & REG_MASK]);
drivers/net/ethernet/mscc/ocelot_stats.c
935
if (region && ocelot->map[SYS][layout[i].reg & REG_MASK] ==
drivers/net/ethernet/mscc/ocelot_stats.c
936
ocelot->map[SYS][last & REG_MASK] + 4) {
drivers/net/ethernet/mscc/ocelot_stats.c
939
region = devm_kzalloc(ocelot->dev, sizeof(*region),
drivers/net/ethernet/mscc/ocelot_stats.c
947
list_add_tail(®ion->node, &ocelot->stats_regions);
drivers/net/ethernet/mscc/ocelot_stats.c
953
list_for_each_entry(region, &ocelot->stats_regions, node) {
drivers/net/ethernet/mscc/ocelot_stats.c
957
ocelot_reg_to_target_addr(ocelot, region->base, &target,
drivers/net/ethernet/mscc/ocelot_stats.c
960
dev_dbg(ocelot->dev,
drivers/net/ethernet/mscc/ocelot_stats.c
963
region->buf = devm_kcalloc(ocelot->dev, region->count,
drivers/net/ethernet/mscc/ocelot_stats.c
972
int ocelot_stats_init(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot_stats.c
977
ocelot->stats = devm_kcalloc(ocelot->dev,
drivers/net/ethernet/mscc/ocelot_stats.c
978
ocelot->num_phys_ports * OCELOT_NUM_STATS,
drivers/net/ethernet/mscc/ocelot_stats.c
980
if (!ocelot->stats)
drivers/net/ethernet/mscc/ocelot_stats.c
983
if (ocelot->ptp) {
drivers/net/ethernet/mscc/ocelot_stats.c
984
for (int port = 0; port < ocelot->num_phys_ports; port++) {
drivers/net/ethernet/mscc/ocelot_stats.c
985
struct ocelot_port *ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot_stats.c
990
ocelot_port->ts_stats = devm_kzalloc(ocelot->dev,
drivers/net/ethernet/mscc/ocelot_vcap.c
1000
ret = ocelot_vcap_filter_add_aux_resources(ocelot, filter, extack);
drivers/net/ethernet/mscc/ocelot_vcap.c
102
ocelot_target_write(ocelot, vcap->target, data->tg, VCAP_CACHE_TG_DAT);
drivers/net/ethernet/mscc/ocelot_vcap.c
105
static void vcap_cache2entry(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_vcap.c
1079
static void ocelot_match_all_as_mac_etype(struct ocelot *ocelot, int port,
drivers/net/ethernet/mscc/ocelot_vcap.c
1091
ocelot_rmw_gix(ocelot, val,
drivers/net/ethernet/mscc/ocelot_vcap.c
1139
ocelot_exclusive_mac_etype_filter_rules(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_vcap.c
114
data->entry[i] = ocelot_target_read_rix(ocelot, vcap->target,
drivers/net/ethernet/mscc/ocelot_vcap.c
1142
struct ocelot_vcap_block *block = &ocelot->block[filter->block_id];
drivers/net/ethernet/mscc/ocelot_vcap.c
1162
ocelot->num_phys_ports)
drivers/net/ethernet/mscc/ocelot_vcap.c
1163
ocelot_match_all_as_mac_etype(ocelot, port,
drivers/net/ethernet/mscc/ocelot_vcap.c
117
data->mask[i] = ~ocelot_target_read_rix(ocelot, vcap->target,
drivers/net/ethernet/mscc/ocelot_vcap.c
1176
ocelot->num_phys_ports)
drivers/net/ethernet/mscc/ocelot_vcap.c
1177
ocelot_match_all_as_mac_etype(ocelot, port,
drivers/net/ethernet/mscc/ocelot_vcap.c
1184
int ocelot_vcap_filter_add(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_vcap.c
1188
struct ocelot_vcap_block *block = &ocelot->block[filter->block_id];
drivers/net/ethernet/mscc/ocelot_vcap.c
1191
if (!ocelot_exclusive_mac_etype_filter_rules(ocelot, filter)) {
drivers/net/ethernet/mscc/ocelot_vcap.c
1198
ret = ocelot_vcap_filter_add_to_block(ocelot, block, filter, extack);
drivers/net/ethernet/mscc/ocelot_vcap.c
120
data->tg = ocelot_target_read(ocelot, vcap->target, VCAP_CACHE_TG_DAT);
drivers/net/ethernet/mscc/ocelot_vcap.c
1213
vcap_entry_get(ocelot, i - 1, tmp);
drivers/net/ethernet/mscc/ocelot_vcap.c
1214
vcap_entry_set(ocelot, i, tmp);
drivers/net/ethernet/mscc/ocelot_vcap.c
1218
vcap_entry_set(ocelot, index, filter);
drivers/net/ethernet/mscc/ocelot_vcap.c
1223
static void ocelot_vcap_block_remove_filter(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_vcap.c
123
static void vcap_action2cache(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_vcap.c
1231
ocelot_vcap_filter_del_aux_resources(ocelot, tmp);
drivers/net/ethernet/mscc/ocelot_vcap.c
1240
int ocelot_vcap_filter_del(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_vcap.c
1243
struct ocelot_vcap_block *block = &ocelot->block[filter->block_id];
drivers/net/ethernet/mscc/ocelot_vcap.c
1259
ocelot_vcap_block_remove_filter(ocelot, block, filter);
drivers/net/ethernet/mscc/ocelot_vcap.c
1267
vcap_entry_get(ocelot, i + 1, tmp);
drivers/net/ethernet/mscc/ocelot_vcap.c
1268
vcap_entry_set(ocelot, i, tmp);
drivers/net/ethernet/mscc/ocelot_vcap.c
1272
vcap_entry_set(ocelot, block->count, &del_filter);
drivers/net/ethernet/mscc/ocelot_vcap.c
1278
int ocelot_vcap_filter_replace(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_vcap.c
1281
struct ocelot_vcap_block *block = &ocelot->block[filter->block_id];
drivers/net/ethernet/mscc/ocelot_vcap.c
1288
vcap_entry_set(ocelot, index, filter);
drivers/net/ethernet/mscc/ocelot_vcap.c
1294
int ocelot_vcap_filter_stats_update(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_vcap.c
1297
struct ocelot_vcap_block *block = &ocelot->block[filter->block_id];
drivers/net/ethernet/mscc/ocelot_vcap.c
1305
vcap_entry_get(ocelot, index, filter);
drivers/net/ethernet/mscc/ocelot_vcap.c
1310
vcap_entry_set(ocelot, index, &tmp);
drivers/net/ethernet/mscc/ocelot_vcap.c
1315
static void ocelot_vcap_init_one(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_vcap.c
1322
vcap_entry2cache(ocelot, vcap, &data);
drivers/net/ethernet/mscc/ocelot_vcap.c
1323
ocelot_target_write(ocelot, vcap->target, vcap->entry_count,
drivers/net/ethernet/mscc/ocelot_vcap.c
1325
vcap_cmd(ocelot, vcap, 0, VCAP_CMD_INITIALIZE, VCAP_SEL_ENTRY);
drivers/net/ethernet/mscc/ocelot_vcap.c
1327
vcap_action2cache(ocelot, vcap, &data);
drivers/net/ethernet/mscc/ocelot_vcap.c
1328
ocelot_target_write(ocelot, vcap->target, vcap->action_count,
drivers/net/ethernet/mscc/ocelot_vcap.c
1330
vcap_cmd(ocelot, vcap, 0, VCAP_CMD_INITIALIZE,
drivers/net/ethernet/mscc/ocelot_vcap.c
1334
static void ocelot_vcap_detect_constants(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_vcap.c
1341
version = ocelot_target_read(ocelot, vcap->target,
drivers/net/ethernet/mscc/ocelot_vcap.c
1348
vcap->tg_width = ocelot_target_read(ocelot, vcap->target,
drivers/net/ethernet/mscc/ocelot_vcap.c
1351
vcap->sw_count = ocelot_target_read(ocelot, vcap->target,
drivers/net/ethernet/mscc/ocelot_vcap.c
1356
vcap->entry_count = ocelot_target_read(ocelot, vcap->target,
drivers/net/ethernet/mscc/ocelot_vcap.c
1384
vcap->entry_width = ocelot_target_read(ocelot, vcap->target,
drivers/net/ethernet/mscc/ocelot_vcap.c
1387
num_default_actions = ocelot_target_read(ocelot, vcap->target,
drivers/net/ethernet/mscc/ocelot_vcap.c
1390
vcap->action_width = ocelot_target_read(ocelot, vcap->target,
drivers/net/ethernet/mscc/ocelot_vcap.c
1398
counter_memory_width = ocelot_target_read(ocelot, vcap->target,
drivers/net/ethernet/mscc/ocelot_vcap.c
140
ocelot_target_write_rix(ocelot, vcap->target, data->action[i],
drivers/net/ethernet/mscc/ocelot_vcap.c
1403
int ocelot_vcap_init(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot_vcap.c
1414
ret = qos_policer_conf_set(ocelot, OCELOT_POLICER_DISCARD, &cpu_drop);
drivers/net/ethernet/mscc/ocelot_vcap.c
1419
struct ocelot_vcap_block *block = &ocelot->block[i];
drivers/net/ethernet/mscc/ocelot_vcap.c
1420
struct vcap_props *vcap = &ocelot->vcap[i];
drivers/net/ethernet/mscc/ocelot_vcap.c
1424
ocelot_vcap_detect_constants(ocelot, vcap);
drivers/net/ethernet/mscc/ocelot_vcap.c
1425
ocelot_vcap_init_one(ocelot, vcap);
drivers/net/ethernet/mscc/ocelot_vcap.c
1428
INIT_LIST_HEAD(&ocelot->dummy_rules);
drivers/net/ethernet/mscc/ocelot_vcap.c
1429
INIT_LIST_HEAD(&ocelot->traps);
drivers/net/ethernet/mscc/ocelot_vcap.c
1430
INIT_LIST_HEAD(&ocelot->vcap_pol.pol_list);
drivers/net/ethernet/mscc/ocelot_vcap.c
144
ocelot_target_write_rix(ocelot, vcap->target, data->counter[i],
drivers/net/ethernet/mscc/ocelot_vcap.c
148
static void vcap_cache2action(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_vcap.c
158
data->action[i] = ocelot_target_read_rix(ocelot, vcap->target,
drivers/net/ethernet/mscc/ocelot_vcap.c
163
data->counter[i] = ocelot_target_read_rix(ocelot, vcap->target,
drivers/net/ethernet/mscc/ocelot_vcap.c
330
static void is2_action_set(struct ocelot *ocelot, struct vcap_data *data,
drivers/net/ethernet/mscc/ocelot_vcap.c
333
const struct vcap_props *vcap = &ocelot->vcap[VCAP_IS2];
drivers/net/ethernet/mscc/ocelot_vcap.c
345
static void is2_entry_set(struct ocelot *ocelot, int ix,
drivers/net/ethernet/mscc/ocelot_vcap.c
348
const struct vcap_props *vcap = &ocelot->vcap[VCAP_IS2];
drivers/net/ethernet/mscc/ocelot_vcap.c
359
vcap_row_cmd(ocelot, vcap, row, VCAP_CMD_READ, VCAP_SEL_ALL);
drivers/net/ethernet/mscc/ocelot_vcap.c
360
vcap_cache2entry(ocelot, vcap, &data);
drivers/net/ethernet/mscc/ocelot_vcap.c
361
vcap_cache2action(ocelot, vcap, &data);
drivers/net/ethernet/mscc/ocelot_vcap.c
49
static u32 vcap_read_update_ctrl(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_vcap.c
52
return ocelot_target_read(ocelot, vcap->target, VCAP_CORE_UPDATE_CTRL);
drivers/net/ethernet/mscc/ocelot_vcap.c
55
static void vcap_cmd(struct ocelot *ocelot, const struct vcap_props *vcap,
drivers/net/ethernet/mscc/ocelot_vcap.c
636
is2_action_set(ocelot, &data, filter);
drivers/net/ethernet/mscc/ocelot_vcap.c
641
vcap_entry2cache(ocelot, vcap, &data);
drivers/net/ethernet/mscc/ocelot_vcap.c
642
vcap_action2cache(ocelot, vcap, &data);
drivers/net/ethernet/mscc/ocelot_vcap.c
643
vcap_row_cmd(ocelot, vcap, row, VCAP_CMD_WRITE, VCAP_SEL_ALL);
drivers/net/ethernet/mscc/ocelot_vcap.c
646
static void is1_action_set(struct ocelot *ocelot, struct vcap_data *data,
drivers/net/ethernet/mscc/ocelot_vcap.c
649
const struct vcap_props *vcap = &ocelot->vcap[VCAP_IS1];
drivers/net/ethernet/mscc/ocelot_vcap.c
669
static void is1_entry_set(struct ocelot *ocelot, int ix,
drivers/net/ethernet/mscc/ocelot_vcap.c
672
const struct vcap_props *vcap = &ocelot->vcap[VCAP_IS1];
drivers/net/ethernet/mscc/ocelot_vcap.c
681
vcap_row_cmd(ocelot, vcap, row, VCAP_CMD_READ, VCAP_SEL_ALL);
drivers/net/ethernet/mscc/ocelot_vcap.c
682
vcap_cache2entry(ocelot, vcap, &data);
drivers/net/ethernet/mscc/ocelot_vcap.c
683
vcap_cache2action(ocelot, vcap, &data);
drivers/net/ethernet/mscc/ocelot_vcap.c
74
ocelot_target_write(ocelot, vcap->target, value, VCAP_CORE_UPDATE_CTRL);
drivers/net/ethernet/mscc/ocelot_vcap.c
771
is1_action_set(ocelot, &data, filter);
drivers/net/ethernet/mscc/ocelot_vcap.c
776
vcap_entry2cache(ocelot, vcap, &data);
drivers/net/ethernet/mscc/ocelot_vcap.c
777
vcap_action2cache(ocelot, vcap, &data);
drivers/net/ethernet/mscc/ocelot_vcap.c
778
vcap_row_cmd(ocelot, vcap, row, VCAP_CMD_WRITE, VCAP_SEL_ALL);
drivers/net/ethernet/mscc/ocelot_vcap.c
78
10, 100000, false, ocelot, vcap);
drivers/net/ethernet/mscc/ocelot_vcap.c
781
static void es0_action_set(struct ocelot *ocelot, struct vcap_data *data,
drivers/net/ethernet/mscc/ocelot_vcap.c
784
const struct vcap_props *vcap = &ocelot->vcap[VCAP_ES0];
drivers/net/ethernet/mscc/ocelot_vcap.c
809
static void es0_entry_set(struct ocelot *ocelot, int ix,
drivers/net/ethernet/mscc/ocelot_vcap.c
812
const struct vcap_props *vcap = &ocelot->vcap[VCAP_ES0];
drivers/net/ethernet/mscc/ocelot_vcap.c
82
static void vcap_row_cmd(struct ocelot *ocelot, const struct vcap_props *vcap,
drivers/net/ethernet/mscc/ocelot_vcap.c
820
vcap_row_cmd(ocelot, vcap, row, VCAP_CMD_READ, VCAP_SEL_ALL);
drivers/net/ethernet/mscc/ocelot_vcap.c
821
vcap_cache2entry(ocelot, vcap, &data);
drivers/net/ethernet/mscc/ocelot_vcap.c
822
vcap_cache2action(ocelot, vcap, &data);
drivers/net/ethernet/mscc/ocelot_vcap.c
842
es0_action_set(ocelot, &data, filter);
drivers/net/ethernet/mscc/ocelot_vcap.c
847
vcap_entry2cache(ocelot, vcap, &data);
drivers/net/ethernet/mscc/ocelot_vcap.c
848
vcap_action2cache(ocelot, vcap, &data);
drivers/net/ethernet/mscc/ocelot_vcap.c
849
vcap_row_cmd(ocelot, vcap, row, VCAP_CMD_WRITE, VCAP_SEL_ALL);
drivers/net/ethernet/mscc/ocelot_vcap.c
85
vcap_cmd(ocelot, vcap, vcap->entry_count - row - 1, cmd, sel);
drivers/net/ethernet/mscc/ocelot_vcap.c
852
static void vcap_entry_get(struct ocelot *ocelot, int ix,
drivers/net/ethernet/mscc/ocelot_vcap.c
855
const struct vcap_props *vcap = &ocelot->vcap[filter->block_id];
drivers/net/ethernet/mscc/ocelot_vcap.c
867
vcap_row_cmd(ocelot, vcap, row, VCAP_CMD_READ, VCAP_SEL_COUNTER);
drivers/net/ethernet/mscc/ocelot_vcap.c
868
vcap_cache2action(ocelot, vcap, &data);
drivers/net/ethernet/mscc/ocelot_vcap.c
876
static void vcap_entry_set(struct ocelot *ocelot, int ix,
drivers/net/ethernet/mscc/ocelot_vcap.c
88
static void vcap_entry2cache(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_vcap.c
880
return is1_entry_set(ocelot, ix, filter);
drivers/net/ethernet/mscc/ocelot_vcap.c
882
return is2_entry_set(ocelot, ix, filter);
drivers/net/ethernet/mscc/ocelot_vcap.c
884
return es0_entry_set(ocelot, ix, filter);
drivers/net/ethernet/mscc/ocelot_vcap.c
893
int ocelot_vcap_policer_add(struct ocelot *ocelot, u32 pol_ix,
drivers/net/ethernet/mscc/ocelot_vcap.c
907
list_for_each_entry(tmp, &ocelot->vcap_pol.pol_list, list)
drivers/net/ethernet/mscc/ocelot_vcap.c
917
ret = qos_policer_conf_set(ocelot, pol_ix, &pp);
drivers/net/ethernet/mscc/ocelot_vcap.c
925
list_add_tail(&tmp->list, &ocelot->vcap_pol.pol_list);
drivers/net/ethernet/mscc/ocelot_vcap.c
931
int ocelot_vcap_policer_del(struct ocelot *ocelot, u32 pol_ix)
drivers/net/ethernet/mscc/ocelot_vcap.c
937
list_for_each_entry_safe(tmp, n, &ocelot->vcap_pol.pol_list, list)
drivers/net/ethernet/mscc/ocelot_vcap.c
948
return qos_policer_conf_set(ocelot, pol_ix, &pp);
drivers/net/ethernet/mscc/ocelot_vcap.c
956
ocelot_vcap_filter_add_aux_resources(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_vcap.c
964
m = ocelot_mirror_get(ocelot, filter->egress_port.value,
drivers/net/ethernet/mscc/ocelot_vcap.c
97
ocelot_target_write_rix(ocelot, vcap->target, data->entry[i],
drivers/net/ethernet/mscc/ocelot_vcap.c
971
ret = ocelot_vcap_policer_add(ocelot, filter->action.pol_ix,
drivers/net/ethernet/mscc/ocelot_vcap.c
981
ocelot_vcap_filter_del_aux_resources(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_vcap.c
985
ocelot_vcap_policer_del(ocelot, filter->action.pol_ix);
drivers/net/ethernet/mscc/ocelot_vcap.c
988
ocelot_mirror_put(ocelot);
drivers/net/ethernet/mscc/ocelot_vcap.c
99
ocelot_target_write_rix(ocelot, vcap->target, ~data->mask[i],
drivers/net/ethernet/mscc/ocelot_vcap.c
991
static int ocelot_vcap_filter_add_to_block(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_vcap.h
15
int ocelot_vcap_filter_stats_update(struct ocelot *ocelot,
drivers/net/ethernet/mscc/ocelot_vcap.h
18
int ocelot_vcap_init(struct ocelot *ocelot);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
122
static void mscc_ocelot_teardown_devlink_ports(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot_vsc7514.c
126
for (port = 0; port < ocelot->num_phys_ports; port++)
drivers/net/ethernet/mscc/ocelot_vsc7514.c
127
ocelot_port_devlink_teardown(ocelot, port);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
130
static void mscc_ocelot_release_ports(struct ocelot *ocelot)
drivers/net/ethernet/mscc/ocelot_vsc7514.c
134
for (port = 0; port < ocelot->num_phys_ports; port++) {
drivers/net/ethernet/mscc/ocelot_vsc7514.c
137
ocelot_port = ocelot->ports[port];
drivers/net/ethernet/mscc/ocelot_vsc7514.c
141
ocelot_deinit_port(ocelot, port);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
149
struct ocelot *ocelot = platform_get_drvdata(pdev);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
155
ocelot->ports = devm_kcalloc(ocelot->dev, ocelot->num_phys_ports,
drivers/net/ethernet/mscc/ocelot_vsc7514.c
157
if (!ocelot->ports)
drivers/net/ethernet/mscc/ocelot_vsc7514.c
160
ocelot->devlink_ports = devm_kcalloc(ocelot->dev,
drivers/net/ethernet/mscc/ocelot_vsc7514.c
161
ocelot->num_phys_ports,
drivers/net/ethernet/mscc/ocelot_vsc7514.c
162
sizeof(*ocelot->devlink_ports),
drivers/net/ethernet/mscc/ocelot_vsc7514.c
164
if (!ocelot->devlink_ports)
drivers/net/ethernet/mscc/ocelot_vsc7514.c
176
if (port < 0 || port >= ocelot->num_phys_ports) {
drivers/net/ethernet/mscc/ocelot_vsc7514.c
177
dev_err(ocelot->dev,
drivers/net/ethernet/mscc/ocelot_vsc7514.c
179
ocelot->num_phys_ports);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
187
target = ocelot_regmap_init(ocelot, res);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
194
err = ocelot_port_devlink_init(ocelot, port,
drivers/net/ethernet/mscc/ocelot_vsc7514.c
201
err = ocelot_probe_port(ocelot, port, target, portnp);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
203
ocelot_port_devlink_teardown(ocelot, port);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
211
for (port = 0; port < ocelot->num_phys_ports; port++) {
drivers/net/ethernet/mscc/ocelot_vsc7514.c
215
err = ocelot_port_devlink_init(ocelot, port,
drivers/net/ethernet/mscc/ocelot_vsc7514.c
227
mscc_ocelot_release_ports(ocelot);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
229
for (port = 0; port < ocelot->num_phys_ports; port++) {
drivers/net/ethernet/mscc/ocelot_vsc7514.c
231
ocelot_port_devlink_teardown(ocelot, port);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
242
struct ocelot *ocelot;
drivers/net/ethernet/mscc/ocelot_vsc7514.c
267
devlink_alloc(&ocelot_devlink_ops, sizeof(*ocelot), &pdev->dev);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
271
ocelot = devlink_priv(devlink);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
272
ocelot->devlink = priv_to_devlink(ocelot);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
273
platform_set_drvdata(pdev, ocelot);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
274
ocelot->dev = &pdev->dev;
drivers/net/ethernet/mscc/ocelot_vsc7514.c
283
target = ocelot_regmap_init(ocelot, res);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
286
ocelot->targets[io_target[i].id] = NULL;
drivers/net/ethernet/mscc/ocelot_vsc7514.c
29
static int ocelot_chip_init(struct ocelot *ocelot, const struct ocelot_ops *ops)
drivers/net/ethernet/mscc/ocelot_vsc7514.c
293
ocelot->targets[io_target[i].id] = target;
drivers/net/ethernet/mscc/ocelot_vsc7514.c
296
if (ocelot->targets[FDMA])
drivers/net/ethernet/mscc/ocelot_vsc7514.c
297
ocelot_fdma_init(pdev, ocelot);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
306
ocelot->targets[HSIO] = hsio;
drivers/net/ethernet/mscc/ocelot_vsc7514.c
308
err = ocelot_chip_init(ocelot, &ocelot_ops);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
320
"frame extraction", ocelot);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
325
if (irq_ptp_rdy > 0 && ocelot->targets[PTP]) {
drivers/net/ethernet/mscc/ocelot_vsc7514.c
329
ocelot);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
33
ocelot->map = vsc7514_regmap;
drivers/net/ethernet/mscc/ocelot_vsc7514.c
334
ocelot->ptp = 1;
drivers/net/ethernet/mscc/ocelot_vsc7514.c
339
dev_err(ocelot->dev, "no ethernet-ports child node found\n");
drivers/net/ethernet/mscc/ocelot_vsc7514.c
34
ocelot->num_mact_rows = 1024;
drivers/net/ethernet/mscc/ocelot_vsc7514.c
344
ocelot->num_phys_ports = of_get_child_count(ports);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
345
ocelot->num_flooding_pgids = 1;
drivers/net/ethernet/mscc/ocelot_vsc7514.c
347
ocelot->vcap = vsc7514_vcap_props;
drivers/net/ethernet/mscc/ocelot_vsc7514.c
349
ocelot->vcap_pol.base = VSC7514_VCAP_POLICER_BASE;
drivers/net/ethernet/mscc/ocelot_vsc7514.c
35
ocelot->ops = ops;
drivers/net/ethernet/mscc/ocelot_vsc7514.c
350
ocelot->vcap_pol.max = VSC7514_VCAP_POLICER_MAX;
drivers/net/ethernet/mscc/ocelot_vsc7514.c
352
ocelot->npi = -1;
drivers/net/ethernet/mscc/ocelot_vsc7514.c
354
err = ocelot_init(ocelot);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
362
if (ocelot->fdma)
drivers/net/ethernet/mscc/ocelot_vsc7514.c
363
ocelot_fdma_start(ocelot);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
365
err = ocelot_devlink_sb_register(ocelot);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
369
if (ocelot->ptp) {
drivers/net/ethernet/mscc/ocelot_vsc7514.c
37
ret = ocelot_regfields_init(ocelot, vsc7514_regfields);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
370
err = ocelot_init_timestamp(ocelot, &ocelot_ptp_clock_info);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
372
dev_err(ocelot->dev,
drivers/net/ethernet/mscc/ocelot_vsc7514.c
374
ocelot->ptp = 0;
drivers/net/ethernet/mscc/ocelot_vsc7514.c
390
mscc_ocelot_release_ports(ocelot);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
391
mscc_ocelot_teardown_devlink_ports(ocelot);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
393
ocelot_deinit(ocelot);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
403
struct ocelot *ocelot = platform_get_drvdata(pdev);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
405
if (ocelot->fdma)
drivers/net/ethernet/mscc/ocelot_vsc7514.c
406
ocelot_fdma_deinit(ocelot);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
407
devlink_unregister(ocelot->devlink);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
408
ocelot_deinit_timestamp(ocelot);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
409
ocelot_devlink_sb_unregister(ocelot);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
41
ocelot_pll5_init(ocelot);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
410
mscc_ocelot_release_ports(ocelot);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
411
mscc_ocelot_teardown_devlink_ports(ocelot);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
412
ocelot_deinit(ocelot);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
416
devlink_free(ocelot->devlink);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
43
eth_random_addr(ocelot->base_mac);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
44
ocelot->base_mac[5] &= 0xf0;
drivers/net/ethernet/mscc/ocelot_vsc7514.c
51
struct ocelot *ocelot = arg;
drivers/net/ethernet/mscc/ocelot_vsc7514.c
54
ocelot_lock_xtr_grp(ocelot, grp);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
56
while (ocelot_read(ocelot, QS_XTR_DATA_PRESENT) & BIT(grp)) {
drivers/net/ethernet/mscc/ocelot_vsc7514.c
59
err = ocelot_xtr_poll_frame(ocelot, grp, &skb);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
72
ocelot_drain_cpu_queue(ocelot, 0);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
74
ocelot_unlock_xtr_grp(ocelot, grp);
drivers/net/ethernet/mscc/ocelot_vsc7514.c
81
struct ocelot *ocelot = arg;
drivers/net/ethernet/mscc/ocelot_vsc7514.c
83
ocelot_get_txtstamp(ocelot);
include/soc/mscc/ocelot.h
1000
int ocelot_init(struct ocelot *ocelot);
include/soc/mscc/ocelot.h
1001
void ocelot_deinit(struct ocelot *ocelot);
include/soc/mscc/ocelot.h
1002
void ocelot_init_port(struct ocelot *ocelot, int port);
include/soc/mscc/ocelot.h
1003
void ocelot_deinit_port(struct ocelot *ocelot, int port);
include/soc/mscc/ocelot.h
1005
void ocelot_port_setup_dsa_8021q_cpu(struct ocelot *ocelot, int cpu);
include/soc/mscc/ocelot.h
1006
void ocelot_port_teardown_dsa_8021q_cpu(struct ocelot *ocelot, int cpu);
include/soc/mscc/ocelot.h
1007
void ocelot_port_assign_dsa_8021q_cpu(struct ocelot *ocelot, int port, int cpu);
include/soc/mscc/ocelot.h
1008
void ocelot_port_unassign_dsa_8021q_cpu(struct ocelot *ocelot, int port);
include/soc/mscc/ocelot.h
1009
u32 ocelot_port_assigned_dsa_8021q_cpu_mask(struct ocelot *ocelot, int port);
include/soc/mscc/ocelot.h
1017
void ocelot_get_strings(struct ocelot *ocelot, int port, u32 sset, u8 *data);
include/soc/mscc/ocelot.h
1018
void ocelot_get_ethtool_stats(struct ocelot *ocelot, int port, u64 *data);
include/soc/mscc/ocelot.h
1019
int ocelot_get_sset_count(struct ocelot *ocelot, int port, int sset);
include/soc/mscc/ocelot.h
1020
void ocelot_port_get_stats64(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1022
void ocelot_port_get_pause_stats(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1024
void ocelot_port_get_mm_stats(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1026
void ocelot_port_get_rmon_stats(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1029
void ocelot_port_get_eth_ctrl_stats(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1031
void ocelot_port_get_eth_mac_stats(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1033
void ocelot_port_get_eth_phy_stats(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1035
void ocelot_port_get_ts_stats(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1037
int ocelot_get_ts_info(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1039
void ocelot_set_ageing_time(struct ocelot *ocelot, unsigned int msecs);
include/soc/mscc/ocelot.h
1040
int ocelot_port_vlan_filtering(struct ocelot *ocelot, int port, bool enabled,
include/soc/mscc/ocelot.h
1042
void ocelot_bridge_stp_state_set(struct ocelot *ocelot, int port, u8 state);
include/soc/mscc/ocelot.h
1043
u32 ocelot_get_bridge_fwd_mask(struct ocelot *ocelot, int src_port);
include/soc/mscc/ocelot.h
1044
int ocelot_port_pre_bridge_flags(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1046
void ocelot_port_bridge_flags(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1048
int ocelot_port_get_default_prio(struct ocelot *ocelot, int port);
include/soc/mscc/ocelot.h
1049
int ocelot_port_set_default_prio(struct ocelot *ocelot, int port, u8 prio);
include/soc/mscc/ocelot.h
1050
int ocelot_port_get_dscp_prio(struct ocelot *ocelot, int port, u8 dscp);
include/soc/mscc/ocelot.h
1051
int ocelot_port_add_dscp_prio(struct ocelot *ocelot, int port, u8 dscp, u8 prio);
include/soc/mscc/ocelot.h
1052
int ocelot_port_del_dscp_prio(struct ocelot *ocelot, int port, u8 dscp, u8 prio);
include/soc/mscc/ocelot.h
1053
int ocelot_port_bridge_join(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1056
void ocelot_port_bridge_leave(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1058
int ocelot_mact_flush(struct ocelot *ocelot, int port);
include/soc/mscc/ocelot.h
1059
int ocelot_fdb_dump(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1061
int ocelot_fdb_add(struct ocelot *ocelot, int port, const unsigned char *addr,
include/soc/mscc/ocelot.h
1063
int ocelot_fdb_del(struct ocelot *ocelot, int port, const unsigned char *addr,
include/soc/mscc/ocelot.h
1065
int ocelot_lag_fdb_add(struct ocelot *ocelot, struct net_device *bond,
include/soc/mscc/ocelot.h
1068
int ocelot_lag_fdb_del(struct ocelot *ocelot, struct net_device *bond,
include/soc/mscc/ocelot.h
1071
int ocelot_vlan_prepare(struct ocelot *ocelot, int port, u16 vid, bool pvid,
include/soc/mscc/ocelot.h
1073
int ocelot_vlan_add(struct ocelot *ocelot, int port, u16 vid, bool pvid,
include/soc/mscc/ocelot.h
1075
int ocelot_vlan_del(struct ocelot *ocelot, int port, u16 vid);
include/soc/mscc/ocelot.h
1076
void ocelot_hwstamp_get(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1078
int ocelot_hwstamp_set(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1081
int ocelot_port_txtstamp_request(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1084
void ocelot_get_txtstamp(struct ocelot *ocelot);
include/soc/mscc/ocelot.h
1085
void ocelot_port_set_maxlen(struct ocelot *ocelot, int port, size_t sdu);
include/soc/mscc/ocelot.h
1086
int ocelot_get_max_mtu(struct ocelot *ocelot, int port);
include/soc/mscc/ocelot.h
1087
int ocelot_port_policer_add(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1089
int ocelot_port_policer_del(struct ocelot *ocelot, int port);
include/soc/mscc/ocelot.h
1090
int ocelot_port_mirror_add(struct ocelot *ocelot, int from, int to,
include/soc/mscc/ocelot.h
1092
void ocelot_port_mirror_del(struct ocelot *ocelot, int from, bool ingress);
include/soc/mscc/ocelot.h
1093
int ocelot_cls_flower_replace(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1095
int ocelot_cls_flower_destroy(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1097
int ocelot_cls_flower_stats(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1099
int ocelot_port_mdb_add(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1102
int ocelot_port_mdb_del(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1105
int ocelot_port_lag_join(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1109
void ocelot_port_lag_leave(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1111
void ocelot_port_lag_change(struct ocelot *ocelot, int port, bool lag_tx_active);
include/soc/mscc/ocelot.h
1112
int ocelot_bond_get_id(struct ocelot *ocelot, struct net_device *bond);
include/soc/mscc/ocelot.h
1114
int ocelot_devlink_sb_register(struct ocelot *ocelot);
include/soc/mscc/ocelot.h
1115
void ocelot_devlink_sb_unregister(struct ocelot *ocelot);
include/soc/mscc/ocelot.h
1116
int ocelot_sb_pool_get(struct ocelot *ocelot, unsigned int sb_index,
include/soc/mscc/ocelot.h
1119
int ocelot_sb_pool_set(struct ocelot *ocelot, unsigned int sb_index,
include/soc/mscc/ocelot.h
1123
int ocelot_sb_port_pool_get(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1126
int ocelot_sb_port_pool_set(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1129
int ocelot_sb_tc_pool_bind_get(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1133
int ocelot_sb_tc_pool_bind_set(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1138
int ocelot_sb_occ_snapshot(struct ocelot *ocelot, unsigned int sb_index);
include/soc/mscc/ocelot.h
1139
int ocelot_sb_occ_max_clear(struct ocelot *ocelot, unsigned int sb_index);
include/soc/mscc/ocelot.h
1140
int ocelot_sb_occ_port_pool_get(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1143
int ocelot_sb_occ_tc_port_bind_get(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1148
int ocelot_port_configure_serdes(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1151
void ocelot_phylink_mac_config(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1154
void ocelot_phylink_mac_link_down(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1158
void ocelot_phylink_mac_link_up(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1166
int ocelot_mact_lookup(struct ocelot *ocelot, int *dst_idx,
include/soc/mscc/ocelot.h
1169
int ocelot_mact_learn_streamdata(struct ocelot *ocelot, int dst_idx,
include/soc/mscc/ocelot.h
1175
int ocelot_migrate_mdbs(struct ocelot *ocelot, unsigned long from_mask,
include/soc/mscc/ocelot.h
1178
int ocelot_vcap_policer_add(struct ocelot *ocelot, u32 pol_ix,
include/soc/mscc/ocelot.h
1180
int ocelot_vcap_policer_del(struct ocelot *ocelot, u32 pol_ix);
include/soc/mscc/ocelot.h
1182
void ocelot_mm_irq(struct ocelot *ocelot);
include/soc/mscc/ocelot.h
1183
int ocelot_port_set_mm(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1186
int ocelot_port_get_mm(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1188
int ocelot_port_mqprio(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1192
int ocelot_mrp_add(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1194
int ocelot_mrp_del(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1196
int ocelot_mrp_add_ring_role(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1198
int ocelot_mrp_del_ring_role(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1201
static inline int ocelot_mrp_add(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1207
static inline int ocelot_mrp_del(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1214
ocelot_mrp_add_ring_role(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1221
ocelot_mrp_del_ring_role(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
1228
void ocelot_pll5_init(struct ocelot *ocelot);
include/soc/mscc/ocelot.h
648
struct ocelot;
include/soc/mscc/ocelot.h
652
struct net_device *(*port_to_netdev)(struct ocelot *ocelot, int port);
include/soc/mscc/ocelot.h
654
int (*reset)(struct ocelot *ocelot);
include/soc/mscc/ocelot.h
658
void (*psfp_init)(struct ocelot *ocelot);
include/soc/mscc/ocelot.h
659
int (*psfp_filter_add)(struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
661
int (*psfp_filter_del)(struct ocelot *ocelot, struct flow_cls_offload *f);
include/soc/mscc/ocelot.h
662
int (*psfp_stats_get)(struct ocelot *ocelot, struct flow_cls_offload *f,
include/soc/mscc/ocelot.h
664
void (*cut_through_fwd)(struct ocelot *ocelot);
include/soc/mscc/ocelot.h
665
void (*tas_clock_adjust)(struct ocelot *ocelot);
include/soc/mscc/ocelot.h
666
void (*tas_guard_bands_update)(struct ocelot *ocelot, int port);
include/soc/mscc/ocelot.h
667
void (*update_stats)(struct ocelot *ocelot);
include/soc/mscc/ocelot.h
73
#define for_each_unicast_dest_pgid(ocelot, pgid) \
include/soc/mscc/ocelot.h
75
(pgid) < (ocelot)->num_phys_ports; \
include/soc/mscc/ocelot.h
773
struct ocelot *ocelot;
include/soc/mscc/ocelot.h
78
#define for_each_nonreserved_multicast_dest_pgid(ocelot, pgid) \
include/soc/mscc/ocelot.h
79
for ((pgid) = (ocelot)->num_phys_ports + 1; \
include/soc/mscc/ocelot.h
83
#define for_each_aggr_pgid(ocelot, pgid) \
include/soc/mscc/ocelot.h
906
#define ocelot_bulk_read(ocelot, reg, buf, count) \
include/soc/mscc/ocelot.h
907
__ocelot_bulk_read_ix(ocelot, reg, 0, buf, count)
include/soc/mscc/ocelot.h
909
#define ocelot_read_ix(ocelot, reg, gi, ri) \
include/soc/mscc/ocelot.h
910
__ocelot_read_ix(ocelot, reg, reg##_GSZ * (gi) + reg##_RSZ * (ri))
include/soc/mscc/ocelot.h
911
#define ocelot_read_gix(ocelot, reg, gi) \
include/soc/mscc/ocelot.h
912
__ocelot_read_ix(ocelot, reg, reg##_GSZ * (gi))
include/soc/mscc/ocelot.h
913
#define ocelot_read_rix(ocelot, reg, ri) \
include/soc/mscc/ocelot.h
914
__ocelot_read_ix(ocelot, reg, reg##_RSZ * (ri))
include/soc/mscc/ocelot.h
915
#define ocelot_read(ocelot, reg) \
include/soc/mscc/ocelot.h
916
__ocelot_read_ix(ocelot, reg, 0)
include/soc/mscc/ocelot.h
918
#define ocelot_write_ix(ocelot, val, reg, gi, ri) \
include/soc/mscc/ocelot.h
919
__ocelot_write_ix(ocelot, val, reg, reg##_GSZ * (gi) + reg##_RSZ * (ri))
include/soc/mscc/ocelot.h
920
#define ocelot_write_gix(ocelot, val, reg, gi) \
include/soc/mscc/ocelot.h
921
__ocelot_write_ix(ocelot, val, reg, reg##_GSZ * (gi))
include/soc/mscc/ocelot.h
922
#define ocelot_write_rix(ocelot, val, reg, ri) \
include/soc/mscc/ocelot.h
923
__ocelot_write_ix(ocelot, val, reg, reg##_RSZ * (ri))
include/soc/mscc/ocelot.h
924
#define ocelot_write(ocelot, val, reg) __ocelot_write_ix(ocelot, val, reg, 0)
include/soc/mscc/ocelot.h
926
#define ocelot_rmw_ix(ocelot, val, m, reg, gi, ri) \
include/soc/mscc/ocelot.h
927
__ocelot_rmw_ix(ocelot, val, m, reg, reg##_GSZ * (gi) + reg##_RSZ * (ri))
include/soc/mscc/ocelot.h
928
#define ocelot_rmw_gix(ocelot, val, m, reg, gi) \
include/soc/mscc/ocelot.h
929
__ocelot_rmw_ix(ocelot, val, m, reg, reg##_GSZ * (gi))
include/soc/mscc/ocelot.h
930
#define ocelot_rmw_rix(ocelot, val, m, reg, ri) \
include/soc/mscc/ocelot.h
931
__ocelot_rmw_ix(ocelot, val, m, reg, reg##_RSZ * (ri))
include/soc/mscc/ocelot.h
932
#define ocelot_rmw(ocelot, val, m, reg) __ocelot_rmw_ix(ocelot, val, m, reg, 0)
include/soc/mscc/ocelot.h
934
#define ocelot_field_write(ocelot, reg, val) \
include/soc/mscc/ocelot.h
935
regmap_field_write((ocelot)->regfields[(reg)], (val))
include/soc/mscc/ocelot.h
936
#define ocelot_field_read(ocelot, reg, val) \
include/soc/mscc/ocelot.h
937
regmap_field_read((ocelot)->regfields[(reg)], (val))
include/soc/mscc/ocelot.h
938
#define ocelot_fields_write(ocelot, id, reg, val) \
include/soc/mscc/ocelot.h
939
regmap_fields_write((ocelot)->regfields[(reg)], (id), (val))
include/soc/mscc/ocelot.h
940
#define ocelot_fields_read(ocelot, id, reg, val) \
include/soc/mscc/ocelot.h
941
regmap_fields_read((ocelot)->regfields[(reg)], (id), (val))
include/soc/mscc/ocelot.h
943
#define ocelot_target_read_ix(ocelot, target, reg, gi, ri) \
include/soc/mscc/ocelot.h
944
__ocelot_target_read_ix(ocelot, target, reg, reg##_GSZ * (gi) + reg##_RSZ * (ri))
include/soc/mscc/ocelot.h
945
#define ocelot_target_read_gix(ocelot, target, reg, gi) \
include/soc/mscc/ocelot.h
946
__ocelot_target_read_ix(ocelot, target, reg, reg##_GSZ * (gi))
include/soc/mscc/ocelot.h
947
#define ocelot_target_read_rix(ocelot, target, reg, ri) \
include/soc/mscc/ocelot.h
948
__ocelot_target_read_ix(ocelot, target, reg, reg##_RSZ * (ri))
include/soc/mscc/ocelot.h
949
#define ocelot_target_read(ocelot, target, reg) \
include/soc/mscc/ocelot.h
950
__ocelot_target_read_ix(ocelot, target, reg, 0)
include/soc/mscc/ocelot.h
952
#define ocelot_target_write_ix(ocelot, target, val, reg, gi, ri) \
include/soc/mscc/ocelot.h
953
__ocelot_target_write_ix(ocelot, target, val, reg, reg##_GSZ * (gi) + reg##_RSZ * (ri))
include/soc/mscc/ocelot.h
954
#define ocelot_target_write_gix(ocelot, target, val, reg, gi) \
include/soc/mscc/ocelot.h
955
__ocelot_target_write_ix(ocelot, target, val, reg, reg##_GSZ * (gi))
include/soc/mscc/ocelot.h
956
#define ocelot_target_write_rix(ocelot, target, val, reg, ri) \
include/soc/mscc/ocelot.h
957
__ocelot_target_write_ix(ocelot, target, val, reg, reg##_RSZ * (ri))
include/soc/mscc/ocelot.h
958
#define ocelot_target_write(ocelot, target, val, reg) \
include/soc/mscc/ocelot.h
959
__ocelot_target_write_ix(ocelot, target, val, reg, 0)
include/soc/mscc/ocelot.h
966
int __ocelot_bulk_read_ix(struct ocelot *ocelot, enum ocelot_reg reg,
include/soc/mscc/ocelot.h
968
u32 __ocelot_read_ix(struct ocelot *ocelot, enum ocelot_reg reg, u32 offset);
include/soc/mscc/ocelot.h
969
void __ocelot_write_ix(struct ocelot *ocelot, u32 val, enum ocelot_reg reg,
include/soc/mscc/ocelot.h
971
void __ocelot_rmw_ix(struct ocelot *ocelot, u32 val, u32 mask,
include/soc/mscc/ocelot.h
973
u32 __ocelot_target_read_ix(struct ocelot *ocelot, enum ocelot_target target,
include/soc/mscc/ocelot.h
975
void __ocelot_target_write_ix(struct ocelot *ocelot, enum ocelot_target target,
include/soc/mscc/ocelot.h
979
void ocelot_lock_inj_grp(struct ocelot *ocelot, int grp);
include/soc/mscc/ocelot.h
980
void ocelot_unlock_inj_grp(struct ocelot *ocelot, int grp);
include/soc/mscc/ocelot.h
981
void ocelot_lock_xtr_grp(struct ocelot *ocelot, int grp);
include/soc/mscc/ocelot.h
982
void ocelot_unlock_xtr_grp(struct ocelot *ocelot, int grp);
include/soc/mscc/ocelot.h
983
void ocelot_lock_xtr_grp_bh(struct ocelot *ocelot, int grp);
include/soc/mscc/ocelot.h
984
void ocelot_unlock_xtr_grp_bh(struct ocelot *ocelot, int grp);
include/soc/mscc/ocelot.h
985
bool ocelot_can_inject(struct ocelot *ocelot, int grp);
include/soc/mscc/ocelot.h
986
void ocelot_port_inject_frame(struct ocelot *ocelot, int port, int grp,
include/soc/mscc/ocelot.h
988
void ocelot_ifh_set_basic(void *ifh, struct ocelot *ocelot, int port,
include/soc/mscc/ocelot.h
990
int ocelot_xtr_poll_frame(struct ocelot *ocelot, int grp, struct sk_buff **skb);
include/soc/mscc/ocelot.h
991
void ocelot_drain_cpu_queue(struct ocelot *ocelot, int grp);
include/soc/mscc/ocelot.h
992
void ocelot_ptp_rx_timestamp(struct ocelot *ocelot, struct sk_buff *skb,
include/soc/mscc/ocelot.h
996
int ocelot_regfields_init(struct ocelot *ocelot,
include/soc/mscc/ocelot.h
998
struct regmap *ocelot_regmap_init(struct ocelot *ocelot, struct resource *res);
include/soc/mscc/ocelot.h
999
int ocelot_reset(struct ocelot *ocelot);
include/soc/mscc/ocelot_ptp.h
57
int ocelot_init_timestamp(struct ocelot *ocelot,
include/soc/mscc/ocelot_ptp.h
59
int ocelot_deinit_timestamp(struct ocelot *ocelot);
include/soc/mscc/ocelot_vcap.h
14
#define OCELOT_VCAP_ES0_TAG_8021Q_RXVLAN(ocelot, port, upstream) ((upstream) << 16 | (port))
include/soc/mscc/ocelot_vcap.h
15
#define OCELOT_VCAP_IS1_TAG_8021Q_TXVLAN(ocelot, port) (port)
include/soc/mscc/ocelot_vcap.h
16
#define OCELOT_VCAP_IS1_VLAN_RECLASSIFY(ocelot, port) ((ocelot)->num_phys_ports + (port))
include/soc/mscc/ocelot_vcap.h
17
#define OCELOT_VCAP_IS2_TAG_8021Q_TXVLAN(ocelot, port) (port)
include/soc/mscc/ocelot_vcap.h
18
#define OCELOT_VCAP_IS2_MRP_REDIRECT(ocelot, port) ((ocelot)->num_phys_ports + (port))
include/soc/mscc/ocelot_vcap.h
19
#define OCELOT_VCAP_IS2_MRP_TRAP(ocelot) ((ocelot)->num_phys_ports * 2)
include/soc/mscc/ocelot_vcap.h
20
#define OCELOT_VCAP_IS2_L2_PTP_TRAP(ocelot) ((ocelot)->num_phys_ports * 2 + 1)
include/soc/mscc/ocelot_vcap.h
21
#define OCELOT_VCAP_IS2_IPV4_GEN_PTP_TRAP(ocelot) ((ocelot)->num_phys_ports * 2 + 2)
include/soc/mscc/ocelot_vcap.h
22
#define OCELOT_VCAP_IS2_IPV4_EV_PTP_TRAP(ocelot) ((ocelot)->num_phys_ports * 2 + 3)
include/soc/mscc/ocelot_vcap.h
23
#define OCELOT_VCAP_IS2_IPV6_GEN_PTP_TRAP(ocelot) ((ocelot)->num_phys_ports * 2 + 4)
include/soc/mscc/ocelot_vcap.h
24
#define OCELOT_VCAP_IS2_IPV6_EV_PTP_TRAP(ocelot) ((ocelot)->num_phys_ports * 2 + 5)
include/soc/mscc/ocelot_vcap.h
722
int ocelot_vcap_filter_add(struct ocelot *ocelot,
include/soc/mscc/ocelot_vcap.h
725
int ocelot_vcap_filter_del(struct ocelot *ocelot,
include/soc/mscc/ocelot_vcap.h
727
int ocelot_vcap_filter_replace(struct ocelot *ocelot,