Lines Matching defs:br_offloads

18 	struct mlx5_esw_bridge_offloads *br_offloads;
81 if (!priv->mdev->priv.eswitch->br_offloads)
134 struct mlx5_esw_bridge_offloads *br_offloads = container_of(nb,
140 struct mlx5_eswitch *esw = br_offloads->esw;
157 br_offloads, extack) :
159 br_offloads, extack);
163 br_offloads, extack) :
165 br_offloads, extack);
221 struct mlx5_esw_bridge_offloads *br_offloads)
230 if (!mlx5_esw_bridge_rep_vport_num_vhca_id_get(dev, br_offloads->esw, &vport_num,
240 vlan->flags, br_offloads, extack);
245 mdb->vid, br_offloads, extack);
256 struct mlx5_esw_bridge_offloads *br_offloads)
263 if (!mlx5_esw_bridge_rep_vport_num_vhca_id_get(dev, br_offloads->esw, &vport_num,
272 mlx5_esw_bridge_port_vlan_del(vport_num, esw_owner_vhca_id, vlan->vid, br_offloads);
277 br_offloads);
288 struct mlx5_esw_bridge_offloads *br_offloads)
295 if (!mlx5_esw_bridge_lower_rep_vport_num_vhca_id_get(dev, br_offloads->esw, &vport_num,
312 attr->u.ageing_time, br_offloads);
316 attr->u.vlan_filtering, br_offloads);
322 br_offloads);
326 !attr->u.mc_disabled, br_offloads);
338 struct mlx5_esw_bridge_offloads *br_offloads = container_of(nb,
346 err = mlx5_esw_bridge_port_obj_add(dev, ptr, br_offloads);
349 err = mlx5_esw_bridge_port_obj_del(dev, ptr, br_offloads);
352 err = mlx5_esw_bridge_port_obj_attr_set(dev, ptr, br_offloads);
375 struct mlx5_esw_bridge_offloads *br_offloads =
376 fdb_work->br_offloads;
382 if (!mlx5_esw_bridge_rep_vport_num_vhca_id_get(dev, br_offloads->esw, &vport_num,
387 mlx5_esw_bridge_fdb_create(dev, vport_num, esw_owner_vhca_id, br_offloads,
390 mlx5_esw_bridge_fdb_remove(dev, vport_num, esw_owner_vhca_id, br_offloads,
401 struct mlx5_esw_bridge_offloads *br_offloads)
423 work->br_offloads = br_offloads;
431 struct mlx5_esw_bridge_offloads *br_offloads = container_of(nb,
437 struct mlx5_eswitch *esw = br_offloads->esw;
443 int err = mlx5_esw_bridge_port_obj_attr_set(dev, ptr, br_offloads);
463 mlx5_esw_bridge_fdb_update_used(dev, vport_num, esw_owner_vhca_id, br_offloads,
479 mlx5_esw_bridge_fdb_mark_deleted(dev, vport_num, esw_owner_vhca_id, br_offloads,
491 br_offloads);
498 queue_work(br_offloads->wq, &work->work);
508 struct mlx5_esw_bridge_offloads *br_offloads = container_of(work,
513 mlx5_esw_bridge_update(br_offloads);
516 queue_delayed_work(br_offloads->wq, &br_offloads->update_work,
522 struct mlx5_esw_bridge_offloads *br_offloads;
529 br_offloads = mlx5_esw_bridge_init(esw);
531 if (IS_ERR(br_offloads)) {
532 esw_warn(mdev, "Failed to init esw bridge (err=%ld)\n", PTR_ERR(br_offloads));
536 br_offloads->wq = alloc_ordered_workqueue("mlx5_bridge_wq", 0);
537 if (!br_offloads->wq) {
542 br_offloads->nb.notifier_call = mlx5_esw_bridge_switchdev_event;
543 err = register_switchdev_notifier(&br_offloads->nb);
549 br_offloads->nb_blk.notifier_call = mlx5_esw_bridge_event_blocking;
550 err = register_switchdev_blocking_notifier(&br_offloads->nb_blk);
556 br_offloads->netdev_nb.notifier_call = mlx5_esw_bridge_switchdev_port_event;
557 err = register_netdevice_notifier_net(&init_net, &br_offloads->netdev_nb);
563 INIT_DELAYED_WORK(&br_offloads->update_work, mlx5_esw_bridge_update_work);
564 queue_delayed_work(br_offloads->wq, &br_offloads->update_work,
569 unregister_switchdev_blocking_notifier(&br_offloads->nb_blk);
571 unregister_switchdev_notifier(&br_offloads->nb);
573 destroy_workqueue(br_offloads->wq);
582 struct mlx5_esw_bridge_offloads *br_offloads;
587 br_offloads = esw->br_offloads;
588 if (!br_offloads)
591 cancel_delayed_work_sync(&br_offloads->update_work);
592 unregister_netdevice_notifier_net(&init_net, &br_offloads->netdev_nb);
593 unregister_switchdev_blocking_notifier(&br_offloads->nb_blk);
594 unregister_switchdev_notifier(&br_offloads->nb);
595 destroy_workqueue(br_offloads->wq);