wifi: mt76: mt7996: fix size of txpower MCU command
authorChad Monroe <chad@monroe.io>
Tue, 5 Mar 2024 17:55:35 +0000 (17:55 +0000)
committerFelix Fietkau <nbd@nbd.name>
Thu, 2 May 2024 10:44:50 +0000 (12:44 +0200)
Fixes issues with scanning and low power output at some rates.

Fixes: f75e4779d215 ("wifi: mt76: mt7996: add txpower setting support")
Signed-off-by: Chad Monroe <chad@monroe.io>
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c
drivers/net/wireless/mediatek/mt76/mt7996/mt7996.h

index b44abe2..cfb5a7d 100644 (file)
@@ -4464,7 +4464,7 @@ int mt7996_mcu_set_txpower_sku(struct mt7996_phy *phy)
                u8 band_idx;
        } __packed req = {
                .tag = cpu_to_le16(UNI_TXPOWER_POWER_LIMIT_TABLE_CTRL),
-               .len = cpu_to_le16(sizeof(req) + MT7996_SKU_RATE_NUM - 4),
+               .len = cpu_to_le16(sizeof(req) + MT7996_SKU_PATH_NUM - 4),
                .power_ctrl_id = UNI_TXPOWER_POWER_LIMIT_TABLE_CTRL,
                .power_limit_type = TX_POWER_LIMIT_TABLE_RATE,
                .band_idx = phy->mt76->band_idx,
@@ -4479,7 +4479,7 @@ int mt7996_mcu_set_txpower_sku(struct mt7996_phy *phy)
        mphy->txpower_cur = tx_power;
 
        skb = mt76_mcu_msg_alloc(&dev->mt76, NULL,
-                                sizeof(req) + MT7996_SKU_RATE_NUM);
+                                sizeof(req) + MT7996_SKU_PATH_NUM);
        if (!skb)
                return -ENOMEM;
 
@@ -4503,6 +4503,9 @@ int mt7996_mcu_set_txpower_sku(struct mt7996_phy *phy)
        /* eht */
        skb_put_data(skb, &la.eht[0], sizeof(la.eht));
 
+       /* padding */
+       skb_put_zero(skb, MT7996_SKU_PATH_NUM - MT7996_SKU_RATE_NUM);
+
        return mt76_mcu_skb_send_msg(&dev->mt76, skb,
                                     MCU_WM_UNI_CMD(TXPOWER), true);
 }
index 36d1f24..ddeb40d 100644 (file)
@@ -50,6 +50,7 @@
 #define MT7996_CFEND_RATE_11B          0x03    /* 11B LP, 11M */
 
 #define MT7996_SKU_RATE_NUM            417
+#define MT7996_SKU_PATH_NUM            494
 
 #define MT7996_MAX_TWT_AGRT            16
 #define MT7996_MAX_STA_TWT_AGRT                8