Explorar o código

qcacld-3.0: Add BW_IND_ELEM IE to ECSA and beacon structures

BW_IND_ELEM is needed to indicate updated bandwidth to peers
through ECSA frame/along with CSA IE in beacon. Add the IE
in ECSA frame structure and beacon structures.
Generate corresponding APIs with the help of frame parser.

Change-Id: Ia38d40050f945136bd01313bd3e17011b256afad
CRs-Fixed: 3604384
Srinivas Dasari hai 1 ano
pai
achega
72b3998eeb

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

@@ -2554,10 +2554,27 @@ IE transmit_power_env (EID_TRANSMIT_POWER_ENVELOPE)
     tx_power[1..8];
 }
 
+IE bw_ind_element (EID_EXTN_ID_ELEMENT) OUI (0x87)
+{
+   {
+       reserved: 1;
+       disabled_sub_chan_bitmap_present: 1;
+       reserved_1: 6;
+   }
+   {
+       channel_width: 3;
+       reserved_2: 5;
+   }
+   ccfs0, 1;
+   ccfs1, 1;
+   disabled_sub_chan_bitmap[2][0..1] COUNTIS disabled_sub_chan_bitmap_present;
+}
+
 IE ChannelSwitchWrapper (EID_CHANNEL_SWITCH_WRAPPER)
 {
     OPTIE IE  WiderBWChanSwitchAnn;
     OPTIE IE  transmit_power_env;
+    OPTIE IE  bw_ind_element;
 }
 
 IE reduced_neighbor_report (EID_RNR_IE)
@@ -4942,6 +4959,7 @@ FRAME ext_channel_switch_action_frame
     FF     ext_chan_switch_ann_action;
     OPTIE  WiderBWChanSwitchAnn;
     OPTIE  qcn_ie;
+    OPTIE  bw_ind_element;
 }
 
 FRAME p2p_oper_chan_change_confirm

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

@@ -27,7 +27,7 @@
  *
  *
  * This file was automatically generated by 'framesc'
- * Wed Aug 16 05:58:15 2023 from the following file(s):
+ * Thu Aug 31 01:23:37 2023 from the following file(s):
  *
  * dot11f.frms
  *
@@ -4421,6 +4421,52 @@ uint32_t dot11f_get_packed_ie_beacon_report_frm_body_fragment_id(
 }; /* End extern "C". */
 #endif /* C++ */
 
+/* EID 255 (0xff) Extended EID 135 (0x87) */
+typedef struct sDot11fIEbw_ind_element {
+	uint8_t             present;
+	uint8_t             reserved:1;
+	uint8_t disabled_sub_chan_bitmap_present:1;
+	uint8_t           reserved_1:6;
+	uint8_t        channel_width:3;
+	uint8_t           reserved_2:5;
+	uint8_t             ccfs0;
+	uint8_t             ccfs1;
+	uint8_t             disabled_sub_chan_bitmap[1][2];
+} tDot11fIEbw_ind_element;
+
+#define DOT11F_EID_BW_IND_ELEMENT (255)
+
+/* N.B. These #defines do *not* include the EID & length */
+#define DOT11F_IE_BW_IND_ELEMENT_MIN_LEN (4)
+
+#define DOT11F_IE_BW_IND_ELEMENT_MAX_LEN (6)
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* C++ */
+__must_check uint32_t dot11f_unpack_ie_bw_ind_element(
+	tpAniSirGlobal,
+	uint8_t *,
+	uint8_t,
+	tDot11fIEbw_ind_element*,
+	bool);
+
+uint32_t dot11f_pack_ie_bw_ind_element(
+	tpAniSirGlobal,
+	tDot11fIEbw_ind_element *,
+	uint8_t *,
+	uint32_t,
+	uint32_t*);
+
+uint32_t dot11f_get_packed_ie_bw_ind_element(
+	tpAniSirGlobal,
+	tDot11fIEbw_ind_element *,
+	uint32_t*);
+
+#ifdef __cplusplus
+}; /* End extern "C". */
+#endif /* C++ */
+
 /* EID 164 (0xa4) */
 typedef struct sDot11fIElast_beacon_report_indication {
 	uint8_t             present;
@@ -5016,6 +5062,7 @@ typedef struct sDot11fIEChannelSwitchWrapper {
 	uint8_t                              present;
 	tDot11fIEWiderBWChanSwitchAnn        WiderBWChanSwitchAnn;
 	tDot11fIEtransmit_power_env          transmit_power_env;
+	tDot11fIEbw_ind_element              bw_ind_element;
 } tDot11fIEChannelSwitchWrapper;
 
 #define DOT11F_EID_CHANNELSWITCHWRAPPER (196)
@@ -5023,7 +5070,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 (16)
+#define DOT11F_IE_CHANNELSWITCHWRAPPER_MAX_LEN (24)
 
 #ifdef __cplusplus
 extern "C" {
@@ -12637,6 +12684,7 @@ typedef struct sDot11fext_channel_switch_action_frame{
 	tDot11fFfext_chan_switch_ann_action        ext_chan_switch_ann_action;
 	tDot11fIEWiderBWChanSwitchAnn              WiderBWChanSwitchAnn;
 	tDot11fIEqcn_ie                            qcn_ie;
+	tDot11fIEbw_ind_element                    bw_ind_element;
 } tDot11fext_channel_switch_action_frame;
 
 #define DOT11F_EXT_CHANNEL_SWITCH_ACTION_FRAME (52)

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 279 - 207
core/mac/src/sys/legacy/src/utils/src/dot11f.c


Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio