wifi: mt76: connac: fix txd multicast rate setting
authorRyder Lee <ryder.lee@mediatek.com>
Thu, 13 Apr 2023 20:23:29 +0000 (04:23 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 11 May 2023 14:03:24 +0000 (23:03 +0900)
[ Upstream commit 3d2892e05086d09aecf14ea64b2debbf495e313c ]

The vif->bss_conf.mcast_rate should be applied to multicast data frame
only.

Fixes: 182071cdd594 ("mt76: connac: move connac2_mac_write_txwi in mt76_connac module")
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/mediatek/mt76/mt76_connac_mac.c

index 46ede1b..19f02b6 100644 (file)
@@ -539,7 +539,8 @@ void mt76_connac2_mac_write_txwi(struct mt76_dev *dev, __le32 *txwi,
        if (txwi[2] & cpu_to_le32(MT_TXD2_FIX_RATE)) {
                /* Fixed rata is available just for 802.11 txd */
                struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
-               bool multicast = is_multicast_ether_addr(hdr->addr1);
+               bool multicast = ieee80211_is_data(hdr->frame_control) &&
+                                is_multicast_ether_addr(hdr->addr1);
                u16 rate = mt76_connac2_mac_tx_rate_val(mphy, vif, beacon,
                                                        multicast);
                u32 val = MT_TXD6_FIXED_BW;