Lines Matching refs:ds

23 static unsigned int dsa_switch_fastest_ageing_time(struct dsa_switch *ds,
28 dsa_switch_for_each_port(dp, ds)
35 static int dsa_switch_ageing_time(struct dsa_switch *ds,
40 if (ds->ageing_time_min && ageing_time < ds->ageing_time_min)
43 if (ds->ageing_time_max && ageing_time > ds->ageing_time_max)
47 ageing_time = dsa_switch_fastest_ageing_time(ds, ageing_time);
49 if (ds->ops->set_ageing_time)
50 return ds->ops->set_ageing_time(ds, ageing_time);
61 static int dsa_switch_mtu(struct dsa_switch *ds,
67 if (!ds->ops->port_change_mtu)
70 dsa_switch_for_each_port(dp, ds) {
72 ret = ds->ops->port_change_mtu(ds, dp->index,
82 static int dsa_switch_bridge_join(struct dsa_switch *ds,
87 if (info->dp->ds == ds) {
88 if (!ds->ops->port_bridge_join)
91 err = ds->ops->port_bridge_join(ds, info->dp->index,
99 if (info->dp->ds != ds && ds->ops->crosschip_bridge_join) {
100 err = ds->ops->crosschip_bridge_join(ds,
101 info->dp->ds->dst->index,
102 info->dp->ds->index,
113 static int dsa_switch_bridge_leave(struct dsa_switch *ds,
116 if (info->dp->ds == ds && ds->ops->port_bridge_leave)
117 ds->ops->port_bridge_leave(ds, info->dp->index, info->bridge);
119 if (info->dp->ds != ds && ds->ops->crosschip_bridge_leave)
120 ds->ops->crosschip_bridge_leave(ds, info->dp->ds->dst->index,
121 info->dp->ds->index,
137 if (dsa_switch_is_upstream_of(dp->ds, targeted_dp->ds))
138 return dp->index == dsa_towards_port(dp->ds, cpu_dp->ds->index,
162 struct dsa_switch *ds = dp->ds;
169 err = ds->ops->port_mdb_add(ds, port, mdb, db);
191 err = ds->ops->port_mdb_add(ds, port, mdb, db);
214 struct dsa_switch *ds = dp->ds;
221 err = ds->ops->port_mdb_del(ds, port, mdb, db);
242 err = ds->ops->port_mdb_del(ds, port, mdb, db);
261 struct dsa_switch *ds = dp->ds;
268 err = ds->ops->port_fdb_add(ds, port, addr, vid, db);
289 err = ds->ops->port_fdb_add(ds, port, addr, vid, db);
311 struct dsa_switch *ds = dp->ds;
318 err = ds->ops->port_fdb_del(ds, port, addr, vid, db);
338 err = ds->ops->port_fdb_del(ds, port, addr, vid, db);
354 static int dsa_switch_do_lag_fdb_add(struct dsa_switch *ds, struct dsa_lag *lag,
377 err = ds->ops->lag_fdb_add(ds, *lag, addr, vid, db);
396 static int dsa_switch_do_lag_fdb_del(struct dsa_switch *ds, struct dsa_lag *lag,
418 err = ds->ops->lag_fdb_del(ds, *lag, addr, vid, db);
434 static int dsa_switch_host_fdb_add(struct dsa_switch *ds,
440 if (!ds->ops->port_fdb_add)
443 dsa_switch_for_each_port(dp, ds) {
446 err = dsa_switch_do_lag_fdb_add(ds, dp->lag,
462 static int dsa_switch_host_fdb_del(struct dsa_switch *ds,
468 if (!ds->ops->port_fdb_del)
471 dsa_switch_for_each_port(dp, ds) {
474 err = dsa_switch_do_lag_fdb_del(ds, dp->lag,
490 static int dsa_switch_fdb_add(struct dsa_switch *ds,
493 int port = dsa_towards_port(ds, info->dp->ds->index, info->dp->index);
494 struct dsa_port *dp = dsa_to_port(ds, port);
496 if (!ds->ops->port_fdb_add)
502 static int dsa_switch_fdb_del(struct dsa_switch *ds,
505 int port = dsa_towards_port(ds, info->dp->ds->index, info->dp->index);
506 struct dsa_port *dp = dsa_to_port(ds, port);
508 if (!ds->ops->port_fdb_del)
514 static int dsa_switch_lag_fdb_add(struct dsa_switch *ds,
519 if (!ds->ops->lag_fdb_add)
523 dsa_switch_for_each_port(dp, ds)
525 return dsa_switch_do_lag_fdb_add(ds, info->lag,
532 static int dsa_switch_lag_fdb_del(struct dsa_switch *ds,
537 if (!ds->ops->lag_fdb_del)
541 dsa_switch_for_each_port(dp, ds)
543 return dsa_switch_do_lag_fdb_del(ds, info->lag,
550 static int dsa_switch_lag_change(struct dsa_switch *ds,
553 if (info->dp->ds == ds && ds->ops->port_lag_change)
554 return ds->ops->port_lag_change(ds, info->dp->index);
556 if (info->dp->ds != ds && ds->ops->crosschip_lag_change)
557 return ds->ops->crosschip_lag_change(ds, info->dp->ds->index,
563 static int dsa_switch_lag_join(struct dsa_switch *ds,
566 if (info->dp->ds == ds && ds->ops->port_lag_join)
567 return ds->ops->port_lag_join(ds, info->dp->index, info->lag,
570 if (info->dp->ds != ds && ds->ops->crosschip_lag_join)
571 return ds->ops->crosschip_lag_join(ds, info->dp->ds->index,
578 static int dsa_switch_lag_leave(struct dsa_switch *ds,
581 if (info->dp->ds == ds && ds->ops->port_lag_leave)
582 return ds->ops->port_lag_leave(ds, info->dp->index, info->lag);
584 if (info->dp->ds != ds && ds->ops->crosschip_lag_leave)
585 return ds->ops->crosschip_lag_leave(ds, info->dp->ds->index,
591 static int dsa_switch_mdb_add(struct dsa_switch *ds,
594 int port = dsa_towards_port(ds, info->dp->ds->index, info->dp->index);
595 struct dsa_port *dp = dsa_to_port(ds, port);
597 if (!ds->ops->port_mdb_add)
603 static int dsa_switch_mdb_del(struct dsa_switch *ds,
606 int port = dsa_towards_port(ds, info->dp->ds->index, info->dp->index);
607 struct dsa_port *dp = dsa_to_port(ds, port);
609 if (!ds->ops->port_mdb_del)
615 static int dsa_switch_host_mdb_add(struct dsa_switch *ds,
621 if (!ds->ops->port_mdb_add)
624 dsa_switch_for_each_port(dp, ds) {
635 static int dsa_switch_host_mdb_del(struct dsa_switch *ds,
641 if (!ds->ops->port_mdb_del)
644 dsa_switch_for_each_port(dp, ds) {
670 if (dsa_switch_is_upstream_of(dp->ds, targeted_dp->ds))
692 struct dsa_switch *ds = dp->ds;
699 err = ds->ops->port_vlan_add(ds, port, vlan, extack);
728 err = ds->ops->port_vlan_add(ds, port, vlan, extack);
748 struct dsa_switch *ds = dp->ds;
755 err = ds->ops->port_vlan_del(ds, port, vlan);
775 err = ds->ops->port_vlan_del(ds, port, vlan);
791 static int dsa_switch_vlan_add(struct dsa_switch *ds,
797 if (!ds->ops->port_vlan_add)
800 dsa_switch_for_each_port(dp, ds) {
812 static int dsa_switch_vlan_del(struct dsa_switch *ds,
818 if (!ds->ops->port_vlan_del)
821 dsa_switch_for_each_port(dp, ds) {
832 static int dsa_switch_host_vlan_add(struct dsa_switch *ds,
838 if (!ds->ops->port_vlan_add)
841 dsa_switch_for_each_port(dp, ds) {
853 static int dsa_switch_host_vlan_del(struct dsa_switch *ds,
859 if (!ds->ops->port_vlan_del)
862 dsa_switch_for_each_port(dp, ds) {
873 static int dsa_switch_change_tag_proto(struct dsa_switch *ds,
880 if (!ds->ops->change_tag_protocol)
885 err = ds->ops->change_tag_protocol(ds, tag_ops->proto);
889 dsa_switch_for_each_cpu_port(cpu_dp, ds)
896 dsa_switch_for_each_user_port(dp, ds) {
910 * Since ds->tagger_data is owned by the tagger, it isn't a hard error if the
918 dsa_switch_connect_tag_proto(struct dsa_switch *ds,
926 err = tag_ops->connect(ds);
931 if (!ds->ops->connect_tag_protocol)
935 err = ds->ops->connect_tag_protocol(ds, tag_ops->proto);
939 tag_ops->disconnect(ds);
947 dsa_switch_disconnect_tag_proto(struct dsa_switch *ds,
953 if (tag_ops->disconnect && ds->tagger_data)
954 tag_ops->disconnect(ds);
963 dsa_switch_conduit_state_change(struct dsa_switch *ds,
966 if (!ds->ops->conduit_state_change)
969 ds->ops->conduit_state_change(ds, info->conduit, info->operational);
977 struct dsa_switch *ds = container_of(nb, struct dsa_switch, nb);
982 err = dsa_switch_ageing_time(ds, info);
985 err = dsa_switch_bridge_join(ds, info);
988 err = dsa_switch_bridge_leave(ds, info);
991 err = dsa_switch_fdb_add(ds, info);
994 err = dsa_switch_fdb_del(ds, info);
997 err = dsa_switch_host_fdb_add(ds, info);
1000 err = dsa_switch_host_fdb_del(ds, info);
1003 err = dsa_switch_lag_fdb_add(ds, info);
1006 err = dsa_switch_lag_fdb_del(ds, info);
1009 err = dsa_switch_lag_change(ds, info);
1012 err = dsa_switch_lag_join(ds, info);
1015 err = dsa_switch_lag_leave(ds, info);
1018 err = dsa_switch_mdb_add(ds, info);
1021 err = dsa_switch_mdb_del(ds, info);
1024 err = dsa_switch_host_mdb_add(ds, info);
1027 err = dsa_switch_host_mdb_del(ds, info);
1030 err = dsa_switch_vlan_add(ds, info);
1033 err = dsa_switch_vlan_del(ds, info);
1036 err = dsa_switch_host_vlan_add(ds, info);
1039 err = dsa_switch_host_vlan_del(ds, info);
1042 err = dsa_switch_mtu(ds, info);
1045 err = dsa_switch_change_tag_proto(ds, info);
1048 err = dsa_switch_connect_tag_proto(ds, info);
1051 err = dsa_switch_disconnect_tag_proto(ds, info);
1054 err = dsa_switch_tag_8021q_vlan_add(ds, info);
1057 err = dsa_switch_tag_8021q_vlan_del(ds, info);
1060 err = dsa_switch_conduit_state_change(ds, info);
1068 dev_dbg(ds->dev, "breaking chain for DSA event %lu (%d)\n",
1120 int dsa_switch_register_notifier(struct dsa_switch *ds)
1122 ds->nb.notifier_call = dsa_switch_event;
1124 return raw_notifier_chain_register(&ds->dst->nh, &ds->nb);
1127 void dsa_switch_unregister_notifier(struct dsa_switch *ds)
1131 err = raw_notifier_chain_unregister(&ds->dst->nh, &ds->nb);
1133 dev_err(ds->dev, "failed to unregister notifier (%d)\n", err);