Commit 0a3a8436 authored by Jouni Malinen's avatar Jouni Malinen Committed by Johannes Berg

mac80211: Beacon protection using the new BIGTK (AP)

This adds support for mac80211 to add an MME into Beacon frames in AP
mode when a BIGTK is configured.
Signed-off-by: default avatarJouni Malinen <jouni@codeaurora.org>
Link: https://lore.kernel.org/r/20200222132548.20835-5-jouni@codeaurora.orgSigned-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 2d5d4b0a
...@@ -4664,6 +4664,28 @@ bool ieee80211_csa_is_complete(struct ieee80211_vif *vif) ...@@ -4664,6 +4664,28 @@ bool ieee80211_csa_is_complete(struct ieee80211_vif *vif)
} }
EXPORT_SYMBOL(ieee80211_csa_is_complete); EXPORT_SYMBOL(ieee80211_csa_is_complete);
static int ieee80211_beacon_protect(struct sk_buff *skb,
struct ieee80211_local *local,
struct ieee80211_sub_if_data *sdata)
{
ieee80211_tx_result res;
struct ieee80211_tx_data tx;
memset(&tx, 0, sizeof(tx));
tx.key = rcu_dereference(sdata->default_beacon_key);
if (!tx.key)
return 0;
tx.local = local;
tx.sdata = sdata;
__skb_queue_head_init(&tx.skbs);
__skb_queue_tail(&tx.skbs, skb);
res = ieee80211_tx_h_encrypt(&tx);
if (WARN_ON_ONCE(res != TX_CONTINUE))
return -1;
return 0;
}
static struct sk_buff * static struct sk_buff *
__ieee80211_beacon_get(struct ieee80211_hw *hw, __ieee80211_beacon_get(struct ieee80211_hw *hw,
struct ieee80211_vif *vif, struct ieee80211_vif *vif,
...@@ -4731,6 +4753,9 @@ __ieee80211_beacon_get(struct ieee80211_hw *hw, ...@@ -4731,6 +4753,9 @@ __ieee80211_beacon_get(struct ieee80211_hw *hw,
if (beacon->tail) if (beacon->tail)
skb_put_data(skb, beacon->tail, skb_put_data(skb, beacon->tail,
beacon->tail_len); beacon->tail_len);
if (ieee80211_beacon_protect(skb, local, sdata) < 0)
goto out;
} else } else
goto out; goto out;
} else if (sdata->vif.type == NL80211_IFTYPE_ADHOC) { } else if (sdata->vif.type == NL80211_IFTYPE_ADHOC) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment