diff options
| -rw-r--r-- | drivers/net/wireless/mediatek/mt76/mac80211.c | 11 | ||||
| -rw-r--r-- | drivers/net/wireless/mediatek/mt76/mt76.h | 18 | ||||
| -rw-r--r-- | drivers/net/wireless/mediatek/mt76/mt7996/mac.c | 9 | 
3 files changed, 27 insertions, 11 deletions
| diff --git a/drivers/net/wireless/mediatek/mt76/mac80211.c b/drivers/net/wireless/mediatek/mt76/mac80211.c index 87902f4b8e12..e53166fcdc9d 100644 --- a/drivers/net/wireless/mediatek/mt76/mac80211.c +++ b/drivers/net/wireless/mediatek/mt76/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/drivers/net/wireless/mediatek/mt76/mt76.h b/drivers/net/wireless/mediatek/mt76/mt76.h index 183b0fc5a2d4..c3d1313e2f20 100644 --- a/drivers/net/wireless/mediatek/mt76/mt76.h +++ b/drivers/net/wireless/mediatek/mt76/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/drivers/net/wireless/mediatek/mt76/mt7996/mac.c b/drivers/net/wireless/mediatek/mt76/mt7996/mac.c index 3c3506c7c87a..d811b4e01800 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7996/mac.c +++ b/drivers/net/wireless/mediatek/mt76/mt7996/mac.c @@ -572,11 +572,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; | 
