|
@@ -432,7 +432,10 @@ ieee80211_tx_h_select_key(struct ieee80211_tx_data *tx)
|
|
tx->key = key;
|
|
tx->key = key;
|
|
else if (tx->sdata->drop_unencrypted &&
|
|
else if (tx->sdata->drop_unencrypted &&
|
|
(tx->skb->protocol != cpu_to_be16(ETH_P_PAE)) &&
|
|
(tx->skb->protocol != cpu_to_be16(ETH_P_PAE)) &&
|
|
- !(info->flags & IEEE80211_TX_CTL_INJECTED)) {
|
|
|
|
|
|
+ !(info->flags & IEEE80211_TX_CTL_INJECTED) &&
|
|
|
|
+ (!ieee80211_is_robust_mgmt_frame(hdr) ||
|
|
|
|
+ (ieee80211_is_action(hdr->frame_control) &&
|
|
|
|
+ tx->sta && test_sta_flags(tx->sta, WLAN_STA_MFP)))) {
|
|
I802_DEBUG_INC(tx->local->tx_handlers_drop_unencrypted);
|
|
I802_DEBUG_INC(tx->local->tx_handlers_drop_unencrypted);
|
|
return TX_DROP;
|
|
return TX_DROP;
|
|
} else
|
|
} else
|