| From 15d734c77b25451efdf3bb1bcd5e687bc429a852 Mon Sep 17 00:00:00 2001 |
| From: Shayne Chen <shayne.chen@mediatek.com> |
| Date: Fri, 10 Feb 2023 17:39:23 +0800 |
| Subject: [PATCH 01/11] wifi: mt76: mt7996: add eht rx rate support |
| |
| Add support to report eht rx rate. |
| |
| Change-Id: Iee067d891bd634a918c942c2ba90ae72cd40c538 |
| Signed-off-by: Shayne Chen <shayne.chen@mediatek.com> |
| --- |
| mac80211.c | 11 ++++++++--- |
| mt76.h | 18 ++++++++++++++---- |
| mt7996/mac.c | 9 +++++---- |
| 3 files changed, 27 insertions(+), 11 deletions(-) |
| |
| diff --git a/mac80211.c b/mac80211.c |
| index 2c4a5290..467afef9 100644 |
| --- a/mac80211.c |
| +++ b/mac80211.c |
| @@ -1067,9 +1067,14 @@ mt76_rx_convert(struct mt76_dev *dev, struct sk_buff *skb, |
| status->enc_flags = mstat.enc_flags; |
| status->encoding = mstat.encoding; |
| status->bw = mstat.bw; |
| - status->he_ru = mstat.he_ru; |
| - status->he_gi = mstat.he_gi; |
| - status->he_dcm = mstat.he_dcm; |
| + if (status->encoding == RX_ENC_EHT) { |
| + status->eht.ru = mstat.eht.ru; |
| + status->eht.gi = mstat.eht.gi; |
| + } else { |
| + status->he_ru = mstat.he_ru; |
| + status->he_gi = mstat.he_gi; |
| + status->he_dcm = mstat.he_dcm; |
| + } |
| status->rate_idx = mstat.rate_idx; |
| status->nss = mstat.nss; |
| status->band = mstat.band; |
| diff --git a/mt76.h b/mt76.h |
| index 8b4635e9..6b07b8fa 100644 |
| --- a/mt76.h |
| +++ b/mt76.h |
| @@ -621,12 +621,22 @@ struct mt76_rx_status { |
| u16 freq; |
| u32 flag; |
| u8 enc_flags; |
| - u8 encoding:2, bw:3, he_ru:3; |
| - u8 he_gi:2, he_dcm:1; |
| + u8 encoding:3, bw:4; |
| + union { |
| + struct { |
| + u8 he_ru:3; |
| + u8 he_gi:2; |
| + u8 he_dcm:1; |
| + }; |
| + struct { |
| + u8 ru:4; |
| + u8 gi:2; |
| + } eht; |
| + }; |
| + |
| u8 amsdu:1, first_amsdu:1, last_amsdu:1; |
| u8 rate_idx; |
| - u8 nss; |
| - u8 band; |
| + u8 nss:5, band:3; |
| s8 signal; |
| u8 chains; |
| s8 chain_signal[IEEE80211_MAX_CHAINS]; |
| diff --git a/mt7996/mac.c b/mt7996/mac.c |
| index 0d51090d..23cbfdde 100644 |
| --- a/mt7996/mac.c |
| +++ b/mt7996/mac.c |
| @@ -580,11 +580,12 @@ mt7996_mac_fill_rx_rate(struct mt7996_dev *dev, |
| case MT_PHY_TYPE_EHT_SU: |
| case MT_PHY_TYPE_EHT_TRIG: |
| case MT_PHY_TYPE_EHT_MU: |
| - /* TODO: currently report rx rate with HE rate */ |
| status->nss = nss; |
| - status->encoding = RX_ENC_HE; |
| - bw = min_t(int, bw, IEEE80211_STA_RX_BW_160); |
| - i = min_t(int, i & 0xf, 11); |
| + status->encoding = RX_ENC_EHT; |
| + i &= GENMASK(3, 0); |
| + |
| + if (gi <= NL80211_RATE_INFO_EHT_GI_3_2) |
| + status->eht.gi = gi; |
| break; |
| default: |
| return -EINVAL; |
| -- |
| 2.39.2 |
| |