|
@@ -864,6 +864,178 @@ struct hal_eht_sig_ndp_cmn_eb {
|
|
|
crc : 4;
|
|
|
};
|
|
|
|
|
|
+/* Different allowed RU in 11BE */
|
|
|
+#define HAL_EHT_RU_26 0ULL
|
|
|
+#define HAL_EHT_RU_52 1ULL
|
|
|
+#define HAL_EHT_RU_78 2ULL
|
|
|
+#define HAL_EHT_RU_106 3ULL
|
|
|
+#define HAL_EHT_RU_132 4ULL
|
|
|
+#define HAL_EHT_RU_242 5ULL
|
|
|
+#define HAL_EHT_RU_484 6ULL
|
|
|
+#define HAL_EHT_RU_726 7ULL
|
|
|
+#define HAL_EHT_RU_996 8ULL
|
|
|
+#define HAL_EHT_RU_996x2 9ULL
|
|
|
+#define HAL_EHT_RU_996x3 10ULL
|
|
|
+#define HAL_EHT_RU_996x4 11ULL
|
|
|
+#define HAL_EHT_RU_NONE 15ULL
|
|
|
+#define HAL_EHT_RU_INVALID 31ULL
|
|
|
+/*
|
|
|
+ * MRUs spanning above 80Mhz
|
|
|
+ * HAL_EHT_RU_996_484 = HAL_EHT_RU_484 + HAL_EHT_RU_996 + 4 (reserved)
|
|
|
+ */
|
|
|
+#define HAL_EHT_RU_996_484 18ULL
|
|
|
+#define HAL_EHT_RU_996x2_484 28ULL
|
|
|
+#define HAL_EHT_RU_996x3_484 40ULL
|
|
|
+#define HAL_EHT_RU_996_484_242 23ULL
|
|
|
+
|
|
|
+/**
|
|
|
+ * enum ieee80211_eht_ru_size: RU type id in EHTSIG radiotap header
|
|
|
+ * @IEEE80211_EHT_RU_26: RU26
|
|
|
+ * @IEEE80211_EHT_RU_52: RU52
|
|
|
+ * @IEEE80211_EHT_RU_106: RU106
|
|
|
+ * @IEEE80211_EHT_RU_242: RU242
|
|
|
+ * @IEEE80211_EHT_RU_484: RU484
|
|
|
+ * @IEEE80211_EHT_RU_996: RU996
|
|
|
+ * @IEEE80211_EHT_RU_996x2: RU996x2
|
|
|
+ * @IEEE80211_EHT_RU_996x4: RU996x4
|
|
|
+ * @IEEE80211_EHT_RU_52_26: RU52+RU26
|
|
|
+ * @IEEE80211_EHT_RU_106_26: RU106+RU26
|
|
|
+ * @IEEE80211_EHT_RU_484_242: RU484+RU242
|
|
|
+ * @IEEE80211_EHT_RU_996_484: RU996+RU484
|
|
|
+ * @IEEE80211_EHT_RU_996_484_242: RU996+RU484+RU242
|
|
|
+ * @IEEE80211_EHT_RU_996x2_484: RU996x2 + RU484
|
|
|
+ * @IEEE80211_EHT_RU_996x3: RU996x3
|
|
|
+ * @IEEE80211_EHT_RU_996x3_484: RU996x3 + RU484
|
|
|
+ * @IEEE80211_EHT_RU_INVALID: Invalid/Max RU
|
|
|
+ */
|
|
|
+enum ieee80211_eht_ru_size {
|
|
|
+ IEEE80211_EHT_RU_26,
|
|
|
+ IEEE80211_EHT_RU_52,
|
|
|
+ IEEE80211_EHT_RU_106,
|
|
|
+ IEEE80211_EHT_RU_242,
|
|
|
+ IEEE80211_EHT_RU_484,
|
|
|
+ IEEE80211_EHT_RU_996,
|
|
|
+ IEEE80211_EHT_RU_996x2,
|
|
|
+ IEEE80211_EHT_RU_996x4,
|
|
|
+ IEEE80211_EHT_RU_52_26,
|
|
|
+ IEEE80211_EHT_RU_106_26,
|
|
|
+ IEEE80211_EHT_RU_484_242,
|
|
|
+ IEEE80211_EHT_RU_996_484,
|
|
|
+ IEEE80211_EHT_RU_996_484_242,
|
|
|
+ IEEE80211_EHT_RU_996x2_484,
|
|
|
+ IEEE80211_EHT_RU_996x3,
|
|
|
+ IEEE80211_EHT_RU_996x3_484,
|
|
|
+ IEEE80211_EHT_RU_INVALID,
|
|
|
+};
|
|
|
+
|
|
|
+#define NUM_RU_BITS_PER80 16
|
|
|
+#define NUM_RU_BITS_PER20 4
|
|
|
+
|
|
|
+/* Different per_80Mhz band in 320Mhz bandwidth */
|
|
|
+#define HAL_80_0 0
|
|
|
+#define HAL_80_1 1
|
|
|
+#define HAL_80_2 2
|
|
|
+#define HAL_80_3 3
|
|
|
+
|
|
|
+#define HAL_RU_SHIFT(num_80mhz_band, ru_index_per_80) \
|
|
|
+ ((NUM_RU_BITS_PER80 * (num_80mhz_band)) + \
|
|
|
+ (NUM_RU_BITS_PER20 * (ru_index_per_80)))
|
|
|
+
|
|
|
+/* MRU-996+484 */
|
|
|
+#define HAL_EHT_RU_996_484_0 ((HAL_EHT_RU_484 << HAL_RU_SHIFT(HAL_80_0, 1)) | \
|
|
|
+ (HAL_EHT_RU_996 << HAL_RU_SHIFT(HAL_80_1, 0)))
|
|
|
+#define HAL_EHT_RU_996_484_1 ((HAL_EHT_RU_484 << HAL_RU_SHIFT(HAL_80_0, 0)) | \
|
|
|
+ (HAL_EHT_RU_996 << HAL_RU_SHIFT(HAL_80_1, 0)))
|
|
|
+#define HAL_EHT_RU_996_484_2 ((HAL_EHT_RU_996 << HAL_RU_SHIFT(HAL_80_0, 0)) | \
|
|
|
+ (HAL_EHT_RU_484 << HAL_RU_SHIFT(HAL_80_1, 1)))
|
|
|
+#define HAL_EHT_RU_996_484_3 ((HAL_EHT_RU_996 << HAL_RU_SHIFT(HAL_80_0, 0)) | \
|
|
|
+ (HAL_EHT_RU_484 << HAL_RU_SHIFT(HAL_80_1, 0)))
|
|
|
+#define HAL_EHT_RU_996_484_4 ((HAL_EHT_RU_484 << HAL_RU_SHIFT(HAL_80_2, 1)) | \
|
|
|
+ (HAL_EHT_RU_996 << HAL_RU_SHIFT(HAL_80_3, 0)))
|
|
|
+#define HAL_EHT_RU_996_484_5 ((HAL_EHT_RU_484 << HAL_RU_SHIFT(HAL_80_2, 0)) | \
|
|
|
+ (HAL_EHT_RU_996 << HAL_RU_SHIFT(HAL_80_3, 0)))
|
|
|
+#define HAL_EHT_RU_996_484_6 ((HAL_EHT_RU_996 << HAL_RU_SHIFT(HAL_80_2, 0)) | \
|
|
|
+ (HAL_EHT_RU_484 << HAL_RU_SHIFT(HAL_80_3, 1)))
|
|
|
+#define HAL_EHT_RU_996_484_7 ((HAL_EHT_RU_996 << HAL_RU_SHIFT(HAL_80_2, 0)) | \
|
|
|
+ (HAL_EHT_RU_484 << HAL_RU_SHIFT(HAL_80_3, 0)))
|
|
|
+
|
|
|
+/* MRU-996x2+484 */
|
|
|
+#define HAL_EHT_RU_996x2_484_0 ((HAL_EHT_RU_484 << HAL_RU_SHIFT(HAL_80_0, 1)) | \
|
|
|
+ (HAL_EHT_RU_996x2 << HAL_RU_SHIFT(HAL_80_1, 0)) | \
|
|
|
+ (HAL_EHT_RU_996x2 << HAL_RU_SHIFT(HAL_80_2, 0)))
|
|
|
+#define HAL_EHT_RU_996x2_484_1 ((HAL_EHT_RU_484 << HAL_RU_SHIFT(HAL_80_0, 0)) | \
|
|
|
+ (HAL_EHT_RU_996x2 << HAL_RU_SHIFT(HAL_80_1, 0)) | \
|
|
|
+ (HAL_EHT_RU_996x2 << HAL_RU_SHIFT(HAL_80_2, 0)))
|
|
|
+#define HAL_EHT_RU_996x2_484_2 ((HAL_EHT_RU_996x2 << HAL_RU_SHIFT(HAL_80_0, 0)) | \
|
|
|
+ (HAL_EHT_RU_484 << HAL_RU_SHIFT(HAL_80_1, 1)) | \
|
|
|
+ (HAL_EHT_RU_996x2 << HAL_RU_SHIFT(HAL_80_2, 0)))
|
|
|
+#define HAL_EHT_RU_996x2_484_3 ((HAL_EHT_RU_996x2 << HAL_RU_SHIFT(HAL_80_0, 0)) | \
|
|
|
+ (HAL_EHT_RU_484 << HAL_RU_SHIFT(HAL_80_1, 0)) | \
|
|
|
+ (HAL_EHT_RU_996x2 << HAL_RU_SHIFT(HAL_80_2, 0)))
|
|
|
+#define HAL_EHT_RU_996x2_484_4 ((HAL_EHT_RU_996x2 << HAL_RU_SHIFT(HAL_80_0, 0)) | \
|
|
|
+ (HAL_EHT_RU_996x2 << HAL_RU_SHIFT(HAL_80_1, 0)) | \
|
|
|
+ (HAL_EHT_RU_484 << HAL_RU_SHIFT(HAL_80_2, 1)))
|
|
|
+#define HAL_EHT_RU_996x2_484_5 ((HAL_EHT_RU_996x2 << HAL_RU_SHIFT(HAL_80_0, 0)) | \
|
|
|
+ (HAL_EHT_RU_996x2 << HAL_RU_SHIFT(HAL_80_1, 0)) | \
|
|
|
+ (HAL_EHT_RU_484 << HAL_RU_SHIFT(HAL_80_2, 0)))
|
|
|
+#define HAL_EHT_RU_996x2_484_6 ((HAL_EHT_RU_484 << HAL_RU_SHIFT(HAL_80_1, 1)) | \
|
|
|
+ (HAL_EHT_RU_996x2 << HAL_RU_SHIFT(HAL_80_2, 0)) | \
|
|
|
+ (HAL_EHT_RU_996x2 << HAL_RU_SHIFT(HAL_80_3, 0)))
|
|
|
+#define HAL_EHT_RU_996x2_484_7 ((HAL_EHT_RU_484 << HAL_RU_SHIFT(HAL_80_1, 0)) | \
|
|
|
+ (HAL_EHT_RU_996x2 << HAL_RU_SHIFT(HAL_80_2, 0)) | \
|
|
|
+ (HAL_EHT_RU_996x2 << HAL_RU_SHIFT(HAL_80_3, 0)))
|
|
|
+#define HAL_EHT_RU_996x2_484_8 ((HAL_EHT_RU_996x2 << HAL_RU_SHIFT(HAL_80_1, 0)) | \
|
|
|
+ (HAL_EHT_RU_484 << HAL_RU_SHIFT(HAL_80_2, 1)) | \
|
|
|
+ (HAL_EHT_RU_996x2 << HAL_RU_SHIFT(HAL_80_3, 0)))
|
|
|
+#define HAL_EHT_RU_996x2_484_9 ((HAL_EHT_RU_996x2 << HAL_RU_SHIFT(HAL_80_1, 0)) | \
|
|
|
+ (HAL_EHT_RU_484 << HAL_RU_SHIFT(HAL_80_2, 0)) | \
|
|
|
+ (HAL_EHT_RU_996x2 << HAL_RU_SHIFT(HAL_80_3, 0)))
|
|
|
+#define HAL_EHT_RU_996x2_484_10 ((HAL_EHT_RU_996x2 << HAL_RU_SHIFT(HAL_80_1, 0)) | \
|
|
|
+ (HAL_EHT_RU_996x2 << HAL_RU_SHIFT(HAL_80_2, 0)) | \
|
|
|
+ (HAL_EHT_RU_484 << HAL_RU_SHIFT(HAL_80_3, 1)))
|
|
|
+#define HAL_EHT_RU_996x2_484_11 ((HAL_EHT_RU_996x2 << HAL_RU_SHIFT(HAL_80_1, 0)) | \
|
|
|
+ (HAL_EHT_RU_996x2 << HAL_RU_SHIFT(HAL_80_2, 0)) | \
|
|
|
+ (HAL_EHT_RU_484 << HAL_RU_SHIFT(HAL_80_3, 0)))
|
|
|
+
|
|
|
+/* MRU-996x3+484 */
|
|
|
+#define HAL_EHT_RU_996x3_484_0 ((HAL_EHT_RU_484 << HAL_RU_SHIFT(HAL_80_0, 1)) | \
|
|
|
+ (HAL_EHT_RU_996x3 << HAL_RU_SHIFT(HAL_80_1, 0)) | \
|
|
|
+ (HAL_EHT_RU_996x3 << HAL_RU_SHIFT(HAL_80_2, 0)) | \
|
|
|
+ (HAL_EHT_RU_996x3 << HAL_RU_SHIFT(HAL_80_3, 0)))
|
|
|
+#define HAL_EHT_RU_996x3_484_1 ((HAL_EHT_RU_484 << HAL_RU_SHIFT(HAL_80_0, 0)) | \
|
|
|
+ (HAL_EHT_RU_996x3 << HAL_RU_SHIFT(HAL_80_1, 0)) | \
|
|
|
+ (HAL_EHT_RU_996x3 << HAL_RU_SHIFT(HAL_80_2, 0)) | \
|
|
|
+ (HAL_EHT_RU_996x3 << HAL_RU_SHIFT(HAL_80_3, 0)))
|
|
|
+#define HAL_EHT_RU_996x3_484_2 ((HAL_EHT_RU_996x3 << HAL_RU_SHIFT(HAL_80_0, 0)) | \
|
|
|
+ (HAL_EHT_RU_484 << HAL_RU_SHIFT(HAL_80_1, 1)) | \
|
|
|
+ (HAL_EHT_RU_996x3 << HAL_RU_SHIFT(HAL_80_2, 0)) | \
|
|
|
+ (HAL_EHT_RU_996x3 << HAL_RU_SHIFT(HAL_80_3, 0)))
|
|
|
+#define HAL_EHT_RU_996x3_484_3 ((HAL_EHT_RU_996x3 << HAL_RU_SHIFT(HAL_80_0, 0)) | \
|
|
|
+ (HAL_EHT_RU_484 << HAL_RU_SHIFT(HAL_80_1, 0)) | \
|
|
|
+ (HAL_EHT_RU_996x3 << HAL_RU_SHIFT(HAL_80_2, 0)) | \
|
|
|
+ (HAL_EHT_RU_996x3 << HAL_RU_SHIFT(HAL_80_3, 0)))
|
|
|
+#define HAL_EHT_RU_996x3_484_4 ((HAL_EHT_RU_996x3 << HAL_RU_SHIFT(HAL_80_0, 0)) | \
|
|
|
+ (HAL_EHT_RU_996x3 << HAL_RU_SHIFT(HAL_80_1, 0)) | \
|
|
|
+ (HAL_EHT_RU_484 << HAL_RU_SHIFT(HAL_80_2, 1)) | \
|
|
|
+ (HAL_EHT_RU_996x3 << HAL_RU_SHIFT(HAL_80_3, 0)))
|
|
|
+#define HAL_EHT_RU_996x3_484_5 ((HAL_EHT_RU_996x3 << HAL_RU_SHIFT(HAL_80_0, 0)) | \
|
|
|
+ (HAL_EHT_RU_996x3 << HAL_RU_SHIFT(HAL_80_1, 0)) | \
|
|
|
+ (HAL_EHT_RU_484 << HAL_RU_SHIFT(HAL_80_2, 0)) | \
|
|
|
+ (HAL_EHT_RU_996x3 << HAL_RU_SHIFT(HAL_80_3, 0)))
|
|
|
+#define HAL_EHT_RU_996x3_484_6 ((HAL_EHT_RU_996x3 << HAL_RU_SHIFT(HAL_80_0, 0)) | \
|
|
|
+ (HAL_EHT_RU_996x3 << HAL_RU_SHIFT(HAL_80_1, 0)) | \
|
|
|
+ (HAL_EHT_RU_996x3 << HAL_RU_SHIFT(HAL_80_2, 0)) | \
|
|
|
+ (HAL_EHT_RU_484 << HAL_RU_SHIFT(HAL_80_3, 1)))
|
|
|
+#define HAL_EHT_RU_996x3_484_7 ((HAL_EHT_RU_996x3 << HAL_RU_SHIFT(HAL_80_0, 0)) | \
|
|
|
+ (HAL_EHT_RU_996x3 << HAL_RU_SHIFT(HAL_80_1, 0)) | \
|
|
|
+ (HAL_EHT_RU_996x3 << HAL_RU_SHIFT(HAL_80_2, 0)) | \
|
|
|
+ (HAL_EHT_RU_484 << HAL_RU_SHIFT(HAL_80_3, 0)))
|
|
|
+
|
|
|
+/* EHT Reception Type */
|
|
|
+#define HAL_RX_TYPE_MU_MIMO 1
|
|
|
+#define HAL_RX_TYPE_MU_OFDMA 2
|
|
|
+#define HAL_RX_TYPE_MU_OFMDA_MIMO 3
|
|
|
+
|
|
|
#define HAL_RX_MON_MAX_AGGR_SIZE 128
|
|
|
|
|
|
/**
|