This patch series adds support for IEEE 802.11-2016 Extended Key ID support. Compared to the last RFC there are again quite some API changes, but also some bug fixes. (The bug fixes I remember are outlined in the different patches.) The main differences are: 1) This series drops support to let the driver decide which key/keyid shall be used to encrypt a MPDU. The drivers must now always encrypt the MPDU with the key mac80211 has selected for it. This allows us to use the "normal" key install API for drivers and gets rid of special calls for Extended Key ID between mac80211 and the drivers. 2) It also drops the overly complex handling for tailroom needed and just handles the Rx-only keys like Rx/Tx ones. 3) The "old" Rx-only key flag has been replaced by IEEE80211_KEY_FLAG_NO_AUTO_TX. It's no longer cleared and primarily intended to stop ieee80211_key_replace() to activating the key for Tx, but also allows COMPAT driver to determine if Rx HW crypto can be activated or not. 4) COMPAT Extended Key ID will enable Rx decryption offload only after (at least) one MPDU has been decoded for the key with SW crypto. 5) COMPAT Extended Key ID support now has two dedicated key calls for activating/deactivating Rx HW offload. 6) A-MPDU border signal is now generated unconditionally, so there will always be one more packet with the old key, regardless of the time passed since the new key has been activated. I think the API here is much simpler to understand and use, but it's also a reversal of the decision from the first RFC version to not use key flags to distinguish between normal and Extended Key ID installs. (Normally only COMPAT drivers should care about the flag.) I've tested the patches, but mostly only the full series. Changes compared to v1 of the patch: - Native Extended Key ID is enabled automatically for drivers not supporting hardware encryption and do not offer a set_key() callback. Alexander Wetzel (4): nl80211/cfg80211: Extended Key ID support mac80211: IEEE 802.11 Extended Key ID support mac80211: Compatibility Extended Key ID support mac80211: Mark A-MPDU keyid borders for drivers include/net/cfg80211.h | 2 + include/net/mac80211.h | 58 +++++++++++++- include/uapi/linux/nl80211.h | 28 +++++++ net/mac80211/cfg.c | 36 +++++++++ net/mac80211/debugfs.c | 2 + net/mac80211/ieee80211_i.h | 2 +- net/mac80211/key.c | 143 ++++++++++++++++++++++++++++++----- net/mac80211/key.h | 7 ++ net/mac80211/main.c | 24 ++++++ net/mac80211/rx.c | 80 +++++++++++--------- net/mac80211/sta_info.c | 12 +++ net/mac80211/sta_info.h | 7 +- net/mac80211/tx.c | 73 +++++++++++++----- net/wireless/nl80211.c | 32 +++++++- net/wireless/rdev-ops.h | 3 +- net/wireless/trace.h | 31 ++++++-- net/wireless/util.c | 21 +++-- 17 files changed, 468 insertions(+), 93 deletions(-) -- 2.21.0