Browse Source

fw-api: Add support for PHYRX_HE_SIG_A_MU_UL TLV

Add structure definations for HE_SIG_A_MU_UL TLV.
Required to parse HE SIG A fields in monitor mode.

Change-Id: I76f9e9fcedff50a3c2ee6a1943a5cda076cfc51e
CRs-Fixed: 2285256
psimha 7 years ago
parent
commit
8d7dc8f18b
2 changed files with 322 additions and 0 deletions
  1. 268 0
      hw/qca6290/11ax/v2/he_sig_a_mu_ul_info.h
  2. 54 0
      hw/qca6290/11ax/v2/phyrx_he_sig_a_mu_ul.h

+ 268 - 0
hw/qca6290/11ax/v2/he_sig_a_mu_ul_info.h

@@ -0,0 +1,268 @@
+/*
+ * Copyright (c) 2018 The Linux Foundation. All rights reserved.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for
+ * any purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+ * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifndef _HE_SIG_A_MU_UL_INFO_H_
+#define _HE_SIG_A_MU_UL_INFO_H_
+#if !defined(__ASSEMBLER__)
+#endif
+
+
+// ################ START SUMMARY #################
+//
+//	Dword	Fields
+//	0	format_indication[0], bss_color_id[6:1], spatial_reuse[22:7], reserved_0a[23], transmit_bw[25:24], reserved_0b[31:26]
+//	1	txop_duration[6:0], reserved_1a[15:7], crc[19:16], tail[25:20], reserved_1b[31:26]
+//
+// ################ END SUMMARY #################
+
+#define NUM_OF_DWORDS_HE_SIG_A_MU_UL_INFO 2
+
+struct he_sig_a_mu_ul_info {
+             uint32_t format_indication               :  1, //[0]
+                      bss_color_id                    :  6, //[6:1]
+                      spatial_reuse                   : 16, //[22:7]
+                      reserved_0a                     :  1, //[23]
+                      transmit_bw                     :  2, //[25:24]
+                      reserved_0b                     :  6; //[31:26]
+             uint32_t txop_duration                   :  7, //[6:0]
+                      reserved_1a                     :  9, //[15:7]
+                      crc                             :  4, //[19:16]
+                      tail                            :  6, //[25:20]
+                      reserved_1b                     :  6; //[31:26]
+};
+
+/*
+
+format_indication
+			
+			Indicates whether the transmission is SU PPDU or a
+			trigger based UL MU PDDU
+			
+			<enum 0 HE_SIGA_FORMAT_HE_TRIG>
+			
+			<enum 1 HE_SIGA_FORMAT_SU_OR_EXT_SU>
+			
+			<legal all>
+
+bss_color_id
+			
+			BSS color ID 
+			
+			<legal all>
+
+spatial_reuse
+			
+			Spatial reuse
+			
+			
+			
+			<legal all>
+
+reserved_0a
+			
+			Note: spec indicates this shall be set to 1
+			
+			<legal 1>
+
+transmit_bw
+			
+			Bandwidth of the PPDU.
+			
+			
+			
+			<enum 0 HE_SIG_A_MU_UL_BW20> 20 Mhz 
+			
+			<enum 1 HE_SIG_A_MU_UL_BW40> 40 Mhz 
+			
+			<enum 2 HE_SIG_A_MU_UL_BW80> 80 Mhz 
+			
+			<enum 3 HE_SIG_A_MU_UL_BW160> 160 MHz or 80+80 MHz
+			
+			
+			
+			On RX side, Field Used by MAC HW
+			
+			<legal 0-3>
+
+reserved_0b
+			
+			<legal 0>
+
+txop_duration
+			
+			Indicates the remaining time in the current TXOP <legal
+			all>
+
+reserved_1a
+			
+			Set to value indicated in the trigger frame
+			
+			<legal 255>
+
+crc
+			
+			CRC for HE-SIG-A contents.
+			
+			This CRC may also cover some fields of L-SIG (TBD)
+			
+			<legal all>
+
+tail
+			
+			BCC encoding (similar to VHT-SIG-A) with 6 tail bits is
+			used
+			
+			<legal 0>
+
+reserved_1b
+			
+			<legal 0>
+*/
+
+
+/* Description		HE_SIG_A_MU_UL_INFO_0_FORMAT_INDICATION
+			
+			Indicates whether the transmission is SU PPDU or a
+			trigger based UL MU PDDU
+			
+			<enum 0 HE_SIGA_FORMAT_HE_TRIG>
+			
+			<enum 1 HE_SIGA_FORMAT_SU_OR_EXT_SU>
+			
+			<legal all>
+*/
+#define HE_SIG_A_MU_UL_INFO_0_FORMAT_INDICATION_OFFSET               0x00000000
+#define HE_SIG_A_MU_UL_INFO_0_FORMAT_INDICATION_LSB                  0
+#define HE_SIG_A_MU_UL_INFO_0_FORMAT_INDICATION_MASK                 0x00000001
+
+/* Description		HE_SIG_A_MU_UL_INFO_0_BSS_COLOR_ID
+			
+			BSS color ID 
+			
+			<legal all>
+*/
+#define HE_SIG_A_MU_UL_INFO_0_BSS_COLOR_ID_OFFSET                    0x00000000
+#define HE_SIG_A_MU_UL_INFO_0_BSS_COLOR_ID_LSB                       1
+#define HE_SIG_A_MU_UL_INFO_0_BSS_COLOR_ID_MASK                      0x0000007e
+
+/* Description		HE_SIG_A_MU_UL_INFO_0_SPATIAL_REUSE
+			
+			Spatial reuse
+			
+			
+			
+			<legal all>
+*/
+#define HE_SIG_A_MU_UL_INFO_0_SPATIAL_REUSE_OFFSET                   0x00000000
+#define HE_SIG_A_MU_UL_INFO_0_SPATIAL_REUSE_LSB                      7
+#define HE_SIG_A_MU_UL_INFO_0_SPATIAL_REUSE_MASK                     0x007fff80
+
+/* Description		HE_SIG_A_MU_UL_INFO_0_RESERVED_0A
+			
+			Note: spec indicates this shall be set to 1
+			
+			<legal 1>
+*/
+#define HE_SIG_A_MU_UL_INFO_0_RESERVED_0A_OFFSET                     0x00000000
+#define HE_SIG_A_MU_UL_INFO_0_RESERVED_0A_LSB                        23
+#define HE_SIG_A_MU_UL_INFO_0_RESERVED_0A_MASK                       0x00800000
+
+/* Description		HE_SIG_A_MU_UL_INFO_0_TRANSMIT_BW
+			
+			Bandwidth of the PPDU.
+			
+			
+			
+			<enum 0 HE_SIG_A_MU_UL_BW20> 20 Mhz 
+			
+			<enum 1 HE_SIG_A_MU_UL_BW40> 40 Mhz 
+			
+			<enum 2 HE_SIG_A_MU_UL_BW80> 80 Mhz 
+			
+			<enum 3 HE_SIG_A_MU_UL_BW160> 160 MHz or 80+80 MHz
+			
+			
+			
+			On RX side, Field Used by MAC HW
+			
+			<legal 0-3>
+*/
+#define HE_SIG_A_MU_UL_INFO_0_TRANSMIT_BW_OFFSET                     0x00000000
+#define HE_SIG_A_MU_UL_INFO_0_TRANSMIT_BW_LSB                        24
+#define HE_SIG_A_MU_UL_INFO_0_TRANSMIT_BW_MASK                       0x03000000
+
+/* Description		HE_SIG_A_MU_UL_INFO_0_RESERVED_0B
+			
+			<legal 0>
+*/
+#define HE_SIG_A_MU_UL_INFO_0_RESERVED_0B_OFFSET                     0x00000000
+#define HE_SIG_A_MU_UL_INFO_0_RESERVED_0B_LSB                        26
+#define HE_SIG_A_MU_UL_INFO_0_RESERVED_0B_MASK                       0xfc000000
+
+/* Description		HE_SIG_A_MU_UL_INFO_1_TXOP_DURATION
+			
+			Indicates the remaining time in the current TXOP <legal
+			all>
+*/
+#define HE_SIG_A_MU_UL_INFO_1_TXOP_DURATION_OFFSET                   0x00000004
+#define HE_SIG_A_MU_UL_INFO_1_TXOP_DURATION_LSB                      0
+#define HE_SIG_A_MU_UL_INFO_1_TXOP_DURATION_MASK                     0x0000007f
+
+/* Description		HE_SIG_A_MU_UL_INFO_1_RESERVED_1A
+			
+			Set to value indicated in the trigger frame
+			
+			<legal 255>
+*/
+#define HE_SIG_A_MU_UL_INFO_1_RESERVED_1A_OFFSET                     0x00000004
+#define HE_SIG_A_MU_UL_INFO_1_RESERVED_1A_LSB                        7
+#define HE_SIG_A_MU_UL_INFO_1_RESERVED_1A_MASK                       0x0000ff80
+
+/* Description		HE_SIG_A_MU_UL_INFO_1_CRC
+			
+			CRC for HE-SIG-A contents.
+			
+			This CRC may also cover some fields of L-SIG (TBD)
+			
+			<legal all>
+*/
+#define HE_SIG_A_MU_UL_INFO_1_CRC_OFFSET                             0x00000004
+#define HE_SIG_A_MU_UL_INFO_1_CRC_LSB                                16
+#define HE_SIG_A_MU_UL_INFO_1_CRC_MASK                               0x000f0000
+
+/* Description		HE_SIG_A_MU_UL_INFO_1_TAIL
+			
+			BCC encoding (similar to VHT-SIG-A) with 6 tail bits is
+			used
+			
+			<legal 0>
+*/
+#define HE_SIG_A_MU_UL_INFO_1_TAIL_OFFSET                            0x00000004
+#define HE_SIG_A_MU_UL_INFO_1_TAIL_LSB                               20
+#define HE_SIG_A_MU_UL_INFO_1_TAIL_MASK                              0x03f00000
+
+/* Description		HE_SIG_A_MU_UL_INFO_1_RESERVED_1B
+			
+			<legal 0>
+*/
+#define HE_SIG_A_MU_UL_INFO_1_RESERVED_1B_OFFSET                     0x00000004
+#define HE_SIG_A_MU_UL_INFO_1_RESERVED_1B_LSB                        26
+#define HE_SIG_A_MU_UL_INFO_1_RESERVED_1B_MASK                       0xfc000000
+
+
+#endif // _HE_SIG_A_MU_UL_INFO_H_

+ 54 - 0
hw/qca6290/11ax/v2/phyrx_he_sig_a_mu_ul.h

@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2018 The Linux Foundation. All rights reserved.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for
+ * any purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+ * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifndef _PHYRX_HE_SIG_A_MU_UL_H_
+#define _PHYRX_HE_SIG_A_MU_UL_H_
+#if !defined(__ASSEMBLER__)
+#endif
+
+#include "he_sig_a_mu_ul_info.h"
+
+// ################ START SUMMARY #################
+//
+//	Dword	Fields
+//	0-1	struct he_sig_a_mu_ul_info phyrx_he_sig_a_mu_ul_info_details;
+//
+// ################ END SUMMARY #################
+
+#define NUM_OF_DWORDS_PHYRX_HE_SIG_A_MU_UL 2
+
+struct phyrx_he_sig_a_mu_ul {
+    struct            he_sig_a_mu_ul_info                       phyrx_he_sig_a_mu_ul_info_details;
+};
+
+/*
+
+struct he_sig_a_mu_ul_info phyrx_he_sig_a_mu_ul_info_details
+			
+			See detailed description of the STRUCT
+*/
+
+#define PHYRX_HE_SIG_A_MU_UL_0_HE_SIG_A_MU_UL_INFO_PHYRX_HE_SIG_A_MU_UL_INFO_DETAILS_OFFSET 0x00000000
+#define PHYRX_HE_SIG_A_MU_UL_0_HE_SIG_A_MU_UL_INFO_PHYRX_HE_SIG_A_MU_UL_INFO_DETAILS_LSB 0
+#define PHYRX_HE_SIG_A_MU_UL_0_HE_SIG_A_MU_UL_INFO_PHYRX_HE_SIG_A_MU_UL_INFO_DETAILS_MASK 0xffffffff
+#define PHYRX_HE_SIG_A_MU_UL_1_HE_SIG_A_MU_UL_INFO_PHYRX_HE_SIG_A_MU_UL_INFO_DETAILS_OFFSET 0x00000004
+#define PHYRX_HE_SIG_A_MU_UL_1_HE_SIG_A_MU_UL_INFO_PHYRX_HE_SIG_A_MU_UL_INFO_DETAILS_LSB 0
+#define PHYRX_HE_SIG_A_MU_UL_1_HE_SIG_A_MU_UL_INFO_PHYRX_HE_SIG_A_MU_UL_INFO_DETAILS_MASK 0xffffffff
+
+
+#endif // _PHYRX_HE_SIG_A_MU_UL_H_