wifi: mt76: connac: set fixed_bw bit in TX descriptor for fixed rate frames
authorHoward Hsu <howard-yh.hsu@mediatek.com>
Mon, 23 Oct 2023 15:38:51 +0000 (23:38 +0800)
committerFelix Fietkau <nbd@nbd.name>
Thu, 7 Dec 2023 17:50:21 +0000 (18:50 +0100)
Always set the fixed_bw bitfield for fixed rate frames to keep it being
sent with specific bandwidth. Without this change, the bw of fixed rate
frames will still be decided by hardware.

Reported-by: Chank Chen <chank.chen@mediatek.com>
Signed-off-by: Howard Hsu <howard-yh.hsu@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt76_connac3_mac.h
drivers/net/wireless/mediatek/mt76/mt7996/mac.c

index 2250252b2047e72d87616e012ddc302e1df8e7b3..36edf1d3dfcaa9f4f6e7ce0016321adc691712e7 100644 (file)
@@ -239,7 +239,8 @@ enum tx_mgnt_type {
 
 #define MT_TXD6_TX_SRC                 GENMASK(31, 30)
 #define MT_TXD6_VTA                    BIT(28)
-#define MT_TXD6_BW                     GENMASK(25, 22)
+#define MT_TXD6_FIXED_BW               BIT(25)
+#define MT_TXD6_BW                     GENMASK(24, 22)
 #define MT_TXD6_TX_RATE                        GENMASK(21, 16)
 #define MT_TXD6_TIMESTAMP_OFS_EN       BIT(15)
 #define MT_TXD6_TIMESTAMP_OFS_IDX      GENMASK(14, 10)
index 08747f7d54290beb35ab5f3b0ae307449e318c1a..861737fe55cd68f4a1a8e8786ec907af1d0a7356 100644 (file)
@@ -943,7 +943,8 @@ void mt7996_mac_write_txwi(struct mt7996_dev *dev, __le32 *txwi,
                                idx = mvif->basic_rates_idx;
                }
 
-               txwi[6] |= cpu_to_le32(FIELD_PREP(MT_TXD6_TX_RATE, idx));
+               val = FIELD_PREP(MT_TXD6_TX_RATE, idx) | MT_TXD6_FIXED_BW;
+               txwi[6] |= cpu_to_le32(val);
                txwi[3] |= cpu_to_le32(MT_TXD3_BA_DISABLE);
        }
 }