mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-17 09:43:59 +08:00
nexthop: Introduce to struct nh_grp_entry a per-type union
The values that a next-hop group needs to keep track of depend on the group type. Introduce a union to separate fields specific to the mpath groups from fields specific to other group types. Signed-off-by: Petr Machata <petrm@nvidia.com> Reviewed-by: Ido Schimmel <idosch@nvidia.com> Reviewed-by: David Ahern <dsahern@kernel.org> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
79bc55e3fe
commit
b9bae61be4
@ -66,7 +66,12 @@ struct nh_info {
|
||||
struct nh_grp_entry {
|
||||
struct nexthop *nh;
|
||||
u8 weight;
|
||||
|
||||
union {
|
||||
struct {
|
||||
atomic_t upper_bound;
|
||||
} mpath;
|
||||
};
|
||||
|
||||
struct list_head nh_list;
|
||||
struct nexthop *nh_parent; /* nexthop of group with this entry */
|
||||
|
@ -689,7 +689,7 @@ static struct nexthop *nexthop_select_path_mp(struct nh_group *nhg, int hash)
|
||||
struct nh_grp_entry *nhge = &nhg->nh_entries[i];
|
||||
struct nh_info *nhi;
|
||||
|
||||
if (hash > atomic_read(&nhge->upper_bound))
|
||||
if (hash > atomic_read(&nhge->mpath.upper_bound))
|
||||
continue;
|
||||
|
||||
nhi = rcu_dereference(nhge->nh->nh_info);
|
||||
@ -924,7 +924,7 @@ static void nh_group_rebalance(struct nh_group *nhg)
|
||||
|
||||
w += nhge->weight;
|
||||
upper_bound = DIV_ROUND_CLOSEST_ULL((u64)w << 31, total) - 1;
|
||||
atomic_set(&nhge->upper_bound, upper_bound);
|
||||
atomic_set(&nhge->mpath.upper_bound, upper_bound);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user