Merge branch 'mlxsw-Add-support-for-nexthop-group-consolidation-for-IPv6'
authorDavid S. Miller <davem@davemloft.net>
Tue, 15 Aug 2017 05:23:32 +0000 (22:23 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 15 Aug 2017 05:23:32 +0000 (22:23 -0700)
commit2587b52a7b5a916f2c91fa6acf6851615b215596
tree9a0060c8f47419902d1531fa1ca46a9569411978
parent864a62596f56f1875d90e8f2a6242ca673f79ec0
parente6f3b379c0c599a870bc0e7d8a0cbb0b316502f5
Merge branch 'mlxsw-Add-support-for-nexthop-group-consolidation-for-IPv6'

Jiri Pirko says:

====================
mlxsw: Add support for nexthop group consolidation for IPv6

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.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>