mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 07:03:28 -04:00
wifi: mt76: fix 4th chain ACK RSSI bitmask in sta_poll
The per-chain response-frame RSSI values are packed one per byte, but the 4th chain was extracted with GENMASK(31, 14) instead of GENMASK(31, 24). The wrong mask overlaps chains 1-3 and shifts by 14, producing a garbage chain-3 value that corrupts ack_signal/avg_ack_signal on 4x4 radios. Extract the correct byte. Fixes:a71b648e35("wifi: mt76: mt7915: add ack signal support") Fixes:ea5d99d07f("wifi: mt76: mt7996: enable ack signal support") Fixes:67fc7a304b("wifi: mt76: mt7921: add ack signal support") Fixes:c948b5da6b("wifi: mt76: mt7925: add Mediatek Wi-Fi7 driver for mt7925 chips") Link: https://patch.msgid.link/20260722082610.2699628-12-nbd@nbd.name Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
@@ -221,7 +221,7 @@ static void mt7915_mac_sta_poll(struct mt7915_dev *dev)
|
||||
rssi[0] = to_rssi(GENMASK(7, 0), val);
|
||||
rssi[1] = to_rssi(GENMASK(15, 8), val);
|
||||
rssi[2] = to_rssi(GENMASK(23, 16), val);
|
||||
rssi[3] = to_rssi(GENMASK(31, 14), val);
|
||||
rssi[3] = to_rssi(GENMASK(31, 24), val);
|
||||
|
||||
msta->ack_signal =
|
||||
mt76_rx_signal(msta->vif->phy->mt76->antenna_mask, rssi);
|
||||
|
||||
@@ -156,7 +156,7 @@ static void mt7921_mac_sta_poll(struct mt792x_dev *dev)
|
||||
rssi[0] = to_rssi(GENMASK(7, 0), val);
|
||||
rssi[1] = to_rssi(GENMASK(15, 8), val);
|
||||
rssi[2] = to_rssi(GENMASK(23, 16), val);
|
||||
rssi[3] = to_rssi(GENMASK(31, 14), val);
|
||||
rssi[3] = to_rssi(GENMASK(31, 24), val);
|
||||
|
||||
mlink->ack_signal =
|
||||
mt76_rx_signal(msta->vif->phy->mt76->antenna_mask, rssi);
|
||||
|
||||
@@ -152,7 +152,7 @@ static void mt7925_mac_sta_poll(struct mt792x_dev *dev)
|
||||
rssi[0] = to_rssi(GENMASK(7, 0), val);
|
||||
rssi[1] = to_rssi(GENMASK(15, 8), val);
|
||||
rssi[2] = to_rssi(GENMASK(23, 16), val);
|
||||
rssi[3] = to_rssi(GENMASK(31, 14), val);
|
||||
rssi[3] = to_rssi(GENMASK(31, 24), val);
|
||||
|
||||
mlink->ack_signal =
|
||||
mt76_rx_signal(msta->vif->phy->mt76->antenna_mask, rssi);
|
||||
|
||||
@@ -166,7 +166,7 @@ static void mt7996_mac_sta_poll(struct mt7996_dev *dev)
|
||||
rssi[0] = to_rssi(GENMASK(7, 0), val);
|
||||
rssi[1] = to_rssi(GENMASK(15, 8), val);
|
||||
rssi[2] = to_rssi(GENMASK(23, 16), val);
|
||||
rssi[3] = to_rssi(GENMASK(31, 14), val);
|
||||
rssi[3] = to_rssi(GENMASK(31, 24), val);
|
||||
|
||||
mlink = rcu_dereference(msta->vif->mt76.link[wcid->link_id]);
|
||||
if (mlink) {
|
||||
|
||||
Reference in New Issue
Block a user