Przeglądaj źródła

qcacld-3.0: Add WMMInfoStation for mlo IE

Add WMMInfoStation sub IE for mlo IE.

Change-Id: I61a2d7b66e7f4fa0437b928dbed9a02d1dc08697
CRs-Fixed: 2999825
bings 3 lat temu
rodzic
commit
a36ce05b39

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

@@ -3831,6 +3831,7 @@ IE sta_profile (0)
   OPTIE IE HTInfo;
   OPTIE IE WMMParams;
   OPTIE IE WMMCaps;
+  OPTIE IE WMMInfoStation;
   OPTIE IE VHTCaps;
   OPTIE IE VHTOperation;
   OPTIE IE ExtCap;

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

@@ -26,7 +26,7 @@
  *
  *
  * This file was automatically generated by 'framesc'
- * Fri Jul 23 15:12:18 2021 from the following file(s):
+ * Mon Aug  2 10:46:43 2021 from the following file(s):
  *
  * dot11f.frms
  *
@@ -4644,6 +4644,52 @@ uint32_t dot11f_get_packed_ie_WMMCaps(
 }; /* End extern "C". */
 #endif /* C++ */
 
+/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x00} */
+typedef struct sDot11fIEWMMInfoStation {
+	uint8_t             present;
+	uint8_t             version;
+	uint8_t           acvo_uapsd:1;
+	uint8_t           acvi_uapsd:1;
+	uint8_t           acbk_uapsd:1;
+	uint8_t           acbe_uapsd:1;
+	uint8_t            reserved1:1;
+	uint8_t        max_sp_length:2;
+	uint8_t            reserved2:1;
+} tDot11fIEWMMInfoStation;
+
+#define DOT11F_EID_WMMINFOSTATION (221)
+
+/* N.B. These #defines do *not* include the EID & length */
+#define DOT11F_IE_WMMINFOSTATION_MIN_LEN (7)
+
+#define DOT11F_IE_WMMINFOSTATION_MAX_LEN (7)
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* C++ */
+__must_check uint32_t dot11f_unpack_ie_wmm_info_station(
+	tpAniSirGlobal,
+	uint8_t *,
+	uint8_t,
+	tDot11fIEWMMInfoStation*,
+	bool);
+
+uint32_t dot11f_pack_ie_wmm_info_station(
+	tpAniSirGlobal,
+	tDot11fIEWMMInfoStation *,
+	uint8_t *,
+	uint32_t,
+	uint32_t*);
+
+uint32_t dot11f_get_packed_ie_WMMInfoStation(
+	tpAniSirGlobal,
+	tDot11fIEWMMInfoStation *,
+	uint32_t*);
+
+#ifdef __cplusplus
+}; /* End extern "C". */
+#endif /* C++ */
+
 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x01} */
 typedef struct sDot11fIEWMMParams {
 	uint8_t             present;
@@ -6084,6 +6130,7 @@ typedef struct sDot11fIEsta_profile {
 	tDot11fIEHTInfo                      HTInfo;
 	tDot11fIEWMMParams                   WMMParams;
 	tDot11fIEWMMCaps                     WMMCaps;
+	tDot11fIEWMMInfoStation              WMMInfoStation;
 	tDot11fIEVHTCaps                     VHTCaps;
 	tDot11fIEVHTOperation                VHTOperation;
 	tDot11fIEExtCap                      ExtCap;
@@ -6104,7 +6151,7 @@ typedef struct sDot11fIEsta_profile {
 /* N.B. These #defines do *not* include the EID & length */
 #define DOT11F_IE_STA_PROFILE_MIN_LEN (2)
 
-#define DOT11F_IE_STA_PROFILE_MAX_LEN (1240)
+#define DOT11F_IE_STA_PROFILE_MAX_LEN (1249)
 
 #ifdef __cplusplus
 extern "C" {
@@ -8819,52 +8866,6 @@ uint32_t dot11f_get_packed_ie_WMMInfoAp(
 }; /* End extern "C". */
 #endif /* C++ */
 
-/* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x00} */
-typedef struct sDot11fIEWMMInfoStation {
-	uint8_t             present;
-	uint8_t             version;
-	uint8_t           acvo_uapsd:1;
-	uint8_t           acvi_uapsd:1;
-	uint8_t           acbk_uapsd:1;
-	uint8_t           acbe_uapsd:1;
-	uint8_t            reserved1:1;
-	uint8_t        max_sp_length:2;
-	uint8_t            reserved2:1;
-} tDot11fIEWMMInfoStation;
-
-#define DOT11F_EID_WMMINFOSTATION (221)
-
-/* N.B. These #defines do *not* include the EID & length */
-#define DOT11F_IE_WMMINFOSTATION_MIN_LEN (7)
-
-#define DOT11F_IE_WMMINFOSTATION_MAX_LEN (7)
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* C++ */
-__must_check uint32_t dot11f_unpack_ie_wmm_info_station(
-	tpAniSirGlobal,
-	uint8_t *,
-	uint8_t,
-	tDot11fIEWMMInfoStation*,
-	bool);
-
-uint32_t dot11f_pack_ie_wmm_info_station(
-	tpAniSirGlobal,
-	tDot11fIEWMMInfoStation *,
-	uint8_t *,
-	uint32_t,
-	uint32_t*);
-
-uint32_t dot11f_get_packed_ie_WMMInfoStation(
-	tpAniSirGlobal,
-	tDot11fIEWMMInfoStation *,
-	uint32_t*);
-
-#ifdef __cplusplus
-}; /* End extern "C". */
-#endif /* C++ */
-
 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x01} */
 typedef struct sDot11fIEWPAOpaque {
 	uint8_t             present;
@@ -10146,7 +10147,7 @@ typedef struct sDot11fIEmlo_ie {
 /* N.B. These #defines do *not* include the EID & length */
 #define DOT11F_IE_MLO_IE_MIN_LEN (2)
 
-#define DOT11F_IE_MLO_IE_MAX_LEN (1259)
+#define DOT11F_IE_MLO_IE_MAX_LEN (1268)
 
 #ifdef __cplusplus
 extern "C" {

Plik diff jest za duży
+ 317 - 277
core/mac/src/sys/legacy/src/utils/src/dot11f.c


+ 14 - 1
core/mac/src/sys/legacy/src/utils/src/parser_api.c

@@ -6854,6 +6854,19 @@ sir_convert_mlo_assoc_req_frame2_struct(struct mac_context *mac,
 			       num_ie_list))
 		qdf_mem_copy(&pAssocReq->HTCaps, &ar->HTCaps,
 			     sizeof(tDot11fIEHTCaps));
+	if (sta_pro->WMMInfoStation.present) {
+		pAssocReq->wmeInfoPresent = 1;
+		qdf_mem_copy(&pAssocReq->WMMInfoStation,
+			     &sta_pro->WMMInfoStation,
+			     sizeof(tDot11fIEWMMInfoStation));
+	} else if (ar->WMMInfoStation.present &&
+		   !is_noninh_ie(DOT11F_EID_WMMINFOSTATION,
+				 ie_list,
+				 num_ie_list)) {
+		pAssocReq->wmeInfoPresent = 1;
+		qdf_mem_copy(&pAssocReq->WMMInfoStation, &ar->WMMInfoStation,
+			     sizeof(tDot11fIEWMMInfoStation));
+	}
 	if (sta_pro->WMMCaps.present)
 		pAssocReq->wsmCapablePresent = 1;
 	else if (ar->WMMCaps.present &&
@@ -7237,7 +7250,7 @@ QDF_STATUS populate_dot11f_assoc_rsp_mlo_ie(struct mac_context *mac_ctx,
 
 		if (link_ie->link_ht_cap.present && frm->HTCaps.present) {
 			if (qdf_mem_cmp(&link_ie->link_ht_cap, &frm->HTCaps,
-					sizeof(tDot11fIEHTInfo)))
+					sizeof(tDot11fIEHTCaps)))
 				qdf_mem_copy(&sta_pro->HTCaps,
 					     &link_ie->link_ht_cap,
 					     sizeof(tDot11fIEHTCaps));

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików