Lines Matching refs:f

239 	struct net_bridge_fdb_entry *f;  in br_fdb_find_port()  local
250 f = br_fdb_find_rcu(br, addr, vid); in br_fdb_find_port()
251 if (f && f->dst) in br_fdb_find_port()
252 dev = f->dst->dev; in br_fdb_find_port()
311 static void fdb_delete(struct net_bridge *br, struct net_bridge_fdb_entry *f, in fdb_delete() argument
314 trace_fdb_delete(br, f); in fdb_delete()
316 if (test_bit(BR_FDB_STATIC, &f->flags)) in fdb_delete()
317 fdb_del_hw_addr(br, f->key.addr.addr); in fdb_delete()
319 hlist_del_init_rcu(&f->fdb_node); in fdb_delete()
320 rhashtable_remove_fast(&br->fdb_hash_tbl, &f->rhnode, in fdb_delete()
322 if (test_and_clear_bit(BR_FDB_DYNAMIC_LEARNED, &f->flags)) in fdb_delete()
324 fdb_notify(br, f, RTM_DELNEIGH, swdev_notify); in fdb_delete()
325 kfree_rcu(f, rcu); in fdb_delete()
336 struct net_bridge_fdb_entry *f) in fdb_delete_local() argument
338 const unsigned char *addr = f->key.addr.addr; in fdb_delete_local()
342 u16 vid = f->key.vlan_id; in fdb_delete_local()
349 f->dst = op; in fdb_delete_local()
350 clear_bit(BR_FDB_ADDED_BY_USER, &f->flags); in fdb_delete_local()
360 f->dst = NULL; in fdb_delete_local()
361 clear_bit(BR_FDB_ADDED_BY_USER, &f->flags); in fdb_delete_local()
365 fdb_delete(br, f, true); in fdb_delete_local()
372 struct net_bridge_fdb_entry *f; in br_fdb_find_delete_local() local
375 f = br_fdb_find(br, addr, vid); in br_fdb_find_delete_local()
376 if (f && test_bit(BR_FDB_LOCAL, &f->flags) && in br_fdb_find_delete_local()
377 !test_bit(BR_FDB_ADDED_BY_USER, &f->flags) && f->dst == p) in br_fdb_find_delete_local()
378 fdb_delete_local(br, p, f); in br_fdb_find_delete_local()
459 struct net_bridge_fdb_entry *f; in br_fdb_changeaddr() local
465 hlist_for_each_entry(f, &br->fdb_list, fdb_node) { in br_fdb_changeaddr()
466 if (f->dst == p && test_bit(BR_FDB_LOCAL, &f->flags) && in br_fdb_changeaddr()
467 !test_bit(BR_FDB_ADDED_BY_USER, &f->flags)) { in br_fdb_changeaddr()
469 fdb_delete_local(br, p, f); in br_fdb_changeaddr()
501 struct net_bridge_fdb_entry *f; in br_fdb_change_mac_address() local
507 f = br_fdb_find(br, br->dev->dev_addr, 0); in br_fdb_change_mac_address()
508 if (f && test_bit(BR_FDB_LOCAL, &f->flags) && in br_fdb_change_mac_address()
509 !f->dst && !test_bit(BR_FDB_ADDED_BY_USER, &f->flags)) in br_fdb_change_mac_address()
510 fdb_delete_local(br, NULL, f); in br_fdb_change_mac_address()
523 f = br_fdb_find(br, br->dev->dev_addr, v->vid); in br_fdb_change_mac_address()
524 if (f && test_bit(BR_FDB_LOCAL, &f->flags) && in br_fdb_change_mac_address()
525 !f->dst && !test_bit(BR_FDB_ADDED_BY_USER, &f->flags)) in br_fdb_change_mac_address()
526 fdb_delete_local(br, NULL, f); in br_fdb_change_mac_address()
537 struct net_bridge_fdb_entry *f = NULL; in br_fdb_cleanup() local
547 hlist_for_each_entry_rcu(f, &br->fdb_list, fdb_node) { in br_fdb_cleanup()
548 unsigned long this_timer = f->updated + delay; in br_fdb_cleanup()
550 if (test_bit(BR_FDB_STATIC, &f->flags) || in br_fdb_cleanup()
551 test_bit(BR_FDB_ADDED_BY_EXT_LEARN, &f->flags)) { in br_fdb_cleanup()
552 if (test_bit(BR_FDB_NOTIFY, &f->flags)) { in br_fdb_cleanup()
557 &f->flags)) in br_fdb_cleanup()
558 fdb_notify(br, f, RTM_NEWNEIGH, false); in br_fdb_cleanup()
567 if (!hlist_unhashed(&f->fdb_node)) in br_fdb_cleanup()
568 fdb_delete(br, f, true); in br_fdb_cleanup()
580 const struct net_bridge_fdb_entry *f, in __fdb_flush_matches() argument
583 const struct net_bridge_port *dst = READ_ONCE(f->dst); in __fdb_flush_matches()
586 if (desc->vlan_id && desc->vlan_id != f->key.vlan_id) in __fdb_flush_matches()
590 if (desc->flags_mask && (f->flags & desc->flags_mask) != desc->flags) in __fdb_flush_matches()
600 struct net_bridge_fdb_entry *f; in br_fdb_flush() local
603 hlist_for_each_entry_rcu(f, &br->fdb_list, fdb_node) { in br_fdb_flush()
604 if (!__fdb_flush_matches(br, f, desc)) in br_fdb_flush()
608 if (!hlist_unhashed(&f->fdb_node)) in br_fdb_flush()
609 fdb_delete(br, f, true); in br_fdb_flush()
764 struct net_bridge_fdb_entry *f; in br_fdb_delete_by_port() local
768 hlist_for_each_entry_safe(f, tmp, &br->fdb_list, fdb_node) { in br_fdb_delete_by_port()
769 if (f->dst != p) in br_fdb_delete_by_port()
773 if (test_bit(BR_FDB_STATIC, &f->flags) || in br_fdb_delete_by_port()
774 (test_bit(BR_FDB_ADDED_BY_EXT_LEARN, &f->flags) && in br_fdb_delete_by_port()
775 !test_bit(BR_FDB_OFFLOADED, &f->flags)) || in br_fdb_delete_by_port()
776 (vid && f->key.vlan_id != vid)) in br_fdb_delete_by_port()
779 if (test_bit(BR_FDB_LOCAL, &f->flags)) in br_fdb_delete_by_port()
780 fdb_delete_local(br, p, f); in br_fdb_delete_by_port()
782 fdb_delete(br, f, true); in br_fdb_delete_by_port()
823 struct net_bridge_fdb_entry *f; in br_fdb_fillbuf() local
830 hlist_for_each_entry_rcu(f, &br->fdb_list, fdb_node) { in br_fdb_fillbuf()
834 if (has_expired(br, f)) in br_fdb_fillbuf()
838 if (!f->dst) in br_fdb_fillbuf()
847 memcpy(fe->mac_addr, f->key.addr.addr, ETH_ALEN); in br_fdb_fillbuf()
850 fe->port_no = f->dst->port_no; in br_fdb_fillbuf()
851 fe->port_hi = f->dst->port_no >> 8; in br_fdb_fillbuf()
853 fe->is_local = test_bit(BR_FDB_LOCAL, &f->flags); in br_fdb_fillbuf()
854 if (!test_bit(BR_FDB_STATIC, &f->flags)) in br_fdb_fillbuf()
855 fe->ageing_timer_value = jiffies_delta_to_clock_t(jiffies - f->updated); in br_fdb_fillbuf()
960 struct net_bridge_fdb_entry *f; in br_fdb_dump() local
973 hlist_for_each_entry_rcu(f, &br->fdb_list, fdb_node) { in br_fdb_dump()
976 if (filter_dev && (!f->dst || f->dst->dev != filter_dev)) { in br_fdb_dump()
984 if (f->dst) in br_fdb_dump()
987 if (!filter_dev && f->dst) in br_fdb_dump()
990 err = fdb_fill_info(skb, br, f, in br_fdb_dump()
1013 struct net_bridge_fdb_entry *f; in br_fdb_get() local
1017 f = br_fdb_find_rcu(br, addr, vid); in br_fdb_get()
1018 if (!f) { in br_fdb_get()
1024 err = fdb_fill_info(skb, br, f, portid, seq, in br_fdb_get()
1365 struct net_bridge_fdb_entry *f, *tmp; in br_fdb_sync_static() local
1372 hlist_for_each_entry_rcu(f, &br->fdb_list, fdb_node) { in br_fdb_sync_static()
1374 if (!test_bit(BR_FDB_STATIC, &f->flags)) in br_fdb_sync_static()
1376 err = dev_uc_add(p->dev, f->key.addr.addr); in br_fdb_sync_static()
1390 if (tmp == f) in br_fdb_sync_static()
1400 struct net_bridge_fdb_entry *f; in br_fdb_unsync_static() local
1405 hlist_for_each_entry_rcu(f, &br->fdb_list, fdb_node) { in br_fdb_unsync_static()
1407 if (!test_bit(BR_FDB_STATIC, &f->flags)) in br_fdb_unsync_static()
1410 dev_uc_del(p->dev, f->key.addr.addr); in br_fdb_unsync_static()
1532 struct net_bridge_fdb_entry *f; in br_fdb_clear_offload() local
1542 hlist_for_each_entry(f, &p->br->fdb_list, fdb_node) { in br_fdb_clear_offload()
1543 if (f->dst == p && f->key.vlan_id == vid) in br_fdb_clear_offload()
1544 clear_bit(BR_FDB_OFFLOADED, &f->flags); in br_fdb_clear_offload()