]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
wifi: mt76: connac: introduce mt76_connac_mcu_sta_wed_update utility routine
authorSujuan Chen <sujuan.chen@mediatek.com>
Sat, 12 Nov 2022 15:40:39 +0000 (16:40 +0100)
committerFelix Fietkau <nbd@nbd.name>
Thu, 1 Dec 2022 16:29:14 +0000 (17:29 +0100)
This is a preliminary patch to introduce WED RX support for mt7915.

Tested-by: Daniel Golle <daniel@makrotopia.org>
Co-developed-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Sujuan Chen <sujuan.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h

index b8480d97c0f88888d37eed56b09ac95d608cf277..96d91238ad8d100dde868ed642298c9ffc9b88f7 100644 (file)
@@ -1219,6 +1219,16 @@ void mt76_connac_mcu_sta_ba_tlv(struct sk_buff *skb,
 }
 EXPORT_SYMBOL_GPL(mt76_connac_mcu_sta_ba_tlv);
 
+int mt76_connac_mcu_sta_wed_update(struct mt76_dev *dev, struct sk_buff *skb)
+{
+       if (!mtk_wed_device_active(&dev->mmio.wed))
+               return 0;
+
+       return mtk_wed_device_update_msg(&dev->mmio.wed, WED_WO_STA_REC,
+                                        skb->data, skb->len);
+}
+EXPORT_SYMBOL_GPL(mt76_connac_mcu_sta_wed_update);
+
 int mt76_connac_mcu_sta_ba(struct mt76_dev *dev, struct mt76_vif *mvif,
                           struct ieee80211_ampdu_params *params,
                           int cmd, bool enable, bool tx)
@@ -1244,6 +1254,10 @@ int mt76_connac_mcu_sta_ba(struct mt76_dev *dev, struct mt76_vif *mvif,
        mt76_connac_mcu_wtbl_ba_tlv(dev, skb, params, enable, tx, sta_wtbl,
                                    wtbl_hdr);
 
+       ret = mt76_connac_mcu_sta_wed_update(dev, skb);
+       if (ret)
+               return ret;
+
        ret = mt76_mcu_skb_send_msg(dev, skb, cmd, true);
        if (ret)
                return ret;
@@ -1254,6 +1268,10 @@ int mt76_connac_mcu_sta_ba(struct mt76_dev *dev, struct mt76_vif *mvif,
 
        mt76_connac_mcu_sta_ba_tlv(skb, params, enable, tx);
 
+       ret = mt76_connac_mcu_sta_wed_update(dev, skb);
+       if (ret)
+               return ret;
+
        return mt76_mcu_skb_send_msg(dev, skb, cmd, true);
 }
 EXPORT_SYMBOL_GPL(mt76_connac_mcu_sta_ba);
@@ -2696,6 +2714,10 @@ int mt76_connac_mcu_add_key(struct mt76_dev *dev, struct ieee80211_vif *vif,
        if (ret)
                return ret;
 
+       ret = mt76_connac_mcu_sta_wed_update(dev, skb);
+       if (ret)
+               return ret;
+
        return mt76_mcu_skb_send_msg(dev, skb, mcu_cmd, true);
 }
 EXPORT_SYMBOL_GPL(mt76_connac_mcu_add_key);
index e8049ac12a84eb9c37203beddde4f09e3a7c17a0..f1e942b9a887ba7536264b61d2ec01d709c2bfe6 100644 (file)
@@ -1891,6 +1891,7 @@ int mt76_connac_mcu_set_pm(struct mt76_dev *dev, int band, int enter);
 int mt76_connac_mcu_restart(struct mt76_dev *dev);
 int mt76_connac_mcu_rdd_cmd(struct mt76_dev *dev, int cmd, u8 index,
                            u8 rx_sel, u8 val);
+int mt76_connac_mcu_sta_wed_update(struct mt76_dev *dev, struct sk_buff *skb);
 int mt76_connac2_load_ram(struct mt76_dev *dev, const char *fw_wm,
                          const char *fw_wa);
 int mt76_connac2_load_patch(struct mt76_dev *dev, const char *fw_name);