]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
wifi: mt76: connac: update nss calculation in txs
authorEvelyn Tsai <evelyn.tsai@mediatek.com>
Fri, 11 Nov 2022 07:36:15 +0000 (15:36 +0800)
committerFelix Fietkau <nbd@nbd.name>
Thu, 1 Dec 2022 16:29:13 +0000 (17:29 +0100)
The hardware reports the number of transmitting antennas not the actual
number of spatial streams

Co-developed-by: Peter Chiu <chui-hao.chiu@mediatek.com>
Signed-off-by: Peter Chiu <chui-hao.chiu@mediatek.com>
Signed-off-by: Evelyn Tsai <evelyn.tsai@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt76_connac_mac.c

index 8b7ec64abc95e809ad092c2799dfa86b08f179d7..fd60123fb2840a2457779ef4466cf16f78b9e2d9 100644 (file)
@@ -567,7 +567,7 @@ bool mt76_connac2_mac_fill_txs(struct mt76_dev *dev, struct mt76_wcid *wcid,
        struct mt76_phy *mphy;
        struct rate_info rate = {};
        bool cck = false;
-       u32 txrate, txs, mode;
+       u32 txrate, txs, mode, stbc;
 
        txs = le32_to_cpu(txs_data[0]);
 
@@ -587,6 +587,10 @@ bool mt76_connac2_mac_fill_txs(struct mt76_dev *dev, struct mt76_wcid *wcid,
 
        rate.mcs = FIELD_GET(MT_TX_RATE_IDX, txrate);
        rate.nss = FIELD_GET(MT_TX_RATE_NSS, txrate) + 1;
+       stbc = FIELD_GET(MT_TX_RATE_STBC, txrate);
+
+       if (stbc && rate.nss > 1)
+               rate.nss >>= 1;
 
        if (rate.nss - 1 < ARRAY_SIZE(stats->tx_nss))
                stats->tx_nss[rate.nss - 1]++;