Lines Matching full:sparx5
2 /* Microchip Sparx5 Switch driver
32 struct sparx5 *sparx5 = port->sparx5; in sparx5_attr_stp_state_set() local
34 if (!test_bit(port->portno, sparx5->bridge_mask)) { in sparx5_attr_stp_state_set()
42 set_bit(port->portno, sparx5->bridge_fwd_mask); in sparx5_attr_stp_state_set()
45 set_bit(port->portno, sparx5->bridge_lrn_mask); in sparx5_attr_stp_state_set()
50 clear_bit(port->portno, sparx5->bridge_fwd_mask); in sparx5_attr_stp_state_set()
51 clear_bit(port->portno, sparx5->bridge_lrn_mask); in sparx5_attr_stp_state_set()
56 sparx5_update_fwd(sparx5); in sparx5_attr_stp_state_set()
65 sparx5_set_ageing(port->sparx5, ageing_time); in sparx5_port_attr_ageing_set()
86 sparx5_vlan_port_apply(port->sparx5, port); in sparx5_port_attr_set()
99 struct sparx5 *sparx5 = port->sparx5; in sparx5_port_bridge_join() local
103 if (bitmap_empty(sparx5->bridge_mask, SPX5_PORTS)) in sparx5_port_bridge_join()
105 sparx5->hw_bridge_dev = bridge; in sparx5_port_bridge_join()
107 if (sparx5->hw_bridge_dev != bridge) in sparx5_port_bridge_join()
113 set_bit(port->portno, sparx5->bridge_mask); in sparx5_port_bridge_join()
128 clear_bit(port->portno, sparx5->bridge_mask); in sparx5_port_bridge_join()
135 struct sparx5 *sparx5 = port->sparx5; in sparx5_port_bridge_leave() local
139 clear_bit(port->portno, sparx5->bridge_mask); in sparx5_port_bridge_leave()
140 if (bitmap_empty(sparx5->bridge_mask, SPX5_PORTS)) in sparx5_port_bridge_leave()
141 sparx5->hw_bridge_dev = NULL; in sparx5_port_bridge_leave()
168 sparx5_vlan_port_apply(port->sparx5, port); in sparx5_port_changeupper()
177 struct sparx5 *sparx5 = port->sparx5; in sparx5_port_add_addr() local
181 sparx5_mact_learn(sparx5, PGID_CPU, port->ndev->dev_addr, vid); in sparx5_port_add_addr()
183 sparx5_mact_forget(sparx5, port->ndev->dev_addr, vid); in sparx5_port_add_addr()
230 struct sparx5 *sparx5; in sparx5_switchdev_bridge_fdb_event_work() local
237 sparx5 = port->sparx5; in sparx5_switchdev_bridge_fdb_event_work()
245 sparx5_add_mact_entry(sparx5, port, fdb_info->addr, in sparx5_switchdev_bridge_fdb_event_work()
251 sparx5_del_mact_entry(sparx5, fdb_info->addr, fdb_info->vid); in sparx5_switchdev_bridge_fdb_event_work()
317 static void sparx5_sync_port_dev_addr(struct sparx5 *sparx5, in sparx5_sync_port_dev_addr() argument
322 !test_bit(port->portno, sparx5->bridge_mask)) in sparx5_sync_port_dev_addr()
328 sparx5_mact_learn(sparx5, PGID_CPU, in sparx5_sync_port_dev_addr()
334 if (test_bit(port->portno, sparx5->vlan_mask[vid])) in sparx5_sync_port_dev_addr()
335 sparx5_mact_learn(sparx5, PGID_CPU, in sparx5_sync_port_dev_addr()
338 sparx5_mact_forget(sparx5, in sparx5_sync_port_dev_addr()
344 struct sparx5 *sparx5, in sparx5_sync_bridge_dev_addr() argument
351 sparx5_mact_learn(sparx5, PGID_CPU, dev->dev_addr, in sparx5_sync_bridge_dev_addr()
353 sparx5_mact_learn(sparx5, PGID_BCAST, dev->broadcast, in sparx5_sync_bridge_dev_addr()
356 sparx5_mact_forget(sparx5, dev->dev_addr, vid); in sparx5_sync_bridge_dev_addr()
357 sparx5_mact_forget(sparx5, dev->broadcast, vid); in sparx5_sync_bridge_dev_addr()
362 sparx5_sync_port_dev_addr(sparx5, sparx5->ports[i], vid, add); in sparx5_sync_bridge_dev_addr()
373 struct sparx5 *sparx5 = in sparx5_handle_port_vlan_add() local
374 container_of(nb, struct sparx5, in sparx5_handle_port_vlan_add()
377 sparx5_sync_bridge_dev_addr(dev, sparx5, v->vid, true); in sparx5_handle_port_vlan_add()
420 struct sparx5 *sparx5 = in sparx5_handle_port_vlan_del() local
421 container_of(nb, struct sparx5, in sparx5_handle_port_vlan_del()
424 sparx5_sync_bridge_dev_addr(dev, sparx5, vid, false); in sparx5_handle_port_vlan_del()
436 sparx5_mact_forget(port->sparx5, port->ndev->dev_addr, vid); in sparx5_handle_port_vlan_del()
486 int sparx5_register_notifier_blocks(struct sparx5 *s5) in sparx5_register_notifier_blocks()
521 void sparx5_unregister_notifier_blocks(struct sparx5 *s5) in sparx5_unregister_notifier_blocks()