Lines Matching refs:f

124 	struct net_bridge_fdb_entry *f;  in br_fdb_find_port()  local
135 f = br_fdb_find_rcu(br, addr, vid); in br_fdb_find_port()
136 if (f && f->dst) in br_fdb_find_port()
137 dev = f->dst->dev; in br_fdb_find_port()
196 static void fdb_delete(struct net_bridge *br, struct net_bridge_fdb_entry *f, in fdb_delete() argument
199 trace_fdb_delete(br, f); in fdb_delete()
201 if (test_bit(BR_FDB_STATIC, &f->flags)) in fdb_delete()
202 fdb_del_hw_addr(br, f->key.addr.addr); in fdb_delete()
204 hlist_del_init_rcu(&f->fdb_node); in fdb_delete()
205 rhashtable_remove_fast(&br->fdb_hash_tbl, &f->rhnode, in fdb_delete()
207 fdb_notify(br, f, RTM_DELNEIGH, swdev_notify); in fdb_delete()
208 call_rcu(&f->rcu, fdb_rcu_free); in fdb_delete()
214 struct net_bridge_fdb_entry *f) in fdb_delete_local() argument
216 const unsigned char *addr = f->key.addr.addr; in fdb_delete_local()
220 u16 vid = f->key.vlan_id; in fdb_delete_local()
227 f->dst = op; in fdb_delete_local()
228 clear_bit(BR_FDB_ADDED_BY_USER, &f->flags); in fdb_delete_local()
238 f->dst = NULL; in fdb_delete_local()
239 clear_bit(BR_FDB_ADDED_BY_USER, &f->flags); in fdb_delete_local()
243 fdb_delete(br, f, true); in fdb_delete_local()
250 struct net_bridge_fdb_entry *f; in br_fdb_find_delete_local() local
253 f = br_fdb_find(br, addr, vid); in br_fdb_find_delete_local()
254 if (f && test_bit(BR_FDB_LOCAL, &f->flags) && in br_fdb_find_delete_local()
255 !test_bit(BR_FDB_ADDED_BY_USER, &f->flags) && f->dst == p) in br_fdb_find_delete_local()
256 fdb_delete_local(br, p, f); in br_fdb_find_delete_local()
263 struct net_bridge_fdb_entry *f; in br_fdb_changeaddr() local
269 hlist_for_each_entry(f, &br->fdb_list, fdb_node) { in br_fdb_changeaddr()
270 if (f->dst == p && test_bit(BR_FDB_LOCAL, &f->flags) && in br_fdb_changeaddr()
271 !test_bit(BR_FDB_ADDED_BY_USER, &f->flags)) { in br_fdb_changeaddr()
273 fdb_delete_local(br, p, f); in br_fdb_changeaddr()
305 struct net_bridge_fdb_entry *f; in br_fdb_change_mac_address() local
311 f = br_fdb_find(br, br->dev->dev_addr, 0); in br_fdb_change_mac_address()
312 if (f && test_bit(BR_FDB_LOCAL, &f->flags) && in br_fdb_change_mac_address()
313 !f->dst && !test_bit(BR_FDB_ADDED_BY_USER, &f->flags)) in br_fdb_change_mac_address()
314 fdb_delete_local(br, NULL, f); in br_fdb_change_mac_address()
327 f = br_fdb_find(br, br->dev->dev_addr, v->vid); in br_fdb_change_mac_address()
328 if (f && test_bit(BR_FDB_LOCAL, &f->flags) && in br_fdb_change_mac_address()
329 !f->dst && !test_bit(BR_FDB_ADDED_BY_USER, &f->flags)) in br_fdb_change_mac_address()
330 fdb_delete_local(br, NULL, f); in br_fdb_change_mac_address()
341 struct net_bridge_fdb_entry *f = NULL; in br_fdb_cleanup() local
351 hlist_for_each_entry_rcu(f, &br->fdb_list, fdb_node) { in br_fdb_cleanup()
352 unsigned long this_timer = f->updated + delay; in br_fdb_cleanup()
354 if (test_bit(BR_FDB_STATIC, &f->flags) || in br_fdb_cleanup()
355 test_bit(BR_FDB_ADDED_BY_EXT_LEARN, &f->flags)) { in br_fdb_cleanup()
356 if (test_bit(BR_FDB_NOTIFY, &f->flags)) { in br_fdb_cleanup()
361 &f->flags)) in br_fdb_cleanup()
362 fdb_notify(br, f, RTM_NEWNEIGH, false); in br_fdb_cleanup()
371 if (!hlist_unhashed(&f->fdb_node)) in br_fdb_cleanup()
372 fdb_delete(br, f, true); in br_fdb_cleanup()
386 struct net_bridge_fdb_entry *f; in br_fdb_flush() local
390 hlist_for_each_entry_safe(f, tmp, &br->fdb_list, fdb_node) { in br_fdb_flush()
391 if (!test_bit(BR_FDB_STATIC, &f->flags)) in br_fdb_flush()
392 fdb_delete(br, f, true); in br_fdb_flush()
406 struct net_bridge_fdb_entry *f; in br_fdb_delete_by_port() local
410 hlist_for_each_entry_safe(f, tmp, &br->fdb_list, fdb_node) { in br_fdb_delete_by_port()
411 if (f->dst != p) in br_fdb_delete_by_port()
415 if (test_bit(BR_FDB_STATIC, &f->flags) || in br_fdb_delete_by_port()
416 (test_bit(BR_FDB_ADDED_BY_EXT_LEARN, &f->flags) && in br_fdb_delete_by_port()
417 !test_bit(BR_FDB_OFFLOADED, &f->flags)) || in br_fdb_delete_by_port()
418 (vid && f->key.vlan_id != vid)) in br_fdb_delete_by_port()
421 if (test_bit(BR_FDB_LOCAL, &f->flags)) in br_fdb_delete_by_port()
422 fdb_delete_local(br, p, f); in br_fdb_delete_by_port()
424 fdb_delete(br, f, true); in br_fdb_delete_by_port()
460 struct net_bridge_fdb_entry *f; in br_fdb_fillbuf() local
467 hlist_for_each_entry_rcu(f, &br->fdb_list, fdb_node) { in br_fdb_fillbuf()
471 if (has_expired(br, f)) in br_fdb_fillbuf()
475 if (!f->dst) in br_fdb_fillbuf()
484 memcpy(fe->mac_addr, f->key.addr.addr, ETH_ALEN); in br_fdb_fillbuf()
487 fe->port_no = f->dst->port_no; in br_fdb_fillbuf()
488 fe->port_hi = f->dst->port_no >> 8; in br_fdb_fillbuf()
490 fe->is_local = test_bit(BR_FDB_LOCAL, &f->flags); in br_fdb_fillbuf()
491 if (!test_bit(BR_FDB_STATIC, &f->flags)) in br_fdb_fillbuf()
492 fe->ageing_timer_value = jiffies_delta_to_clock_t(jiffies - f->updated); in br_fdb_fillbuf()
764 struct net_bridge_fdb_entry *f; in br_fdb_dump() local
777 hlist_for_each_entry_rcu(f, &br->fdb_list, fdb_node) { in br_fdb_dump()
780 if (filter_dev && (!f->dst || f->dst->dev != filter_dev)) { in br_fdb_dump()
788 if (f->dst) in br_fdb_dump()
791 if (!filter_dev && f->dst) in br_fdb_dump()
794 err = fdb_fill_info(skb, br, f, in br_fdb_dump()
817 struct net_bridge_fdb_entry *f; in br_fdb_get() local
821 f = br_fdb_find_rcu(br, addr, vid); in br_fdb_get()
822 if (!f) { in br_fdb_get()
828 err = fdb_fill_info(skb, br, f, portid, seq, in br_fdb_get()
1155 struct net_bridge_fdb_entry *f, *tmp; in br_fdb_sync_static() local
1162 hlist_for_each_entry_rcu(f, &br->fdb_list, fdb_node) { in br_fdb_sync_static()
1164 if (!test_bit(BR_FDB_STATIC, &f->flags)) in br_fdb_sync_static()
1166 err = dev_uc_add(p->dev, f->key.addr.addr); in br_fdb_sync_static()
1180 if (tmp == f) in br_fdb_sync_static()
1190 struct net_bridge_fdb_entry *f; in br_fdb_unsync_static() local
1195 hlist_for_each_entry_rcu(f, &br->fdb_list, fdb_node) { in br_fdb_unsync_static()
1197 if (!test_bit(BR_FDB_STATIC, &f->flags)) in br_fdb_unsync_static()
1200 dev_uc_del(p->dev, f->key.addr.addr); in br_fdb_unsync_static()
1302 struct net_bridge_fdb_entry *f; in br_fdb_clear_offload() local
1312 hlist_for_each_entry(f, &p->br->fdb_list, fdb_node) { in br_fdb_clear_offload()
1313 if (f->dst == p && f->key.vlan_id == vid) in br_fdb_clear_offload()
1314 clear_bit(BR_FDB_OFFLOADED, &f->flags); in br_fdb_clear_offload()