Ver Fonte

qcacld-3.0: Add support to handle Ext Max Tx power in TPE IE

As part of 802.11be_D4.1 new param Ext Max Tx power is added
in TPE for 320 MHz. So add support to parse the ext param.
EXT element is optional and conditional element that will
be advertised by AP in below pattern :

ii.) Transmit Power Interpretation subelement 0/2 i.e local/reg
EIRP then ext element will contain one octet to hold EIRP power.

iii.) Transmit Power Interpretation subelement 1/3 i.e local/reg
PSD then ext element will be variable containing 1 octet out of which
4 bits for array count (B0-B3) and 4 bits reserved (B4-B7) and
array of variable length upto count mentioned in first octet to
store PSD powers per 20 MHz.

CRs-Fixed: 3645315
Change-Id: I703e249ba121a3a79b0cf097b0c036b13e853f24
Sheenam Monga há 1 ano atrás
pai
commit
9b969fcef5

+ 26 - 0
core/mac/src/cfg/cfgUtil/dot11f.frms

@@ -2586,6 +2586,32 @@ IE transmit_power_env (EID_TRANSMIT_POWER_ENVELOPE)
         max_tx_pwr_category:          2;
     }
     tx_power[1..8];
+    OPTIONAL UNION ext_max_tx_power (DISCRIMINATOR max_tx_pwr_interpret)
+    {
+       ext_max_tx_power_local_eirp (max_tx_pwr_interpret IS 0) {
+               max_tx_power_for_320, 1;
+       }
+       ext_max_tx_power_local_psd (max_tx_pwr_interpret IS 1) {
+               //ext_transmit_psd_info, 1;
+               {
+                       ext_count: 4;
+                       reserved: 4;
+               }
+               max_tx_psd_power[8];
+       }
+       ext_max_tx_power_reg_eirp (max_tx_pwr_interpret IS 2) {
+               max_tx_power_for_320, 1;
+       }
+       ext_max_tx_power_reg_psd (max_tx_pwr_interpret IS 3) {
+               //ext_transmit_psd_info, 1;
+               {
+                       ext_count: 4;
+                       reserved: 4;
+               }
+               max_tx_psd_power[8];
+       }
+
+    };
 }
 
 IE bw_ind_element (EID_EXTN_ID_ELEMENT) OUI (0x87)

+ 20 - 2
core/mac/src/include/dot11f.h

@@ -4947,6 +4947,24 @@ typedef struct sDot11fIEtransmit_power_env {
 	uint8_t  max_tx_pwr_category:2;
 	uint8_t             num_tx_power;
 	uint8_t             tx_power[8];
+	union {
+		struct {
+			uint8_t max_tx_power_for_320;
+		} ext_max_tx_power_local_eirp; /* max_tx_pwr_interpret = 0 */
+		struct {
+			uint8_t  ext_count:4;
+			uint8_t   reserved:4;
+			uint8_t max_tx_psd_power[8];
+		} ext_max_tx_power_local_psd; /* max_tx_pwr_interpret = 1 */
+		struct {
+			uint8_t max_tx_power_for_320;
+		} ext_max_tx_power_reg_eirp; /* max_tx_pwr_interpret = 2 */
+		struct {
+			uint8_t  ext_count:4;
+			uint8_t   reserved:4;
+			uint8_t max_tx_psd_power[8];
+		} ext_max_tx_power_reg_psd; /* max_tx_pwr_interpret = 3 */
+	} ext_max_tx_power;
 } tDot11fIEtransmit_power_env;
 
 #define DOT11F_EID_TRANSMIT_POWER_ENV (195)
@@ -4954,7 +4972,7 @@ typedef struct sDot11fIEtransmit_power_env {
 /* N.B. These #defines do *not* include the EID & length */
 #define DOT11F_IE_TRANSMIT_POWER_ENV_MIN_LEN (2)
 
-#define DOT11F_IE_TRANSMIT_POWER_ENV_MAX_LEN (9)
+#define DOT11F_IE_TRANSMIT_POWER_ENV_MAX_LEN (18)
 
 #ifdef __cplusplus
 extern "C" {
@@ -5198,7 +5216,7 @@ typedef struct sDot11fIEChannelSwitchWrapper {
 /* N.B. These #defines do *not* include the EID & length */
 #define DOT11F_IE_CHANNELSWITCHWRAPPER_MIN_LEN (0)
 
-#define DOT11F_IE_CHANNELSWITCHWRAPPER_MAX_LEN (24)
+#define DOT11F_IE_CHANNELSWITCHWRAPPER_MAX_LEN (33)
 
 #ifdef __cplusplus
 extern "C" {

Diff do ficheiro suprimidas por serem muito extensas
+ 316 - 246
core/mac/src/sys/legacy/src/utils/src/dot11f.c


Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff