Lines Matching refs:nhge
136 struct nh_grp_entry *nhge = &nhg->nh_entries[i];
139 nhi = rtnl_dereference(nhge->nh->nh_info);
140 info->nh_grp->nh_entries[i].id = nhge->nh->id;
141 info->nh_grp->nh_entries[i].weight = nhge->weight;
168 struct nh_grp_entry *nhge;
171 nhge = rtnl_dereference(bucket->nh_entry);
172 nhi = rtnl_dereference(nhge->nh->nh_info);
474 struct nh_grp_entry *nhge = &nhg->nh_entries[i];
476 WARN_ON(!list_empty(&nhge->nh_list));
477 nexthop_put(nhge->nh);
920 struct nh_grp_entry *nhge = nh_res_dereference(bucket->nh_entry);
944 nla_put_u32(skb, NHA_RES_BUCKET_NH_ID, nhge->nh->id) ||
965 struct nh_grp_entry *nhge = nh_res_dereference(bucket->nh_entry);
966 struct nexthop *nh = nhge->nh_parent;
1174 struct nh_grp_entry *nhge = &nhg->nh_entries[i];
1176 if (hash > atomic_read(&nhge->hthr.upper_bound))
1179 return nhge->nh;
1195 struct nh_grp_entry *nhge = &nhg->nh_entries[i];
1200 if (!nexthop_is_good_nh(nhge->nh))
1204 rc = nhge->nh;
1206 if (hash > atomic_read(&nhge->hthr.upper_bound))
1209 return nhge->nh;
1220 struct nh_grp_entry *nhge;
1227 nhge = rcu_dereference(bucket->nh_entry);
1228 return nhge->nh;
1262 struct nh_grp_entry *nhge = &nhg->nh_entries[i];
1264 nhi = rcu_dereference_rtnl(nhge->nh->nh_info);
1425 static bool nh_res_nhge_is_balanced(const struct nh_grp_entry *nhge)
1427 return nhge->res.count_buckets == nhge->res.wants_buckets;
1430 static bool nh_res_nhge_is_ow(const struct nh_grp_entry *nhge)
1432 return nhge->res.count_buckets > nhge->res.wants_buckets;
1435 static bool nh_res_nhge_is_uw(const struct nh_grp_entry *nhge)
1437 return nhge->res.count_buckets < nhge->res.wants_buckets;
1447 struct nh_grp_entry *nhge;
1450 nhge = nh_res_dereference(bucket->nh_entry);
1451 nhge->res.count_buckets--;
1457 struct nh_grp_entry *nhge)
1462 rcu_assign_pointer(bucket->nh_entry, nhge);
1463 nhge->res.count_buckets++;
1471 struct nh_grp_entry *nhge;
1482 nhge = nh_res_dereference(bucket->nh_entry);
1487 if (!nh_res_nhge_is_ow(nhge))
1668 struct nh_grp_entry *nhge = &nhg->nh_entries[i];
1671 w += nhge->weight;
1674 nhge->res.wants_buckets = upper_bound - prev_upper_bound;
1677 if (nh_res_nhge_is_uw(nhge)) {
1680 list_add(&nhge->res.uw_nh_entry,
1702 struct nh_grp_entry *nhge = &nhg->nh_entries[j];
1704 if (nhge->nh->id == id) {
1705 nh_res_bucket_set_nh(bucket, nhge);
1747 struct nh_grp_entry *nhge = &nhg->nh_entries[i];
1750 w += nhge->weight;
1752 atomic_set(&nhge->hthr.upper_bound, upper_bound);
1756 static void remove_nh_grp_entry(struct net *net, struct nh_grp_entry *nhge,
1760 struct nexthop *nhp = nhge->nh_parent;
1762 struct nexthop *nh = nhge->nh;
1815 list_del(&nhge->nh_list);
1816 nexthop_put(nhge->nh);
1835 struct nh_grp_entry *nhge, *tmp;
1837 list_for_each_entry_safe(nhge, tmp, &nh->grp_list, nh_list)
1838 remove_nh_grp_entry(net, nhge, nlinfo);
1851 struct nh_grp_entry *nhge = &nhg->nh_entries[i];
1853 if (WARN_ON(!nhge->nh))
1856 list_del_init(&nhge->nh_list);
1947 struct nh_grp_entry *nhge = &nhg->nh_entries[i];
1948 struct nh_info *nhi = rtnl_dereference(nhge->nh->nh_info);
2072 struct nh_grp_entry *nhge;
2074 nhge = rtnl_dereference(bucket->nh_entry);
2075 if (nhge->nh == old) {
2090 struct nh_grp_entry *nhge;
2092 nhge = rtnl_dereference(bucket->nh_entry);
2093 if (nhge->nh == old)
2130 struct nh_grp_entry *nhge;
2163 list_for_each_entry(nhge, &old->grp_list, nh_list) {
2164 struct nexthop *nhp = nhge->nh_parent;
2176 list_for_each_entry(nhge, &old->grp_list, nh_list) {
2177 struct nexthop *nhp = nhge->nh_parent;
2194 list_for_each_entry_continue_reverse(nhge, &old->grp_list, nh_list) {
2195 struct nexthop *nhp = nhge->nh_parent;
2235 struct nh_grp_entry *nhge;
2239 list_for_each_entry(nhge, &nh->grp_list, nh_list)
2240 __nexthop_replace_notify(net, nhge->nh_parent, info);
2248 struct nh_grp_entry *nhge;
2268 list_for_each_entry(nhge, &old->grp_list, nh_list) {
2273 nexthop_num_path(nhge->nh_parent) > 1) {
2278 err = fib_check_nh_list(nhge->nh_parent, new, extack);
2282 err = fib6_check_nh_list(nhge->nh_parent, new, extack);
3373 struct nh_grp_entry *nhge;
3376 nhge = rtnl_dereference(bucket->nh_entry);
3377 if (nh_dump_filtered(nhge->nh, &dd->filter, nhm->nh_family))
3381 dd->filter.res_bucket_nh_id != nhge->nh->id)