switch.c (56435d9145f5b97decca66244d2049e2d5e4616d) switch.c (18596f504a3e56c4f8e132b2a437cbe23a3f4635)
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Handling of a single switch chip, part of a switch fabric
4 *
5 * Copyright (c) 2017 Savoir-faire Linux Inc.
6 * Vivien Didelot <vivien.didelot@savoirfairelinux.com>
7 */
8

--- 152 unchanged lines hidden (view full) ---

161 int port = dsa_towards_port(ds, info->sw_index, info->port);
162
163 if (!ds->ops->port_fdb_del)
164 return -EOPNOTSUPP;
165
166 return ds->ops->port_fdb_del(ds, port, info->addr, info->vid);
167}
168
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Handling of a single switch chip, part of a switch fabric
4 *
5 * Copyright (c) 2017 Savoir-faire Linux Inc.
6 * Vivien Didelot <vivien.didelot@savoirfairelinux.com>
7 */
8

--- 152 unchanged lines hidden (view full) ---

161 int port = dsa_towards_port(ds, info->sw_index, info->port);
162
163 if (!ds->ops->port_fdb_del)
164 return -EOPNOTSUPP;
165
166 return ds->ops->port_fdb_del(ds, port, info->addr, info->vid);
167}
168
169static int dsa_switch_hsr_join(struct dsa_switch *ds,
170 struct dsa_notifier_hsr_info *info)
171{
172 if (ds->index == info->sw_index && ds->ops->port_hsr_join)
173 return ds->ops->port_hsr_join(ds, info->port, info->hsr);
174
175 return -EOPNOTSUPP;
176}
177
178static int dsa_switch_hsr_leave(struct dsa_switch *ds,
179 struct dsa_notifier_hsr_info *info)
180{
181 if (ds->index == info->sw_index && ds->ops->port_hsr_leave)
182 return ds->ops->port_hsr_leave(ds, info->port, info->hsr);
183
184 return -EOPNOTSUPP;
185}
186
169static int dsa_switch_lag_change(struct dsa_switch *ds,
170 struct dsa_notifier_lag_info *info)
171{
172 if (ds->index == info->sw_index && ds->ops->port_lag_change)
173 return ds->ops->port_lag_change(ds, info->port);
174
175 if (ds->index != info->sw_index && ds->ops->crosschip_lag_change)
176 return ds->ops->crosschip_lag_change(ds, info->sw_index,

--- 189 unchanged lines hidden (view full) ---

366 err = dsa_switch_bridge_leave(ds, info);
367 break;
368 case DSA_NOTIFIER_FDB_ADD:
369 err = dsa_switch_fdb_add(ds, info);
370 break;
371 case DSA_NOTIFIER_FDB_DEL:
372 err = dsa_switch_fdb_del(ds, info);
373 break;
187static int dsa_switch_lag_change(struct dsa_switch *ds,
188 struct dsa_notifier_lag_info *info)
189{
190 if (ds->index == info->sw_index && ds->ops->port_lag_change)
191 return ds->ops->port_lag_change(ds, info->port);
192
193 if (ds->index != info->sw_index && ds->ops->crosschip_lag_change)
194 return ds->ops->crosschip_lag_change(ds, info->sw_index,

--- 189 unchanged lines hidden (view full) ---

384 err = dsa_switch_bridge_leave(ds, info);
385 break;
386 case DSA_NOTIFIER_FDB_ADD:
387 err = dsa_switch_fdb_add(ds, info);
388 break;
389 case DSA_NOTIFIER_FDB_DEL:
390 err = dsa_switch_fdb_del(ds, info);
391 break;
392 case DSA_NOTIFIER_HSR_JOIN:
393 err = dsa_switch_hsr_join(ds, info);
394 break;
395 case DSA_NOTIFIER_HSR_LEAVE:
396 err = dsa_switch_hsr_leave(ds, info);
397 break;
374 case DSA_NOTIFIER_LAG_CHANGE:
375 err = dsa_switch_lag_change(ds, info);
376 break;
377 case DSA_NOTIFIER_LAG_JOIN:
378 err = dsa_switch_lag_join(ds, info);
379 break;
380 case DSA_NOTIFIER_LAG_LEAVE:
381 err = dsa_switch_lag_leave(ds, info);

--- 46 unchanged lines hidden ---
398 case DSA_NOTIFIER_LAG_CHANGE:
399 err = dsa_switch_lag_change(ds, info);
400 break;
401 case DSA_NOTIFIER_LAG_JOIN:
402 err = dsa_switch_lag_join(ds, info);
403 break;
404 case DSA_NOTIFIER_LAG_LEAVE:
405 err = dsa_switch_lag_leave(ds, info);

--- 46 unchanged lines hidden ---