mac80211: add rx decapsulation offload support
authorFelix Fietkau <nbd@nbd.name>
Fri, 18 Dec 2020 18:47:18 +0000 (19:47 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 21 Jan 2021 12:34:49 +0000 (13:34 +0100)
commit80a915ec4427f0083829f7e6518ee9f21521ee1e
treeb532e28285156c37a6e03f74715d33a85bf809c0
parentd7b649291782430904e17cde2ebfc90f76021ca5
mac80211: add rx decapsulation offload support

This allows drivers to pass 802.3 frames to mac80211, with some restrictions:

- the skb must be passed with a valid sta
- fast-rx needs to be active for the sta
- monitor mode needs to be disabled

mac80211 will tell the driver when it is safe to enable rx decap offload for
a particular station.

In order to implement support, a driver must:

- call ieee80211_hw_set(hw, SUPPORTS_RX_DECAP_OFFLOAD)
- implement ops->sta_set_decap_offload
- mark 802.3 frames with RX_FLAG_8023

If it doesn't want to enable offload for some vif types, it can mask out
IEEE80211_OFFLOAD_DECAP_ENABLED in vif->offload_flags from within the
.add_interface or .update_vif_offload driver ops

Signed-off-by: Felix Fietkau <nbd@nbd.name>
Link: https://lore.kernel.org/r/20201218184718.93650-6-nbd@nbd.name
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
include/net/mac80211.h
net/mac80211/debugfs.c
net/mac80211/debugfs_sta.c
net/mac80211/driver-ops.h
net/mac80211/iface.c
net/mac80211/rx.c
net/mac80211/sta_info.h
net/mac80211/trace.h