mac80211: set info->control.hw_key for encap offload packets
authorFelix Fietkau <nbd@nbd.name>
Tue, 8 Sep 2020 12:36:52 +0000 (14:36 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 18 Sep 2020 09:59:47 +0000 (11:59 +0200)
This is needed for drivers that don't do the key lookup themselves

Signed-off-by: Felix Fietkau <nbd@nbd.name>
Link: https://lore.kernel.org/r/20200908123702.88454-5-nbd@nbd.name
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/tx.c

index ea750081f6c6f549294f5164323d1730c8ed8617..65dfc24916e88df3500f0a5a5526bffb057b4637 100644 (file)
@@ -4194,6 +4194,7 @@ static void ieee80211_8023_xmit(struct ieee80211_sub_if_data *sdata,
 {
        struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
        struct ieee80211_local *local = sdata->local;
+       struct ieee80211_key *key;
        struct tid_ampdu_tx *tid_tx;
        u8 tid;
 
@@ -4242,6 +4243,10 @@ static void ieee80211_8023_xmit(struct ieee80211_sub_if_data *sdata,
        info->control.flags |= IEEE80211_TX_CTRL_HW_80211_ENCAP;
        info->control.vif = &sdata->vif;
 
+       key = rcu_dereference(sta->ptk[sta->ptk_idx]);
+       if (key)
+               info->control.hw_key = &key->conf;
+
        ieee80211_tx_8023(sdata, skb, skb->len, sta, false);
 
        return;