OSDN Git Service

mt76: mt7915: introduce mt7915_mcu_set_txbf()
authorRyder Lee <ryder.lee@mediatek.com>
Thu, 10 Jun 2021 18:43:46 +0000 (02:43 +0800)
committerFelix Fietkau <nbd@nbd.name>
Sat, 19 Jun 2021 07:22:49 +0000 (09:22 +0200)
Use mt7915_mcu_set_txbf() to reduce global functions. This can be
easily extended to support other TxBF commands in further patches.

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

index 3961d46..c6e9a70 100644 (file)
@@ -3,6 +3,7 @@
 
 #include "mt7915.h"
 #include "eeprom.h"
+#include "mcu.h"
 
 /** global debugfs **/
 
@@ -16,7 +17,7 @@ mt7915_implicit_txbf_set(void *data, u64 val)
 
        dev->ibf = !!val;
 
-       return mt7915_mcu_set_txbf_type(dev);
+       return mt7915_mcu_set_txbf(dev, MT_BF_TYPE_UPDATE);
 }
 
 static int
index 10c8d92..36bb712 100644 (file)
@@ -313,20 +313,19 @@ static int mt7915_txbf_init(struct mt7915_dev *dev)
 {
        int ret;
 
-
        if (dev->dbdc_support) {
-               ret = mt7915_mcu_set_txbf_module(dev);
+               ret = mt7915_mcu_set_txbf(dev, MT_BF_MODULE_UPDATE);
                if (ret)
                        return ret;
        }
 
        /* trigger sounding packets */
-       ret = mt7915_mcu_set_txbf_sounding(dev);
+       ret = mt7915_mcu_set_txbf(dev, MT_BF_SOUNDING_ON);
        if (ret)
                return ret;
 
        /* enable eBF */
-       return mt7915_mcu_set_txbf_type(dev);
+       return mt7915_mcu_set_txbf(dev, MT_BF_TYPE_UPDATE);
 }
 
 static int mt7915_register_ext_phy(struct mt7915_dev *dev)
index e283969..ca633c1 100644 (file)
@@ -3893,57 +3893,50 @@ 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)
+int mt7915_mcu_set_txbf(struct mt7915_dev *dev, u8 action)
 {
-#define MT_BF_MODULE_UPDATE               25
        struct {
                u8 action;
-               u8 bf_num;
-               u8 bf_bitmap;
-               u8 bf_sel[8];
-               u8 rsv[8];
+               union {
+                       struct {
+                               u8 snd_mode;
+                               u8 sta_num;
+                               u8 rsv;
+                               u8 wlan_idx[4];
+                               __le32 snd_period;      /* ms */
+                       } __packed snd;
+                       struct {
+                               bool ebf;
+                               bool ibf;
+                               u8 rsv;
+                       } __packed type;
+                       struct {
+                               u8 bf_num;
+                               u8 bf_bitmap;
+                               u8 bf_sel[8];
+                               u8 rsv[5];
+                       } __packed mod;
+               };
        } __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
-       struct {
-               u8 action;
-               bool ebf;
-               bool ibf;
-               u8 rsv;
-       } __packed req = {
-               .action = MT_BF_TYPE_UPDATE,
-               .ebf = true,
-               .ibf = dev->ibf,
+               .action = action,
        };
 
-       return mt76_mcu_send_msg(&dev->mt76, MCU_EXT_CMD(TXBF_ACTION), &req,
-                                sizeof(req), true);
-}
-
-int mt7915_mcu_set_txbf_sounding(struct mt7915_dev *dev)
-{
-#define MT_BF_PROCESSING               4
-       struct {
-               u8 action;
-               u8 snd_mode;
-               u8 sta_num;
-               u8 rsv;
-               u8 wlan_idx[4];
-               __le32 snd_period;      /* ms */
-       } __packed req = {
-               .action = true,
-               .snd_mode = MT_BF_PROCESSING,
-       };
+#define MT_BF_PROCESSING       4
+       switch (action) {
+       case MT_BF_SOUNDING_ON:
+               req.snd.snd_mode = MT_BF_PROCESSING;
+               break;
+       case MT_BF_TYPE_UPDATE:
+               req.type.ebf = true;
+               req.type.ibf = dev->ibf;
+               break;
+       case MT_BF_MODULE_UPDATE:
+               req.mod.bf_num = 2;
+               req.mod.bf_bitmap = GENMASK(1, 0);
+               break;
+       default:
+               return -EINVAL;
+       }
 
        return mt76_mcu_send_msg(&dev->mt76, MCU_EXT_CMD(TXBF_ACTION), &req,
                                 sizeof(req), true);
index 70ab06d..9087a77 100644 (file)
@@ -1120,6 +1120,12 @@ enum {
        MT_IBF = BIT(1)         /* implicit beamforming */
 };
 
+enum {
+       MT_BF_SOUNDING_ON = 1,
+       MT_BF_TYPE_UPDATE = 20,
+       MT_BF_MODULE_UPDATE = 25
+};
+
 #define MT7915_WTBL_UPDATE_MAX_SIZE    (sizeof(struct wtbl_req_hdr) +  \
                                         sizeof(struct wtbl_generic) +  \
                                         sizeof(struct wtbl_rx) +       \
index 7833f6e..3f613fa 100644 (file)
@@ -356,9 +356,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_get_txpower_sku(struct mt7915_phy *phy, s8 *txpower, int len);
-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_txbf(struct mt7915_dev *dev, u8 action);
 int mt7915_mcu_set_fcc5_lpn(struct mt7915_dev *dev, int val);
 int mt7915_mcu_set_pulse_th(struct mt7915_dev *dev,
                            const struct mt7915_dfs_pulse *pulse);