mbox series

[0/5] Extended Key ID support

Message ID 20190316204208.16497-1-alexander@wetzel-home.de (mailing list archive)
Headers show
Series Extended Key ID support | expand

Message

Alexander Wetzel March 16, 2019, 8:42 p.m. UTC
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.

Alexander Wetzel (5):
  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
  mac80211_hwsim: Ext Key ID support (NATIVE)

 drivers/net/wireless/mac80211_hwsim.c |   1 +
 include/net/cfg80211.h                |   2 +
 include/net/mac80211.h                |  55 +++++++++-
 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                   |  23 +++++
 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 ++--
 18 files changed, 465 insertions(+), 93 deletions(-)