mac80211: tx: do not drop non-robust mgmt to non-MFP stas.
authorNicolas Cavallari <Nicolas.Cavallari@lri.fr>
Wed, 4 Jul 2012 16:10:08 +0000 (18:10 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 12 Jul 2012 10:10:48 +0000 (12:10 +0200)
When drop_unencrypted is enabled and MFP is disabled,
non-robust management frames for not-yet associated STA are dropped.
This isn't visible as many management frames sent from the kernel
have TX_INTFL_DONT_ENCRYPT set and management frames injected
from a monitor vif have TX_CTL_INJECTED so aren't dropped.
But management frames sent from userspace via NL80211_CMD_FRAME
do not have this flag set, so are dropped.

This patch make it always accept non-robust management frames.

Signed-off-by: Nicolas Cavallari <cavallar@lri.fr>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/tx.c

index a79fd868566d7d162e73b62d70cfa2a31ef3ecde..b755e778b0c45ee11ac300b03e3cccd0243d2bbd 100644 (file)
@@ -552,6 +552,9 @@ ieee80211_tx_h_select_key(struct ieee80211_tx_data *tx)
                 !(ieee80211_is_action(hdr->frame_control) &&
                   tx->sta && test_sta_flag(tx->sta, WLAN_STA_MFP)))
                tx->key = NULL;
+       else if (ieee80211_is_mgmt(hdr->frame_control) &&
+                !ieee80211_is_robust_mgmt_frame(hdr))
+               tx->key = NULL;
        else {
                I802_DEBUG_INC(tx->local->tx_handlers_drop_unencrypted);
                return TX_DROP;