Lines Matching refs:smi
16 int rtl8366_mc_is_used(struct realtek_smi *smi, int mc_index, int *used) in rtl8366_mc_is_used() argument
22 for (i = 0; i < smi->num_ports; i++) { in rtl8366_mc_is_used()
25 ret = smi->ops->get_mc_index(smi, i, &index); in rtl8366_mc_is_used()
39 int rtl8366_set_vlan(struct realtek_smi *smi, int vid, u32 member, in rtl8366_set_vlan() argument
47 ret = smi->ops->get_vlan_4k(smi, vid, &vlan4k); in rtl8366_set_vlan()
54 ret = smi->ops->set_vlan_4k(smi, &vlan4k); in rtl8366_set_vlan()
59 for (i = 0; i < smi->num_vlan_mc; i++) { in rtl8366_set_vlan()
62 ret = smi->ops->get_vlan_mc(smi, i, &vlanmc); in rtl8366_set_vlan()
72 ret = smi->ops->set_vlan_mc(smi, i, &vlanmc); in rtl8366_set_vlan()
81 int rtl8366_get_pvid(struct realtek_smi *smi, int port, int *val) in rtl8366_get_pvid() argument
87 ret = smi->ops->get_mc_index(smi, port, &index); in rtl8366_get_pvid()
91 ret = smi->ops->get_vlan_mc(smi, index, &vlanmc); in rtl8366_get_pvid()
100 int rtl8366_set_pvid(struct realtek_smi *smi, unsigned int port, in rtl8366_set_pvid() argument
109 for (i = 0; i < smi->num_vlan_mc; i++) { in rtl8366_set_pvid()
110 ret = smi->ops->get_vlan_mc(smi, i, &vlanmc); in rtl8366_set_pvid()
115 ret = smi->ops->set_vlan_mc(smi, i, &vlanmc); in rtl8366_set_pvid()
119 ret = smi->ops->set_mc_index(smi, port, i); in rtl8366_set_pvid()
125 for (i = 0; i < smi->num_vlan_mc; i++) { in rtl8366_set_pvid()
126 ret = smi->ops->get_vlan_mc(smi, i, &vlanmc); in rtl8366_set_pvid()
132 ret = smi->ops->get_vlan_4k(smi, vid, &vlan4k); in rtl8366_set_pvid()
140 ret = smi->ops->set_vlan_mc(smi, i, &vlanmc); in rtl8366_set_pvid()
144 ret = smi->ops->set_mc_index(smi, port, i); in rtl8366_set_pvid()
150 for (i = 0; i < smi->num_vlan_mc; i++) { in rtl8366_set_pvid()
153 ret = rtl8366_mc_is_used(smi, i, &used); in rtl8366_set_pvid()
159 ret = smi->ops->get_vlan_4k(smi, vid, &vlan4k); in rtl8366_set_pvid()
167 ret = smi->ops->set_vlan_mc(smi, i, &vlanmc); in rtl8366_set_pvid()
171 ret = smi->ops->set_mc_index(smi, port, i); in rtl8366_set_pvid()
176 dev_err(smi->dev, in rtl8366_set_pvid()
183 int rtl8366_enable_vlan4k(struct realtek_smi *smi, bool enable) in rtl8366_enable_vlan4k() argument
193 ret = smi->ops->enable_vlan(smi, true); in rtl8366_enable_vlan4k()
197 smi->vlan_enabled = true; in rtl8366_enable_vlan4k()
200 ret = smi->ops->enable_vlan4k(smi, enable); in rtl8366_enable_vlan4k()
204 smi->vlan4k_enabled = enable; in rtl8366_enable_vlan4k()
209 int rtl8366_enable_vlan(struct realtek_smi *smi, bool enable) in rtl8366_enable_vlan() argument
213 ret = smi->ops->enable_vlan(smi, enable); in rtl8366_enable_vlan()
217 smi->vlan_enabled = enable; in rtl8366_enable_vlan()
223 smi->vlan4k_enabled = false; in rtl8366_enable_vlan()
224 ret = smi->ops->enable_vlan4k(smi, false); in rtl8366_enable_vlan()
231 int rtl8366_reset_vlan(struct realtek_smi *smi) in rtl8366_reset_vlan() argument
237 rtl8366_enable_vlan(smi, false); in rtl8366_reset_vlan()
238 rtl8366_enable_vlan4k(smi, false); in rtl8366_reset_vlan()
246 for (i = 0; i < smi->num_vlan_mc; i++) { in rtl8366_reset_vlan()
247 ret = smi->ops->set_vlan_mc(smi, i, &vlanmc); in rtl8366_reset_vlan()
256 int rtl8366_init_vlan(struct realtek_smi *smi) in rtl8366_init_vlan() argument
261 ret = rtl8366_reset_vlan(smi); in rtl8366_init_vlan()
268 for (port = 0; port < smi->num_ports; port++) { in rtl8366_init_vlan()
271 if (port == smi->cpu_port) in rtl8366_init_vlan()
275 mask = GENMASK(smi->num_ports - 1, 0); in rtl8366_init_vlan()
280 mask = BIT(port) | BIT(smi->cpu_port); in rtl8366_init_vlan()
287 dev_info(smi->dev, "VLAN%d port mask for port %d, %08x\n", in rtl8366_init_vlan()
289 ret = rtl8366_set_vlan(smi, (port + 1), mask, mask, 0); in rtl8366_init_vlan()
293 dev_info(smi->dev, "VLAN%d port %d, PVID set to %d\n", in rtl8366_init_vlan()
295 ret = rtl8366_set_pvid(smi, port, (port + 1)); in rtl8366_init_vlan()
300 return rtl8366_enable_vlan(smi, true); in rtl8366_init_vlan()
306 struct realtek_smi *smi = ds->priv; in rtl8366_vlan_filtering() local
310 if (!smi->ops->is_vlan_valid(smi, port)) in rtl8366_vlan_filtering()
313 dev_info(smi->dev, "%s filtering on port %d\n", in rtl8366_vlan_filtering()
321 ret = smi->ops->get_vlan_4k(smi, port, &vlan4k); in rtl8366_vlan_filtering()
326 ret = rtl8366_set_vlan(smi, port, in rtl8366_vlan_filtering()
340 struct realtek_smi *smi = ds->priv; in rtl8366_vlan_prepare() local
343 if (!smi->ops->is_vlan_valid(smi, port)) in rtl8366_vlan_prepare()
346 dev_info(smi->dev, "prepare VLANs %04x..%04x\n", in rtl8366_vlan_prepare()
353 ret = rtl8366_enable_vlan4k(smi, true); in rtl8366_vlan_prepare()
366 struct realtek_smi *smi = ds->priv; in rtl8366_vlan_add() local
372 if (!smi->ops->is_vlan_valid(smi, port)) in rtl8366_vlan_add()
375 dev_info(smi->dev, "add VLAN on port %d, %s, %s\n", in rtl8366_vlan_add()
381 dev_err(smi->dev, "port is DSA or CPU port\n"); in rtl8366_vlan_add()
386 dev_info(smi->dev, "add VLAN %04x\n", vid); in rtl8366_vlan_add()
395 ret = rtl8366_get_pvid(smi, port, &pvid_val); in rtl8366_vlan_add()
397 dev_err(smi->dev, "could not lookup PVID for port %d\n", in rtl8366_vlan_add()
402 ret = rtl8366_set_pvid(smi, port, vid); in rtl8366_vlan_add()
408 ret = rtl8366_set_vlan(smi, port, member, untag, 0); in rtl8366_vlan_add()
410 dev_err(smi->dev, in rtl8366_vlan_add()
419 struct realtek_smi *smi = ds->priv; in rtl8366_vlan_del() local
423 dev_info(smi->dev, "del VLAN on port %d\n", port); in rtl8366_vlan_del()
428 dev_info(smi->dev, "del VLAN %04x\n", vid); in rtl8366_vlan_del()
430 for (i = 0; i < smi->num_vlan_mc; i++) { in rtl8366_vlan_del()
433 ret = smi->ops->get_vlan_mc(smi, i, &vlanmc); in rtl8366_vlan_del()
445 ret = smi->ops->set_vlan_mc(smi, i, &vlanmc); in rtl8366_vlan_del()
447 dev_err(smi->dev, in rtl8366_vlan_del()
464 struct realtek_smi *smi = ds->priv; in rtl8366_get_strings() local
468 if (port >= smi->num_ports) in rtl8366_get_strings()
471 for (i = 0; i < smi->num_mib_counters; i++) { in rtl8366_get_strings()
472 mib = &smi->mib_counters[i]; in rtl8366_get_strings()
481 struct realtek_smi *smi = ds->priv; in rtl8366_get_sset_count() local
486 if (port >= smi->num_ports) in rtl8366_get_sset_count()
489 return smi->num_mib_counters; in rtl8366_get_sset_count()
495 struct realtek_smi *smi = ds->priv; in rtl8366_get_ethtool_stats() local
499 if (port >= smi->num_ports) in rtl8366_get_ethtool_stats()
502 for (i = 0; i < smi->num_mib_counters; i++) { in rtl8366_get_ethtool_stats()
506 mib = &smi->mib_counters[i]; in rtl8366_get_ethtool_stats()
507 ret = smi->ops->get_mib_counter(smi, port, mib, &mibvalue); in rtl8366_get_ethtool_stats()
509 dev_err(smi->dev, "error reading MIB counter %s\n", in rtl8366_get_ethtool_stats()