mt76: mt7915: update bss_info with cipher after setting the group key
authorFelix Fietkau <nbd@nbd.name>
Wed, 29 Dec 2021 11:21:46 +0000 (12:21 +0100)
committerFelix Fietkau <nbd@nbd.name>
Thu, 3 Feb 2022 12:57:58 +0000 (13:57 +0100)
In some cases, the WA firmware needs to know if encryption is used, in order
to set the protection bit of packets

Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7915/main.c

index aed0a53..b45b75f 100644 (file)
@@ -367,6 +367,7 @@ static int mt7915_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
                          struct ieee80211_key_conf *key)
 {
        struct mt7915_dev *dev = mt7915_hw_dev(hw);
+       struct mt7915_phy *phy = mt7915_hw_phy(hw);
        struct mt7915_vif *mvif = (struct mt7915_vif *)vif->drv_priv;
        struct mt7915_sta *msta = sta ? (struct mt7915_sta *)sta->drv_priv :
                                  &mvif->sta;
@@ -406,6 +407,11 @@ static int mt7915_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
 
        mutex_lock(&dev->mt76.mutex);
 
+       if (cmd == SET_KEY && !sta && !mvif->mt76.cipher) {
+               mvif->mt76.cipher = mt76_connac_mcu_get_cipher(key->cipher);
+               mt7915_mcu_add_bss_info(phy, vif, true);
+       }
+
        if (cmd == SET_KEY)
                *wcid_keyidx = idx;
        else if (idx == *wcid_keyidx)