Lines Matching refs:nc
658 struct prestera_kern_neigh_cache *nc, in __prestera_k_arb_fib_nh_offload_set() argument
667 if (!nc) { in __prestera_k_arb_fib_nh_offload_set()
672 if (prestera_util_nhc_eq_n_cache_key(sw, nhc, &nc->key)) { in __prestera_k_arb_fib_nh_offload_set()
681 struct prestera_kern_neigh_cache *nc, in __prestera_k_arb_n_offload_set() argument
686 n = neigh_lookup(&arp_tbl, &nc->key.addr.u.ipv4, in __prestera_k_arb_n_offload_set()
687 nc->key.dev); in __prestera_k_arb_n_offload_set()
775 struct prestera_kern_neigh_cache *nc) in __prestera_k_arb_nc_kern_fib_fetch() argument
777 if (prestera_util_kern_n_is_reachable(l3mdev_fib_table(nc->key.dev), in __prestera_k_arb_nc_kern_fib_fetch()
778 &nc->key.addr, nc->key.dev)) in __prestera_k_arb_nc_kern_fib_fetch()
779 nc->reachable = true; in __prestera_k_arb_nc_kern_fib_fetch()
781 nc->reachable = false; in __prestera_k_arb_nc_kern_fib_fetch()
787 struct prestera_kern_neigh_cache *nc) in __prestera_k_arb_nc_kern_n_fetch() argument
792 memset(&nc->nh_neigh_info, 0, sizeof(nc->nh_neigh_info)); in __prestera_k_arb_nc_kern_n_fetch()
793 n = neigh_lookup(&arp_tbl, &nc->key.addr.u.ipv4, nc->key.dev); in __prestera_k_arb_nc_kern_n_fetch()
799 err = prestera_neigh_iface_init(sw, &nc->nh_neigh_info.iface, in __prestera_k_arb_nc_kern_n_fetch()
804 memcpy(&nc->nh_neigh_info.ha[0], &n->ha[0], ETH_ALEN); in __prestera_k_arb_nc_kern_n_fetch()
805 nc->nh_neigh_info.connected = true; in __prestera_k_arb_nc_kern_n_fetch()
810 nc->in_kernel = nc->nh_neigh_info.connected; in __prestera_k_arb_nc_kern_n_fetch()
818 struct prestera_kern_neigh_cache *nc) in __prestera_k_arb_nc_apply() argument
825 __prestera_k_arb_n_lpm_set(sw, nc, nc->reachable && nc->in_kernel); in __prestera_k_arb_nc_apply()
826 __prestera_k_arb_n_offload_set(sw, nc, nc->reachable && nc->in_kernel); in __prestera_k_arb_nc_apply()
828 prestera_util_nc_key2nh_key(&nc->key, &nh_key); in __prestera_k_arb_nc_apply()
834 if (memcmp(&nc->nh_neigh_info, &nh_neigh->info, in __prestera_k_arb_nc_apply()
836 memcpy(&nh_neigh->info, &nc->nh_neigh_info, in __prestera_k_arb_nc_apply()
849 list_for_each_entry(nhead, &nc->kern_fib_cache_list, head) { in __prestera_k_arb_nc_apply()
850 __prestera_k_arb_fib_nh_offload_set(sw, nhead->this, nc, in __prestera_k_arb_nc_apply()
851 nc->in_kernel, in __prestera_k_arb_nc_apply()
852 !nc->in_kernel); in __prestera_k_arb_nc_apply()
1029 struct prestera_kern_neigh_cache *nc) in __prestera_k_arb_hw_state_upd() argument
1036 prestera_util_nc_key2nh_key(&nc->key, &nh_key); in __prestera_k_arb_hw_state_upd()
1040 &nc->key.addr.u.ipv4); in __prestera_k_arb_hw_state_upd()
1047 if (!hw_active && nc->in_kernel) in __prestera_k_arb_hw_state_upd()
1054 if (nc->key.addr.v == PRESTERA_IPV4) { in __prestera_k_arb_hw_state_upd()
1055 n = neigh_lookup(&arp_tbl, &nc->key.addr.u.ipv4, in __prestera_k_arb_hw_state_upd()
1056 nc->key.dev); in __prestera_k_arb_hw_state_upd()
1058 n = neigh_create(&arp_tbl, &nc->key.addr.u.ipv4, in __prestera_k_arb_hw_state_upd()
1059 nc->key.dev); in __prestera_k_arb_hw_state_upd()
1068 pr_err("Cannot create neighbour %pI4n", &nc->key.addr.u.ipv4); in __prestera_k_arb_hw_state_upd()