diff options
author | Christian Lamparter <chunkeey@googlemail.com> | 2012-09-07 19:48:19 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-09-24 15:02:08 -0400 |
commit | 960334a7d33ecd54ba5337275dc4ea701d1dbf5e (patch) | |
tree | e6cc29fd997b450561ad21d9a2e39ac9917c78c4 /drivers/net/wireless/p54/main.c | |
parent | 742e7a932273bbb7f7a206c2c22faa3794262132 (diff) |
p54: connect to 11w protected networks
Previously, it was not possible to connect to
networks which requires 11w to be supported by
the stations.
Note:
As all current (and old) firmwares corrupt
incoming, protected management frames, the
decryption offloading needs to be disabled.
This will be done automatically if needed.
Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/p54/main.c')
-rw-r--r-- | drivers/net/wireless/p54/main.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/net/wireless/p54/main.c b/drivers/net/wireless/p54/main.c index 2969d5321ca6..aadda99989c0 100644 --- a/drivers/net/wireless/p54/main.c +++ b/drivers/net/wireless/p54/main.c | |||
@@ -515,6 +515,17 @@ static int p54_set_key(struct ieee80211_hw *dev, enum set_key_cmd cmd, | |||
515 | if (modparam_nohwcrypt) | 515 | if (modparam_nohwcrypt) |
516 | return -EOPNOTSUPP; | 516 | return -EOPNOTSUPP; |
517 | 517 | ||
518 | if (key->flags & IEEE80211_KEY_FLAG_RX_MGMT) { | ||
519 | /* | ||
520 | * Unfortunately most/all firmwares are trying to decrypt | ||
521 | * incoming management frames if a suitable key can be found. | ||
522 | * However, in doing so the data in these frames gets | ||
523 | * corrupted. So, we can't have firmware supported crypto | ||
524 | * offload in this case. | ||
525 | */ | ||
526 | return -EOPNOTSUPP; | ||
527 | } | ||
528 | |||
518 | mutex_lock(&priv->conf_mutex); | 529 | mutex_lock(&priv->conf_mutex); |
519 | if (cmd == SET_KEY) { | 530 | if (cmd == SET_KEY) { |
520 | switch (key->cipher) { | 531 | switch (key->cipher) { |
@@ -738,6 +749,7 @@ struct ieee80211_hw *p54_init_common(size_t priv_data_len) | |||
738 | IEEE80211_HW_SIGNAL_DBM | | 749 | IEEE80211_HW_SIGNAL_DBM | |
739 | IEEE80211_HW_SUPPORTS_PS | | 750 | IEEE80211_HW_SUPPORTS_PS | |
740 | IEEE80211_HW_PS_NULLFUNC_STACK | | 751 | IEEE80211_HW_PS_NULLFUNC_STACK | |
752 | IEEE80211_HW_MFP_CAPABLE | | ||
741 | IEEE80211_HW_REPORTS_TX_ACK_STATUS; | 753 | IEEE80211_HW_REPORTS_TX_ACK_STATUS; |
742 | 754 | ||
743 | dev->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) | | 755 | dev->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) | |