From: Jiri Pirko <j...@resnulli.us> Date: Mon, 14 Aug 2017 21:09:18 +0200
> From: Jiri Pirko <j...@mellanox.com> > > Arkadi says: > > Due to limited ASIC resources the maximum number of routes is limited by > the nexthop resource. In order to improve the routing scale nexthop > consolidation should be performed. > > In case of IPv4, the kernel does the consolidation of nexthops in the form > of the fib_info struct. In that case, the driver uses the fib_info's > address as a key for the internal nexthop group representative struct > lookup. In case of IPv6, the kernel doesn't do consolidation, thus the > driver should implement it by itself. > > The hash value is calculated based on the nexthop set, by performing > bitwise xor on the ifindexs of the nexthops, in a similar way to IPV4's > kernel implementation. In case of collision a full match is performed > between the sets which include address and ifindex comparison. > > In order to use the same hash table in both cases (IPv4/6), the rhashtable > is changed to operate on variable length key. Series applied, thanks.