* [PATCH] mt76: do not report out-of-range rx nss
[not found] <cover.1547909691.git.lorenzo.bianconi@redhat.com>
@ 2019-01-19 15:00 ` Lorenzo Bianconi
2019-01-21 20:49 ` Felix Fietkau
0 siblings, 1 reply; 2+ messages in thread
From: Lorenzo Bianconi @ 2019-01-19 15:00 UTC (permalink / raw)
To: nbd; +Cc: linux-wireless, sgruszka
Take into account device rx stream in mt76x02_mac_process_rate
in order to not report wrong number of rx spatial stream to mac80211.
The issue has been reported on mt76x0 device which is 1x1:1 however
the hw sometimes reports rx nss equal to 2
Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
---
drivers/net/wireless/mediatek/mt76/mt76x02_mac.c | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_mac.c b/drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
index 68d01e136fa0..ce9bb702045f 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
@@ -476,7 +476,9 @@ void mt76x02_send_tx_status(struct mt76x02_dev *dev,
}
static int
-mt76x02_mac_process_rate(struct mt76_rx_status *status, u16 rate)
+mt76x02_mac_process_rate(struct mt76x02_dev *dev,
+ struct mt76_rx_status *status,
+ u16 rate)
{
u8 idx = FIELD_GET(MT_RXWI_RATE_INDEX, rate);
@@ -508,11 +510,15 @@ mt76x02_mac_process_rate(struct mt76_rx_status *status, u16 rate)
status->encoding = RX_ENC_HT;
status->rate_idx = idx;
break;
- case MT_PHY_TYPE_VHT:
+ case MT_PHY_TYPE_VHT: {
+ u8 n_rxstream = dev->mt76.chainmask & 0xf;
+
status->encoding = RX_ENC_VHT;
status->rate_idx = FIELD_GET(MT_RATE_INDEX_VHT_IDX, idx);
- status->nss = FIELD_GET(MT_RATE_INDEX_VHT_NSS, idx) + 1;
+ status->nss = min_t(u8, n_rxstream,
+ FIELD_GET(MT_RATE_INDEX_VHT_NSS, idx) + 1);
break;
+ }
default:
return -EINVAL;
}
@@ -656,7 +662,7 @@ int mt76x02_mac_process_rx(struct mt76x02_dev *dev, struct sk_buff *skb,
status->tid = FIELD_GET(MT_RXWI_TID, tid_sn);
status->seqno = FIELD_GET(MT_RXWI_SN, tid_sn);
- return mt76x02_mac_process_rate(status, rate);
+ return mt76x02_mac_process_rate(dev, status, rate);
}
void mt76x02_mac_poll_tx_status(struct mt76x02_dev *dev, bool irq)
--
2.20.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] mt76: do not report out-of-range rx nss
2019-01-19 15:00 ` [PATCH] mt76: do not report out-of-range rx nss Lorenzo Bianconi
@ 2019-01-21 20:49 ` Felix Fietkau
0 siblings, 0 replies; 2+ messages in thread
From: Felix Fietkau @ 2019-01-21 20:49 UTC (permalink / raw)
To: Lorenzo Bianconi; +Cc: linux-wireless, sgruszka
On 2019-01-19 16:00, Lorenzo Bianconi wrote:
> Take into account device rx stream in mt76x02_mac_process_rate
> in order to not report wrong number of rx spatial stream to mac80211.
> The issue has been reported on mt76x0 device which is 1x1:1 however
> the hw sometimes reports rx nss equal to 2
>
> Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Applied, thanks.
- Felix
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-01-21 20:49 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <cover.1547909691.git.lorenzo.bianconi@redhat.com>
2019-01-19 15:00 ` [PATCH] mt76: do not report out-of-range rx nss Lorenzo Bianconi
2019-01-21 20:49 ` Felix Fietkau
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).