OSDN Git Service

net/pppoe: make number of hash bits configurable
authorJaco Kroon <jaco@uls.co.za>
Wed, 17 May 2023 08:00:03 +0000 (10:00 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 17 May 2023 12:03:45 +0000 (13:03 +0100)
commit96ba44c637b0d30535374f328186a370accab208
tree74139772d489f19df2b43f91dc00d04de572f4be
parentc83ae452d2644f921985a6d8a2f4affeded570dd
net/pppoe: make number of hash bits configurable

When running large numbers of pppoe connections, a bucket size of 16 may
be too small and 256 may be more appropriate.  This sacrifices some RAM
but should result in faster processing of incoming PPPoE frames.

On our systems we run upwards of 150 PPPoE connections at any point in
time, and we suspect we're starting to see the effects of this small
number of buckets.

The legal values according to pppoe.c is anything that when 8 is divided
by that results in a modulo of 0, ie, 1, 2, 4 and 8.

The size of the per-underlying-interface structure is:

sizeof(rwlock_t) + sizeof(pppox_sock*) * PPPOE_HASH_SIZE.

Assuming a 64-bit pointer this will result in just over a 2KiB structure
for PPPOE_HASH_BITS=8, which will likely result in a 4KiB allocation,
which for us at least is acceptable.

Not sure what the minimum allocation size is, and thus if values of 1
and 2 truly make sense.  Default results in historic sizing and
behaviour.

Signed-off-by: Jaco Kroon <jaco@uls.co.za>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ppp/Kconfig
drivers/net/ppp/pppoe.c