Lines Matching refs:bridge

52 	struct prestera_bridge *bridge;  member
82 struct prestera_bridge *bridge; member
100 struct prestera_bridge *bridge; in prestera_bridge_find() local
102 list_for_each_entry(bridge, &sw->swdev->bridge_list, head) in prestera_bridge_find()
103 if (bridge->dev == br_dev) in prestera_bridge_find()
104 return bridge; in prestera_bridge_find()
110 __prestera_bridge_port_find(const struct prestera_bridge *bridge, in __prestera_bridge_port_find() argument
115 list_for_each_entry(br_port, &bridge->port_list, head) in __prestera_bridge_port_find()
127 struct prestera_bridge *bridge; in prestera_bridge_port_find() local
132 bridge = prestera_bridge_find(sw, br_dev); in prestera_bridge_port_find()
133 if (!bridge) in prestera_bridge_port_find()
136 return __prestera_bridge_port_find(bridge, brport_dev); in prestera_bridge_port_find()
214 static int prestera_bridge_vlan_port_count(struct prestera_bridge *bridge, in prestera_bridge_vlan_port_count() argument
221 list_for_each_entry(br_port, &bridge->port_list, head) { in prestera_bridge_vlan_port_count()
343 list_for_each_entry(br_port, &br_mdb->bridge->port_list, head) in prestera_br_mdb_entry_put()
372 struct prestera_bridge *br_dev = br_port->bridge; in prestera_mdb_flush_bridge_port()
399 port_count = prestera_bridge_vlan_port_count(br_port->bridge, vid); in prestera_port_vlan_bridge_leave()
437 struct prestera_bridge *bridge; in prestera_bridge_create() local
446 bridge = kzalloc(sizeof(*bridge), GFP_KERNEL); in prestera_bridge_create()
447 if (!bridge) in prestera_bridge_create()
455 kfree(bridge); in prestera_bridge_create()
459 bridge->bridge_id = bridge_id; in prestera_bridge_create()
462 bridge->vlan_enabled = vlan_enabled; in prestera_bridge_create()
463 bridge->swdev = swdev; in prestera_bridge_create()
464 bridge->dev = dev; in prestera_bridge_create()
465 bridge->multicast_enabled = br_multicast_enabled(dev); in prestera_bridge_create()
467 INIT_LIST_HEAD(&bridge->port_list); in prestera_bridge_create()
468 INIT_LIST_HEAD(&bridge->br_mdb_entry_list); in prestera_bridge_create()
470 list_add(&bridge->head, &swdev->bridge_list); in prestera_bridge_create()
472 return bridge; in prestera_bridge_create()
475 static void prestera_bridge_destroy(struct prestera_bridge *bridge) in prestera_bridge_destroy() argument
477 struct prestera_switchdev *swdev = bridge->swdev; in prestera_bridge_destroy()
479 list_del(&bridge->head); in prestera_bridge_destroy()
481 if (bridge->vlan_enabled) in prestera_bridge_destroy()
484 prestera_hw_bridge_delete(swdev->sw, bridge->bridge_id); in prestera_bridge_destroy()
486 WARN_ON(!list_empty(&bridge->br_mdb_entry_list)); in prestera_bridge_destroy()
487 WARN_ON(!list_empty(&bridge->port_list)); in prestera_bridge_destroy()
488 kfree(bridge); in prestera_bridge_destroy()
491 static void prestera_bridge_put(struct prestera_bridge *bridge) in prestera_bridge_put() argument
493 if (list_empty(&bridge->port_list)) in prestera_bridge_put()
494 prestera_bridge_destroy(bridge); in prestera_bridge_put()
501 struct prestera_bridge *bridge; in prestera_bridge_by_dev() local
503 list_for_each_entry(bridge, &swdev->bridge_list, head) in prestera_bridge_by_dev()
504 if (bridge->dev == dev) in prestera_bridge_by_dev()
505 return bridge; in prestera_bridge_by_dev()
511 __prestera_bridge_port_by_dev(struct prestera_bridge *bridge, in __prestera_bridge_port_by_dev() argument
516 list_for_each_entry(br_port, &bridge->port_list, head) { in __prestera_bridge_port_by_dev()
547 struct prestera_bridge *bridge; in prestera_bridge_port_by_dev() local
552 bridge = prestera_bridge_by_dev(swdev, br_dev); in prestera_bridge_port_by_dev()
553 if (!bridge) in prestera_bridge_port_by_dev()
556 return __prestera_bridge_port_by_dev(bridge, dev); in prestera_bridge_port_by_dev()
560 prestera_bridge_port_create(struct prestera_bridge *bridge, in prestera_bridge_port_create() argument
573 br_port->bridge = bridge; in prestera_bridge_port_create()
577 list_add(&br_port->head, &bridge->port_list); in prestera_bridge_port_create()
599 struct prestera_bridge *bridge = br_port->bridge; in prestera_bridge_port_put() local
603 prestera_bridge_put(bridge); in prestera_bridge_port_put()
608 prestera_bridge_port_add(struct prestera_bridge *bridge, struct net_device *dev) in prestera_bridge_port_add() argument
612 br_port = __prestera_bridge_port_by_dev(bridge, dev); in prestera_bridge_port_add()
618 br_port = prestera_bridge_port_create(bridge, dev); in prestera_bridge_port_add()
629 struct prestera_bridge *bridge = br_port->bridge; in prestera_bridge_1d_port_join() local
632 err = prestera_hw_bridge_port_add(port, bridge->bridge_id); in prestera_bridge_1d_port_join()
643 prestera_hw_bridge_port_delete(port, bridge->bridge_id); in prestera_bridge_1d_port_join()
654 struct prestera_bridge *bridge; in prestera_bridge_port_join() local
657 bridge = prestera_bridge_by_dev(swdev, br_dev); in prestera_bridge_port_join()
658 if (!bridge) { in prestera_bridge_port_join()
659 bridge = prestera_bridge_create(swdev, br_dev); in prestera_bridge_port_join()
660 if (IS_ERR(bridge)) in prestera_bridge_port_join()
661 return PTR_ERR(bridge); in prestera_bridge_port_join()
664 br_port = prestera_bridge_port_add(bridge, port->dev); in prestera_bridge_port_join()
666 prestera_bridge_put(bridge); in prestera_bridge_port_join()
675 if (bridge->vlan_enabled) in prestera_bridge_port_join()
704 prestera_hw_bridge_port_delete(port, br_port->bridge->bridge_id); in prestera_bridge_1d_port_leave()
742 struct prestera_bridge *bridge; in prestera_bridge_port_leave() local
744 bridge = prestera_bridge_by_dev(swdev, br_dev); in prestera_bridge_port_leave()
745 if (!bridge) in prestera_bridge_port_leave()
748 br_port = __prestera_bridge_port_by_dev(bridge, port->dev); in prestera_bridge_port_leave()
752 bridge = br_port->bridge; in prestera_bridge_port_leave()
754 if (bridge->vlan_enabled) in prestera_bridge_port_leave()
802 struct prestera_bridge *bridge; in prestera_port_attr_br_vlan_set() local
804 bridge = prestera_bridge_by_dev(sw->swdev, dev); in prestera_port_attr_br_vlan_set()
805 if (WARN_ON(!bridge)) in prestera_port_attr_br_vlan_set()
808 if (bridge->vlan_enabled == vlan_enabled) in prestera_port_attr_br_vlan_set()
811 netdev_err(bridge->dev, "VLAN filtering can't be changed for existing bridge\n"); in prestera_port_attr_br_vlan_set()
845 if (!br_port->bridge->vlan_enabled) { in prestera_port_attr_stp_state_set()
846 vid = br_port->bridge->bridge_id; in prestera_port_attr_stp_state_set()
1138 br_dev = br_port->bridge; in prestera_port_attr_mrouter_set()
1222 struct prestera_bridge *bridge; in prestera_port_fdb_set() local
1230 bridge = br_port->bridge; in prestera_port_fdb_set()
1232 if (bridge->vlan_enabled) in prestera_port_fdb_set()
1235 vid = bridge->bridge_id; in prestera_port_fdb_set()
1475 struct prestera_bridge *bridge; in prestera_port_vlans_add() local
1484 bridge = br_port->bridge; in prestera_port_vlans_add()
1485 if (!bridge->vlan_enabled) in prestera_port_vlans_add()
1510 br_mdb_entry->bridge = br_dev; in prestera_br_mdb_entry_create()
1590 br_dev = br_port->bridge; in prestera_mdb_port_addr_obj_add()
1665 if (!br_port->bridge->vlan_enabled) in prestera_port_vlans_del()
1691 br_dev = br_port->bridge; in prestera_mdb_port_addr_obj_del()
1693 if (br_port->bridge->vlan_enabled) in prestera_mdb_port_addr_obj_del()
1698 br_port->bridge->bridge_id); in prestera_mdb_port_addr_obj_del()