From f3a735030c257da9f8a4248802270dba37c26eb4 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 24/37] mtk: mac80211: 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

