mac80211: allow drivers to control software crypto
authorJohannes Berg <johannes.berg@intel.com>
Thu, 22 Jan 2015 17:44:19 +0000 (18:44 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 22 Jan 2015 21:01:01 +0000 (22:01 +0100)
commitfa7e1fbcb52cc9efab394526a566d80fb31529bb
tree3fe7b35805171a28a7f23389a2a40cee834e5381
parent54330bf63b49683d006d8f3857d45722a8c0fbff
mac80211: allow drivers to control software crypto

Some drivers unfortunately cannot support software crypto, but
mac80211 currently assumes that they do.

This has the issue that if the hardware enabling fails for some
reason, the software fallback is used, which won't work. This
clearly isn't desirable, the error should be reported and the
key setting refused.

Support this in mac80211 by allowing drivers to set a new HW
flag IEEE80211_HW_SW_CRYPTO_CONTROL, in which case mac80211 will
only allow software fallback if the set_key() method returns 1.
The driver will also need to advertise supported cipher suites
so that mac80211 doesn't advertise any (future) software ciphers
that the driver can't actually do.

While at it, to make it easier to support this, refactor the
ieee80211_init_cipher_suites() code.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
include/net/mac80211.h
net/mac80211/key.c
net/mac80211/main.c