veth: allow enabling NAPI even without XDP
authorPaolo Abeni <pabeni@redhat.com>
Fri, 9 Apr 2021 11:04:38 +0000 (13:04 +0200)
committerDavid S. Miller <davem@davemloft.net>
Sun, 11 Apr 2021 23:39:28 +0000 (16:39 -0700)
commitd3256efd8e8b234a6251e4d4580bd2c3c31fdc4c
treeb3c92dfd474ae0625223699e8a181860a9067f1c
parentc75fb320d482a5ce6e522378d137fd2c3bf79225
veth: allow enabling NAPI even without XDP

Currently the veth device has the GRO feature bit set, even if
no GRO aggregation is possible with the default configuration,
as the veth device does not hook into the GRO engine.

Flipping the GRO feature bit from user-space is a no-op, unless
XDP is enabled. In such scenario GRO could actually take place, but
TSO is forced to off on the peer device.

This change allow user-space to really control the GRO feature, with
no need for an XDP program.

The GRO feature bit is now cleared by default - so that there are no
user-visible behavior changes with the default configuration.

When the GRO bit is set, the per-queue NAPI instances are initialized
and registered. On xmit, when napi instances are available, we try
to use them.

Some additional checks are in place to ensure we initialize/delete NAPIs
only when needed in case of overlapping XDP and GRO configuration
changes.

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/veth.c