OSDN Git Service

mt76: mt7915: support TxBF for DBDC
authorRyder Lee <ryder.lee@mediatek.com>
Tue, 19 Jan 2021 03:01:25 +0000 (11:01 +0800)
committerFelix Fietkau <nbd@nbd.name>
Wed, 27 Jan 2021 16:30:01 +0000 (17:30 +0100)
With this patch, TxBF can be run on both bands simultaneously.

Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7915/init.c
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c
drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h

index 5e21646..ad4e5b9 100644 (file)
@@ -169,6 +169,13 @@ static int mt7915_txbf_init(struct mt7915_dev *dev)
 {
        int ret;
 
+
+       if (dev->dbdc_support) {
+               ret = mt7915_mcu_set_txbf_module(dev);
+               if (ret)
+                       return ret;
+       }
+
        /* trigger sounding packets */
        ret = mt7915_mcu_set_txbf_sounding(dev);
        if (ret)
index 44cef96..0296f2a 100644 (file)
@@ -3401,6 +3401,25 @@ int mt7915_mcu_set_ser(struct mt7915_dev *dev, u8 action, u8 set, u8 band)
                                 &req, sizeof(req), false);
 }
 
+int mt7915_mcu_set_txbf_module(struct mt7915_dev *dev)
+{
+#define MT_BF_MODULE_UPDATE               25
+       struct {
+               u8 action;
+               u8 bf_num;
+               u8 bf_bitmap;
+               u8 bf_sel[8];
+               u8 rsv[8];
+       } __packed req = {
+               .action = MT_BF_MODULE_UPDATE,
+               .bf_num = 2,
+               .bf_bitmap = GENMASK(1, 0),
+       };
+
+       return mt76_mcu_send_msg(&dev->mt76, MCU_EXT_CMD(TXBF_ACTION), &req,
+                                sizeof(req), true);
+}
+
 int mt7915_mcu_set_txbf_type(struct mt7915_dev *dev)
 {
 #define MT_BF_TYPE_UPDATE              20
index b5954ba..f45e88b 100644 (file)
@@ -341,6 +341,7 @@ int mt7915_mcu_set_pm(struct mt7915_dev *dev, int band, int enter);
 int mt7915_mcu_set_sku_en(struct mt7915_phy *phy, bool enable);
 int mt7915_mcu_set_sku(struct mt7915_phy *phy);
 int mt7915_mcu_set_txbf_type(struct mt7915_dev *dev);
+int mt7915_mcu_set_txbf_module(struct mt7915_dev *dev);
 int mt7915_mcu_set_txbf_sounding(struct mt7915_dev *dev);
 int mt7915_mcu_set_fcc5_lpn(struct mt7915_dev *dev, int val);
 int mt7915_mcu_set_pulse_th(struct mt7915_dev *dev,