From 3f546330b59d627f03d7bde38f4f51ce57d5e8d2 Mon Sep 17 00:00:00 2001 From: Ryder Lee Date: Tue, 19 Jan 2021 11:01:25 +0800 Subject: [PATCH] mt76: mt7915: support TxBF for DBDC With this patch, TxBF can be run on both bands simultaneously. Signed-off-by: Ryder Lee Signed-off-by: Felix Fietkau --- mt7915/init.c | 7 +++++++ mt7915/mcu.c | 19 +++++++++++++++++++ mt7915/mt7915.h | 1 + 3 files changed, 27 insertions(+) diff --git a/mt7915/init.c b/mt7915/init.c index 79aebcb6..e95a8ea4 100644 --- a/mt7915/init.c +++ b/mt7915/init.c @@ -209,6 +209,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) diff --git a/mt7915/mcu.c b/mt7915/mcu.c index 3118bf56..4311b0d6 100644 --- a/mt7915/mcu.c +++ b/mt7915/mcu.c @@ -3424,6 +3424,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 diff --git a/mt7915/mt7915.h b/mt7915/mt7915.h index d88a7ee6..ebf2a127 100644 --- a/mt7915/mt7915.h +++ b/mt7915/mt7915.h @@ -335,6 +335,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_txpower_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,