]> git.baikalelectronics.ru Git - kernel.git/commit
mac80211: rework tx encapsulation offload API
authorFelix Fietkau <nbd@nbd.name>
Tue, 8 Sep 2020 12:36:53 +0000 (14:36 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 18 Sep 2020 10:02:57 +0000 (12:02 +0200)
commit7a8e3615a2874471b00c507669922bac939cdc32
treed1e341d6b2b68d6850cce918416350161cff3c14
parent2543be6ab02f4a74306c90055267c889ec46320f
mac80211: rework tx encapsulation offload API

The current API (which lets the driver turn on/off per vif directly) has a
number of limitations:
- it does not deal with AP_VLAN
- conditions for enabling (no tkip, no monitor) are only checked at
  add_interface time
- no way to indicate 4-addr support

In order to address this, store offload flags in struct ieee80211_vif
(easy to extend for decap offload later). mac80211 initially sets the enable
flag, but gives the driver a chance to modify it before its settings are
applied. In addition to the .add_interface op, a .update_vif_offload op is
introduced, which can be used for runtime changes.

If a driver can't disable encap offload at runtime, or if it has some extra
limitations, it can simply override the flags within those ops.

Support for encap offload with 4-address mode interfaces can be enabled
by setting a flag from .add_interface or .update_vif_offload.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
Link: https://lore.kernel.org/r/20200908123702.88454-6-nbd@nbd.name
[resolved conflict with commit ecda2b27f21e ("ath11k: add raw mode and
software crypto support")]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/ath/ath11k/mac.c
include/net/mac80211.h
net/mac80211/debugfs.c
net/mac80211/driver-ops.h
net/mac80211/ieee80211_i.h
net/mac80211/iface.c
net/mac80211/key.c
net/mac80211/trace.h
net/mac80211/tx.c