wifi: mac80211: add support for restricting netdev features per vif
authorFelix Fietkau <nbd@nbd.name>
Mon, 10 Oct 2022 09:43:38 +0000 (11:43 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 1 Dec 2022 14:09:10 +0000 (15:09 +0100)
commit7d360f6061db01830adfdb1eaa3977b19db0c30b
treea5ab0938c568e495556356c813633693e01cb80a
parent209d70d34a7fd32e6fb6784f107913b0d18fe501
wifi: mac80211: add support for restricting netdev features per vif

This can be used to selectively disable feature flags for checksum offload,
scatter/gather or GSO by changing vif->netdev_features.
Removing features from vif->netdev_features does not affect the netdev
features themselves, but instead fixes up skbs in the tx path so that the
offloads are not needed in the driver.

Aside from making it easier to deal with vif type based hardware limitations,
this also makes it possible to optimize performance on hardware without native
GSO support by declaring GSO support in hw->netdev_features and removing it
from vif->netdev_features. This allows mac80211 to handle GSO segmentation
after the sta lookup, but before itxq enqueue, thus reducing the number of
unnecessary sta lookups, as well as some other per-packet processing.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
Link: https://lore.kernel.org/r/20221010094338.78070-1-nbd@nbd.name
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
include/net/fq_impl.h
include/net/mac80211.h
net/mac80211/iface.c
net/mac80211/tx.c