From a1d426d8bb909612b66c31d450fd717177862d2f Mon Sep 17 00:00:00 2001
From: Bo Jiao <Bo.Jiao@mediatek.com>
Date: Sun, 25 Dec 2022 22:43:46 +0800
Subject: [PATCH 101/102] mac80211: mtk: add rate duration for EHT rate.

---
 net/mac80211/airtime.c | 349 ++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 346 insertions(+), 3 deletions(-)

diff --git a/net/mac80211/airtime.c b/net/mac80211/airtime.c
index e8ebd34..b1de6d0 100644
--- a/net/mac80211/airtime.c
+++ b/net/mac80211/airtime.c
@@ -55,10 +55,21 @@
 #define HE_DURATION_S(shift, streams, gi, bps)		\
 	(HE_DURATION(streams, gi, bps) >> shift)
 
+/* Transmit duration for the raw data part of an average sized packet */
+#define EHT_GI_08 HE_GI_08
+#define EHT_GI_16 HE_GI_16
+#define EHT_GI_32 HE_GI_32
+
+#define EHT_DURATION(streams, gi, bps)			\
+	HE_DURATION(streams, gi, bps)
+#define EHT_DURATION_S(shift, streams, gi, bps)		\
+	HE_DURATION_S(shift, streams, gi, bps)
+
 #define BW_20			0
 #define BW_40			1
 #define BW_80			2
 #define BW_160			3
+#define BW_320			4
 
 /*
  * Define group sort order: HT40 -> SGI -> #streams
@@ -68,17 +79,26 @@
 #define IEEE80211_VHT_STREAM_GROUPS	8 /* BW(=4) * SGI(=2) */
 
 #define IEEE80211_HE_MAX_STREAMS	8
+#define IEEE80211_HE_STREAM_GROUPS	12 /* BW(=4) * GI(=3) */
+
+#define IEEE80211_EHT_MAX_STREAMS	16
+#define IEEE80211_EHT_STREAM_GROUPS	15 /* BW(=5) * GI(=3) */
 
 #define IEEE80211_HT_GROUPS_NB	(IEEE80211_MAX_STREAMS *	\
 				 IEEE80211_HT_STREAM_GROUPS)
 #define IEEE80211_VHT_GROUPS_NB	(IEEE80211_MAX_STREAMS *	\
 					 IEEE80211_VHT_STREAM_GROUPS)
+#define IEEE80211_HE_GROUPS_NB	(IEEE80211_HE_MAX_STREAMS *	\
+				 IEEE80211_HE_STREAM_GROUPS)
+#define IEEE80211_EHT_GROUPS_NB	(IEEE80211_EHT_MAX_STREAMS *	\
+				 IEEE80211_EHT_STREAM_GROUPS)
 
 #define IEEE80211_HT_GROUP_0	0
 #define IEEE80211_VHT_GROUP_0	(IEEE80211_HT_GROUP_0 + IEEE80211_HT_GROUPS_NB)
 #define IEEE80211_HE_GROUP_0	(IEEE80211_VHT_GROUP_0 + IEEE80211_VHT_GROUPS_NB)
+#define IEEE80211_EHT_GROUP_0	(IEEE80211_HE_GROUP_0 + IEEE80211_HE_GROUPS_NB)
 
-#define MCS_GROUP_RATES		12
+#define MCS_GROUP_RATES		14
 
 #define HT_GROUP_IDX(_streams, _sgi, _ht40)	\
 	IEEE80211_HT_GROUP_0 +			\
@@ -203,6 +223,59 @@
 #define HE_GROUP(_streams, _gi, _bw)					\
 	__HE_GROUP(_streams, _gi, _bw,				\
 		   HE_GROUP_SHIFT(_streams, _gi, _bw))
+
+#define EHT_BW2VBPS(_bw, r5, r4, r3, r2, r1)					\
+	(_bw == BW_320 ? r5 : _bw == BW_160 ? r4 : _bw == BW_80 ? r3 : _bw == BW_40 ? r2 : r1)
+
+#define EHT_GROUP_IDX(_streams, _gi, _bw)				\
+	(IEEE80211_EHT_GROUP_0 +					\
+	 IEEE80211_EHT_MAX_STREAMS * 3 * (_bw) +			\
+	 IEEE80211_EHT_MAX_STREAMS * (_gi) +				\
+	 (_streams) - 1)
+
+#define __EHT_GROUP(_streams, _gi, _bw, _s)				\
+	[EHT_GROUP_IDX(_streams, _gi, _bw)] = {			\
+	.shift = _s,							\
+	.duration = {							\
+		EHT_DURATION_S(_s, _streams, _gi,			\
+			      EHT_BW2VBPS(_bw,   1960,   979,  489,  230,  115)),	\
+		EHT_DURATION_S(_s, _streams, _gi,			\
+			      EHT_BW2VBPS(_bw,   3920,  1958,  979,  475,  230)),	\
+		EHT_DURATION_S(_s, _streams, _gi,			\
+			      EHT_BW2VBPS(_bw,   5880,  2937, 1468,  705,  345)),	\
+		EHT_DURATION_S(_s, _streams, _gi,			\
+			      EHT_BW2VBPS(_bw,   7840,  3916, 1958,  936,  475)),	\
+		EHT_DURATION_S(_s, _streams, _gi,			\
+			      EHT_BW2VBPS(_bw,  11760,  5875, 2937, 1411,  705)),	\
+		EHT_DURATION_S(_s, _streams, _gi,			\
+			      EHT_BW2VBPS(_bw,  15680,  7833, 3916, 1872,  936)),	\
+		EHT_DURATION_S(_s, _streams, _gi,			\
+			      EHT_BW2VBPS(_bw,  17640,  8827, 4406, 2102, 1051)),	\
+		EHT_DURATION_S(_s, _streams, _gi,			\
+			      EHT_BW2VBPS(_bw,  19600,  9806, 4896, 2347, 1166)),	\
+		EHT_DURATION_S(_s, _streams, _gi,			\
+			      EHT_BW2VBPS(_bw,  23520, 11764, 5875, 2808, 1411)),	\
+		EHT_DURATION_S(_s, _streams, _gi,			\
+			      EHT_BW2VBPS(_bw,  26133, 13060, 6523, 3124, 1555)),	\
+		EHT_DURATION_S(_s, _streams, _gi,			\
+			      EHT_BW2VBPS(_bw,  29400, 14702, 7344, 3513, 1756)),	\
+		EHT_DURATION_S(_s, _streams, _gi,			\
+			      EHT_BW2VBPS(_bw,  32666, 16329, 8164, 3902, 1944)),	\
+		EHT_DURATION_S(_s, _streams, _gi,			\
+			      EHT_BW2VBPS(_bw,  35280, 17640, 8820, 4212, 2106)),	\
+		EHT_DURATION_S(_s, _streams, _gi,			\
+			      EHT_BW2VBPS(_bw,  39200, 19600, 9800, 4680, 2340))	\
+        }								\
+}
+
+#define EHT_GROUP_SHIFT(_streams, _gi, _bw)				\
+	GROUP_SHIFT(EHT_DURATION(_streams, _gi,			\
+				EHT_BW2VBPS(_bw,   1960,   979,  489,  230,  115)))
+
+#define EHT_GROUP(_streams, _gi, _bw)					\
+	__EHT_GROUP(_streams, _gi, _bw,				\
+		   EHT_GROUP_SHIFT(_streams, _gi, _bw))
+
 struct mcs_group {
 	u8 shift;
 	u16 duration[MCS_GROUP_RATES];
@@ -376,6 +449,262 @@ static const struct mcs_group airtime_mcs_groups[] = {
 	HE_GROUP(6, HE_GI_32, BW_160),
 	HE_GROUP(7, HE_GI_32, BW_160),
 	HE_GROUP(8, HE_GI_32, BW_160),
+
+	/* EHT */
+	EHT_GROUP( 1, EHT_GI_08, BW_20),
+	EHT_GROUP( 2, EHT_GI_08, BW_20),
+	EHT_GROUP( 3, EHT_GI_08, BW_20),
+	EHT_GROUP( 4, EHT_GI_08, BW_20),
+	EHT_GROUP( 5, EHT_GI_08, BW_20),
+	EHT_GROUP( 6, EHT_GI_08, BW_20),
+	EHT_GROUP( 7, EHT_GI_08, BW_20),
+	EHT_GROUP( 8, EHT_GI_08, BW_20),
+	EHT_GROUP( 9, EHT_GI_08, BW_20),
+	EHT_GROUP(10, EHT_GI_08, BW_20),
+	EHT_GROUP(11, EHT_GI_08, BW_20),
+	EHT_GROUP(12, EHT_GI_08, BW_20),
+	EHT_GROUP(13, EHT_GI_08, BW_20),
+	EHT_GROUP(14, EHT_GI_08, BW_20),
+	EHT_GROUP(15, EHT_GI_08, BW_20),
+	EHT_GROUP(16, EHT_GI_08, BW_20),
+
+	EHT_GROUP( 1, EHT_GI_16, BW_20),
+	EHT_GROUP( 2, EHT_GI_16, BW_20),
+	EHT_GROUP( 3, EHT_GI_16, BW_20),
+	EHT_GROUP( 4, EHT_GI_16, BW_20),
+	EHT_GROUP( 5, EHT_GI_16, BW_20),
+	EHT_GROUP( 6, EHT_GI_16, BW_20),
+	EHT_GROUP( 7, EHT_GI_16, BW_20),
+	EHT_GROUP( 8, EHT_GI_16, BW_20),
+	EHT_GROUP( 9, EHT_GI_16, BW_20),
+	EHT_GROUP(10, EHT_GI_16, BW_20),
+	EHT_GROUP(11, EHT_GI_16, BW_20),
+	EHT_GROUP(12, EHT_GI_16, BW_20),
+	EHT_GROUP(13, EHT_GI_16, BW_20),
+	EHT_GROUP(14, EHT_GI_16, BW_20),
+	EHT_GROUP(15, EHT_GI_16, BW_20),
+	EHT_GROUP(16, EHT_GI_16, BW_20),
+
+	EHT_GROUP( 1, EHT_GI_32, BW_20),
+	EHT_GROUP( 2, EHT_GI_32, BW_20),
+	EHT_GROUP( 3, EHT_GI_32, BW_20),
+	EHT_GROUP( 4, EHT_GI_32, BW_20),
+	EHT_GROUP( 5, EHT_GI_32, BW_20),
+	EHT_GROUP( 6, EHT_GI_32, BW_20),
+	EHT_GROUP( 7, EHT_GI_32, BW_20),
+	EHT_GROUP( 8, EHT_GI_32, BW_20),
+	EHT_GROUP( 9, EHT_GI_32, BW_20),
+	EHT_GROUP(10, EHT_GI_32, BW_20),
+	EHT_GROUP(11, EHT_GI_32, BW_20),
+	EHT_GROUP(12, EHT_GI_32, BW_20),
+	EHT_GROUP(13, EHT_GI_32, BW_20),
+	EHT_GROUP(14, EHT_GI_32, BW_20),
+	EHT_GROUP(15, EHT_GI_32, BW_20),
+	EHT_GROUP(16, EHT_GI_32, BW_20),
+
+	EHT_GROUP( 1, EHT_GI_08, BW_40),
+	EHT_GROUP( 2, EHT_GI_08, BW_40),
+	EHT_GROUP( 3, EHT_GI_08, BW_40),
+	EHT_GROUP( 4, EHT_GI_08, BW_40),
+	EHT_GROUP( 5, EHT_GI_08, BW_40),
+	EHT_GROUP( 6, EHT_GI_08, BW_40),
+	EHT_GROUP( 7, EHT_GI_08, BW_40),
+	EHT_GROUP( 8, EHT_GI_08, BW_40),
+	EHT_GROUP( 9, EHT_GI_08, BW_40),
+	EHT_GROUP(10, EHT_GI_08, BW_40),
+	EHT_GROUP(11, EHT_GI_08, BW_40),
+	EHT_GROUP(12, EHT_GI_08, BW_40),
+	EHT_GROUP(13, EHT_GI_08, BW_40),
+	EHT_GROUP(14, EHT_GI_08, BW_40),
+	EHT_GROUP(15, EHT_GI_08, BW_40),
+	EHT_GROUP(16, EHT_GI_08, BW_40),
+
+	EHT_GROUP( 1, EHT_GI_16, BW_40),
+	EHT_GROUP( 2, EHT_GI_16, BW_40),
+	EHT_GROUP( 3, EHT_GI_16, BW_40),
+	EHT_GROUP( 4, EHT_GI_16, BW_40),
+	EHT_GROUP( 5, EHT_GI_16, BW_40),
+	EHT_GROUP( 6, EHT_GI_16, BW_40),
+	EHT_GROUP( 7, EHT_GI_16, BW_40),
+	EHT_GROUP( 8, EHT_GI_16, BW_40),
+	EHT_GROUP( 9, EHT_GI_16, BW_40),
+	EHT_GROUP(10, EHT_GI_16, BW_40),
+	EHT_GROUP(11, EHT_GI_16, BW_40),
+	EHT_GROUP(12, EHT_GI_16, BW_40),
+	EHT_GROUP(13, EHT_GI_16, BW_40),
+	EHT_GROUP(14, EHT_GI_16, BW_40),
+	EHT_GROUP(15, EHT_GI_16, BW_40),
+	EHT_GROUP(16, EHT_GI_16, BW_40),
+
+	EHT_GROUP( 1, EHT_GI_32, BW_40),
+	EHT_GROUP( 2, EHT_GI_32, BW_40),
+	EHT_GROUP( 3, EHT_GI_32, BW_40),
+	EHT_GROUP( 4, EHT_GI_32, BW_40),
+	EHT_GROUP( 5, EHT_GI_32, BW_40),
+	EHT_GROUP( 6, EHT_GI_32, BW_40),
+	EHT_GROUP( 7, EHT_GI_32, BW_40),
+	EHT_GROUP( 8, EHT_GI_32, BW_40),
+	EHT_GROUP( 9, EHT_GI_32, BW_40),
+	EHT_GROUP(10, EHT_GI_32, BW_40),
+	EHT_GROUP(11, EHT_GI_32, BW_40),
+	EHT_GROUP(12, EHT_GI_32, BW_40),
+	EHT_GROUP(13, EHT_GI_32, BW_40),
+	EHT_GROUP(14, EHT_GI_32, BW_40),
+	EHT_GROUP(15, EHT_GI_32, BW_40),
+	EHT_GROUP(16, EHT_GI_32, BW_40),
+
+	EHT_GROUP( 1, EHT_GI_08, BW_80),
+	EHT_GROUP( 2, EHT_GI_08, BW_80),
+	EHT_GROUP( 3, EHT_GI_08, BW_80),
+	EHT_GROUP( 4, EHT_GI_08, BW_80),
+	EHT_GROUP( 5, EHT_GI_08, BW_80),
+	EHT_GROUP( 6, EHT_GI_08, BW_80),
+	EHT_GROUP( 7, EHT_GI_08, BW_80),
+	EHT_GROUP( 8, EHT_GI_08, BW_80),
+	EHT_GROUP( 9, EHT_GI_08, BW_80),
+	EHT_GROUP(10, EHT_GI_08, BW_80),
+	EHT_GROUP(11, EHT_GI_08, BW_80),
+	EHT_GROUP(12, EHT_GI_08, BW_80),
+	EHT_GROUP(13, EHT_GI_08, BW_80),
+	EHT_GROUP(14, EHT_GI_08, BW_80),
+	EHT_GROUP(15, EHT_GI_08, BW_80),
+	EHT_GROUP(16, EHT_GI_08, BW_80),
+
+	EHT_GROUP( 1, EHT_GI_16, BW_80),
+	EHT_GROUP( 2, EHT_GI_16, BW_80),
+	EHT_GROUP( 3, EHT_GI_16, BW_80),
+	EHT_GROUP( 4, EHT_GI_16, BW_80),
+	EHT_GROUP( 5, EHT_GI_16, BW_80),
+	EHT_GROUP( 6, EHT_GI_16, BW_80),
+	EHT_GROUP( 7, EHT_GI_16, BW_80),
+	EHT_GROUP( 8, EHT_GI_16, BW_80),
+	EHT_GROUP( 9, EHT_GI_16, BW_80),
+	EHT_GROUP(10, EHT_GI_16, BW_80),
+	EHT_GROUP(11, EHT_GI_16, BW_80),
+	EHT_GROUP(12, EHT_GI_16, BW_80),
+	EHT_GROUP(13, EHT_GI_16, BW_80),
+	EHT_GROUP(14, EHT_GI_16, BW_80),
+	EHT_GROUP(15, EHT_GI_16, BW_80),
+	EHT_GROUP(16, EHT_GI_16, BW_80),
+
+	EHT_GROUP( 1, EHT_GI_32, BW_80),
+	EHT_GROUP( 2, EHT_GI_32, BW_80),
+	EHT_GROUP( 3, EHT_GI_32, BW_80),
+	EHT_GROUP( 4, EHT_GI_32, BW_80),
+	EHT_GROUP( 5, EHT_GI_32, BW_80),
+	EHT_GROUP( 6, EHT_GI_32, BW_80),
+	EHT_GROUP( 7, EHT_GI_32, BW_80),
+	EHT_GROUP( 8, EHT_GI_32, BW_80),
+	EHT_GROUP( 9, EHT_GI_32, BW_80),
+	EHT_GROUP(10, EHT_GI_32, BW_80),
+	EHT_GROUP(11, EHT_GI_32, BW_80),
+	EHT_GROUP(12, EHT_GI_32, BW_80),
+	EHT_GROUP(13, EHT_GI_32, BW_80),
+	EHT_GROUP(14, EHT_GI_32, BW_80),
+	EHT_GROUP(15, EHT_GI_32, BW_80),
+	EHT_GROUP(16, EHT_GI_32, BW_80),
+
+	EHT_GROUP( 1, EHT_GI_08, BW_160),
+	EHT_GROUP( 2, EHT_GI_08, BW_160),
+	EHT_GROUP( 3, EHT_GI_08, BW_160),
+	EHT_GROUP( 4, EHT_GI_08, BW_160),
+	EHT_GROUP( 5, EHT_GI_08, BW_160),
+	EHT_GROUP( 6, EHT_GI_08, BW_160),
+	EHT_GROUP( 7, EHT_GI_08, BW_160),
+	EHT_GROUP( 8, EHT_GI_08, BW_160),
+	EHT_GROUP( 9, EHT_GI_08, BW_160),
+	EHT_GROUP(10, EHT_GI_08, BW_160),
+	EHT_GROUP(11, EHT_GI_08, BW_160),
+	EHT_GROUP(12, EHT_GI_08, BW_160),
+	EHT_GROUP(13, EHT_GI_08, BW_160),
+	EHT_GROUP(14, EHT_GI_08, BW_160),
+	EHT_GROUP(15, EHT_GI_08, BW_160),
+	EHT_GROUP(16, EHT_GI_08, BW_160),
+
+	EHT_GROUP( 1, EHT_GI_16, BW_160),
+	EHT_GROUP( 2, EHT_GI_16, BW_160),
+	EHT_GROUP( 3, EHT_GI_16, BW_160),
+	EHT_GROUP( 4, EHT_GI_16, BW_160),
+	EHT_GROUP( 5, EHT_GI_16, BW_160),
+	EHT_GROUP( 6, EHT_GI_16, BW_160),
+	EHT_GROUP( 7, EHT_GI_16, BW_160),
+	EHT_GROUP( 8, EHT_GI_16, BW_160),
+	EHT_GROUP( 9, EHT_GI_16, BW_160),
+	EHT_GROUP(10, EHT_GI_16, BW_160),
+	EHT_GROUP(11, EHT_GI_16, BW_160),
+	EHT_GROUP(12, EHT_GI_16, BW_160),
+	EHT_GROUP(13, EHT_GI_16, BW_160),
+	EHT_GROUP(14, EHT_GI_16, BW_160),
+	EHT_GROUP(15, EHT_GI_16, BW_160),
+	EHT_GROUP(16, EHT_GI_16, BW_160),
+
+	EHT_GROUP( 1, EHT_GI_32, BW_160),
+	EHT_GROUP( 2, EHT_GI_32, BW_160),
+	EHT_GROUP( 3, EHT_GI_32, BW_160),
+	EHT_GROUP( 4, EHT_GI_32, BW_160),
+	EHT_GROUP( 5, EHT_GI_32, BW_160),
+	EHT_GROUP( 6, EHT_GI_32, BW_160),
+	EHT_GROUP( 7, EHT_GI_32, BW_160),
+	EHT_GROUP( 8, EHT_GI_32, BW_160),
+	EHT_GROUP( 9, EHT_GI_32, BW_160),
+	EHT_GROUP(10, EHT_GI_32, BW_160),
+	EHT_GROUP(11, EHT_GI_32, BW_160),
+	EHT_GROUP(12, EHT_GI_32, BW_160),
+	EHT_GROUP(13, EHT_GI_32, BW_160),
+	EHT_GROUP(14, EHT_GI_32, BW_160),
+	EHT_GROUP(15, EHT_GI_32, BW_160),
+	EHT_GROUP(16, EHT_GI_32, BW_160),
+
+	EHT_GROUP( 1, EHT_GI_08, BW_320),
+	EHT_GROUP( 2, EHT_GI_08, BW_320),
+	EHT_GROUP( 3, EHT_GI_08, BW_320),
+	EHT_GROUP( 4, EHT_GI_08, BW_320),
+	EHT_GROUP( 5, EHT_GI_08, BW_320),
+	EHT_GROUP( 6, EHT_GI_08, BW_320),
+	EHT_GROUP( 7, EHT_GI_08, BW_320),
+	EHT_GROUP( 8, EHT_GI_08, BW_320),
+	EHT_GROUP( 9, EHT_GI_08, BW_320),
+	EHT_GROUP(10, EHT_GI_08, BW_320),
+	EHT_GROUP(11, EHT_GI_08, BW_320),
+	EHT_GROUP(12, EHT_GI_08, BW_320),
+	EHT_GROUP(13, EHT_GI_08, BW_320),
+	EHT_GROUP(14, EHT_GI_08, BW_320),
+	EHT_GROUP(15, EHT_GI_08, BW_320),
+	EHT_GROUP(16, EHT_GI_08, BW_320),
+
+	EHT_GROUP( 1, EHT_GI_16, BW_320),
+	EHT_GROUP( 2, EHT_GI_16, BW_320),
+	EHT_GROUP( 3, EHT_GI_16, BW_320),
+	EHT_GROUP( 4, EHT_GI_16, BW_320),
+	EHT_GROUP( 5, EHT_GI_16, BW_320),
+	EHT_GROUP( 6, EHT_GI_16, BW_320),
+	EHT_GROUP( 7, EHT_GI_16, BW_320),
+	EHT_GROUP( 8, EHT_GI_16, BW_320),
+	EHT_GROUP( 9, EHT_GI_16, BW_320),
+	EHT_GROUP(10, EHT_GI_16, BW_320),
+	EHT_GROUP(11, EHT_GI_16, BW_320),
+	EHT_GROUP(12, EHT_GI_16, BW_320),
+	EHT_GROUP(13, EHT_GI_16, BW_320),
+	EHT_GROUP(14, EHT_GI_16, BW_320),
+	EHT_GROUP(15, EHT_GI_16, BW_320),
+	EHT_GROUP(16, EHT_GI_16, BW_320),
+
+	EHT_GROUP( 1, EHT_GI_32, BW_320),
+	EHT_GROUP( 2, EHT_GI_32, BW_320),
+	EHT_GROUP( 3, EHT_GI_32, BW_320),
+	EHT_GROUP( 4, EHT_GI_32, BW_320),
+	EHT_GROUP( 5, EHT_GI_32, BW_320),
+	EHT_GROUP( 6, EHT_GI_32, BW_320),
+	EHT_GROUP( 7, EHT_GI_32, BW_320),
+	EHT_GROUP( 8, EHT_GI_32, BW_320),
+	EHT_GROUP( 9, EHT_GI_32, BW_320),
+	EHT_GROUP(10, EHT_GI_32, BW_320),
+	EHT_GROUP(11, EHT_GI_32, BW_320),
+	EHT_GROUP(12, EHT_GI_32, BW_320),
+	EHT_GROUP(13, EHT_GI_32, BW_320),
+	EHT_GROUP(14, EHT_GI_32, BW_320),
+	EHT_GROUP(15, EHT_GI_32, BW_320),
+	EHT_GROUP(16, EHT_GI_32, BW_320),
 };
 
 static u32
@@ -422,6 +751,9 @@ static u32 ieee80211_get_rate_duration(struct ieee80211_hw *hw,
 	case RATE_INFO_BW_160:
 		bw = BW_160;
 		break;
+	case RATE_INFO_BW_320:
+		bw = BW_320;
+		break;
 	default:
 		WARN_ON_ONCE(1);
 		return 0;
@@ -443,11 +775,20 @@ static u32 ieee80211_get_rate_duration(struct ieee80211_hw *hw,
 		idx = status->rate_idx;
 		group = HE_GROUP_IDX(streams, status->he_gi, bw);
 		break;
+	case RX_ENC_EHT:
+		streams = status->nss;
+		idx = status->rate_idx;
+		group = EHT_GROUP_IDX(streams, status->he_gi, bw);
+		break;
 	default:
 		WARN_ON_ONCE(1);
 		return 0;
 	}
 
+	if (WARN_ON_ONCE((status->encoding != RX_ENC_EHT && streams > 8) ||
+			 (status->encoding == RX_ENC_EHT && streams > 16)))
+		return 0;
+
 	if (WARN_ON_ONCE((status->encoding != RX_ENC_HE && streams > 4) ||
 			 (status->encoding == RX_ENC_HE && streams > 8)))
 		return 0;
@@ -517,7 +858,9 @@ static bool ieee80211_fill_rate_info(struct ieee80211_hw *hw,
 	stat->nss = ri->nss;
 	stat->rate_idx = ri->mcs;
 
-	if (ri->flags & RATE_INFO_FLAGS_HE_MCS)
+	if (ri->flags & RATE_INFO_FLAGS_EHT_MCS)
+		stat->encoding = RX_ENC_EHT;
+	else if (ri->flags & RATE_INFO_FLAGS_HE_MCS)
 		stat->encoding = RX_ENC_HE;
 	else if (ri->flags & RATE_INFO_FLAGS_VHT_MCS)
 		stat->encoding = RX_ENC_VHT;
@@ -529,7 +872,7 @@ static bool ieee80211_fill_rate_info(struct ieee80211_hw *hw,
 	if (ri->flags & RATE_INFO_FLAGS_SHORT_GI)
 		stat->enc_flags |= RX_ENC_FLAG_SHORT_GI;
 
-	stat->he_gi = ri->he_gi;
+	stat->he_gi = (ri->flags & RATE_INFO_FLAGS_EHT_MCS) ? ri->eht_gi : ri->he_gi;
 
 	if (stat->encoding != RX_ENC_LEGACY)
 		return true;
-- 
2.18.0

