Explorar o código

qcacld-3.0: Update RNR IE as per D1.5 specs

Update dot11f RNR IE definitions as per 11be draft 1.5
specification.

Change-Id: I66aca72d021d2f13e51d92f226784b5f8d58f68d
CRs-Fixed: 3210817
Deeksha Gupta %!s(int64=2) %!d(string=hai) anos
pai
achega
e1bdcfc022

+ 3 - 2
core/mac/src/cfg/cfgUtil/dot11f.frms

@@ -2563,11 +2563,12 @@ IE reduced_neighbor_report (EID_RNR_IE)
 		short_ssid, 4;
 		bss_params, 1;
 		psd_20mhz, 1;
+		mld_id, 1;
 		{
-		     mld_id:                    8;
 		     link_id:                   4;
 		     bss_param_change_cnt:      8;
-		     reserved:                  12;
+		     all_updates_included:      1;
+		     reserved:                  3;
 		}
 	}
     };

+ 7 - 6
core/mac/src/include/dot11f.h

@@ -27,7 +27,7 @@
  *
  *
  * This file was automatically generated by 'framesc'
- * Fri Jun 10 20:28:00 2022 from the following file(s):
+ * Mon Jun 13 10:50:26 2022 from the following file(s):
  *
  * dot11f.frms
  *
@@ -10216,10 +10216,11 @@ typedef struct sDot11fIEreduced_neighbor_report {
 			uint32_t short_ssid;
 			uint8_t bss_params;
 			uint8_t psd_20mhz;
-			uint32_t                mld_id:8;
-			uint32_t               link_id:4;
-			uint32_t  bss_param_change_cnt:8;
-			uint32_t              reserved:12;
+			uint8_t mld_id;
+			uint16_t               link_id:4;
+			uint16_t  bss_param_change_cnt:8;
+			uint16_t  all_updates_included:1;
+			uint16_t              reserved:3;
 		} tbtt_info_16; /* tbtt_info_len = 16 */
 	} tbtt_info;
 } tDot11fIEreduced_neighbor_report;
@@ -10229,7 +10230,7 @@ typedef struct sDot11fIEreduced_neighbor_report {
 /* N.B. These #defines do *not* include the EID & length */
 #define DOT11F_IE_REDUCED_NEIGHBOR_REPORT_MIN_LEN (5)
 
-#define DOT11F_IE_REDUCED_NEIGHBOR_REPORT_MAX_LEN (21)
+#define DOT11F_IE_REDUCED_NEIGHBOR_REPORT_MAX_LEN (20)
 
 #ifdef __cplusplus
 extern "C" {

+ 38 - 26
core/mac/src/sys/legacy/src/utils/src/dot11f.c

@@ -25,7 +25,7 @@
  *
  *
  * This file was automatically generated by 'framesc'
- * Fri Jun 10 20:28:00 2022 from the following file(s):
+ * Mon Jun 13 10:50:26 2022 from the following file(s):
  *
  * dot11f.frms
  *
@@ -10087,7 +10087,7 @@ uint32_t dot11f_unpack_ie_reduced_neighbor_report(tpAniSirGlobal pCtx,
 {
 	uint32_t status = DOT11F_PARSE_SUCCESS;
 	uint16_t tmp109__;
-	uint32_t tmp110__;
+	uint16_t tmp110__;
 	(void) pBuf; (void)ielen; /* Shutup the compiler */
 	if (pDst->present)
 		return DOT11F_DUPLICATE_IE;
@@ -10415,18 +10415,26 @@ uint32_t dot11f_unpack_ie_reduced_neighbor_report(tpAniSirGlobal pCtx,
 		pDst->tbtt_info.tbtt_info_16.psd_20mhz = *pBuf;
 		pBuf += 1;
 		ielen -= (uint8_t)1;
-		if (unlikely(ielen < 4)) {
+		if (unlikely(ielen < 1)) {
 			pDst->present = 0;
 			return DOT11F_INCOMPLETE_IE;
 		}
 
-		framesntohl(pCtx, &tmp110__, pBuf, 0);
-		pBuf += 4;
-		ielen -= 4;
-		pDst->tbtt_info.tbtt_info_16.mld_id = tmp110__ >> 0 & 0xff;
-		pDst->tbtt_info.tbtt_info_16.link_id = tmp110__ >> 8 & 0xf;
-		pDst->tbtt_info.tbtt_info_16.bss_param_change_cnt = tmp110__ >> 12 & 0xff;
-		pDst->tbtt_info.tbtt_info_16.reserved = tmp110__ >> 20 & 0xfff;
+		pDst->tbtt_info.tbtt_info_16.mld_id = *pBuf;
+		pBuf += 1;
+		ielen -= (uint8_t)1;
+		if (unlikely(ielen < 2)) {
+			pDst->present = 0;
+			return DOT11F_INCOMPLETE_IE;
+		}
+
+		framesntohs(pCtx, &tmp110__, pBuf, 0);
+		pBuf += 2;
+		ielen -= 2;
+		pDst->tbtt_info.tbtt_info_16.link_id = tmp110__ >> 0 & 0xf;
+		pDst->tbtt_info.tbtt_info_16.bss_param_change_cnt = tmp110__ >> 4 & 0xff;
+		pDst->tbtt_info.tbtt_info_16.all_updates_included = tmp110__ >> 12 & 0x1;
+		pDst->tbtt_info.tbtt_info_16.reserved = tmp110__ >> 13 & 0x7;
 		break;
 	}
 	(void)pCtx;
@@ -11000,7 +11008,7 @@ static const tIEDefn IES_AssocResponse[] = {
 	4, DOT11F_EID_MBO_IE, 0, 0, },
 	{ offsetof(tDot11fAssocResponse, reduced_neighbor_report),
 	offsetof(tDot11fIEreduced_neighbor_report, present), 0,
-	"reduced_neighbor_report", 0, 7, 23, SigIereduced_neighbor_report,
+	"reduced_neighbor_report", 0, 7, 22, SigIereduced_neighbor_report,
 	{0, 0, 0, 0, 0}, 0, DOT11F_EID_REDUCED_NEIGHBOR_REPORT, 0, 0, },
 	{0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, },};
 
@@ -11320,7 +11328,7 @@ static const tIEDefn IES_Beacon[] = {
 	4, DOT11F_EID_QCN_IE, 0, 0, },
 	{ offsetof(tDot11fBeacon, reduced_neighbor_report),
 	offsetof(tDot11fIEreduced_neighbor_report, present), 0,
-	"reduced_neighbor_report", 0, 7, 23, SigIereduced_neighbor_report,
+	"reduced_neighbor_report", 0, 7, 22, SigIereduced_neighbor_report,
 	{0, 0, 0, 0, 0}, 0, DOT11F_EID_REDUCED_NEIGHBOR_REPORT, 0, 0, },
 	{0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, },};
 
@@ -11569,7 +11577,7 @@ static const tIEDefn IES_Beacon2[] = {
 	4, DOT11F_EID_QCN_IE, 0, 0, },
 	{ offsetof(tDot11fBeacon2, reduced_neighbor_report),
 	offsetof(tDot11fIEreduced_neighbor_report, present), 0,
-	"reduced_neighbor_report", 0, 7, 23, SigIereduced_neighbor_report,
+	"reduced_neighbor_report", 0, 7, 22, SigIereduced_neighbor_report,
 	{0, 0, 0, 0, 0}, 0, DOT11F_EID_REDUCED_NEIGHBOR_REPORT, 0, 0, },
 	{0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, },};
 
@@ -11818,7 +11826,7 @@ static const tIEDefn IES_BeaconIEs[] = {
 	4, DOT11F_EID_QCN_IE, 0, 0, },
 	{ offsetof(tDot11fBeaconIEs, reduced_neighbor_report),
 	offsetof(tDot11fIEreduced_neighbor_report, present), 0,
-	"reduced_neighbor_report", 0, 7, 23, SigIereduced_neighbor_report,
+	"reduced_neighbor_report", 0, 7, 22, SigIereduced_neighbor_report,
 	{0, 0, 0, 0, 0}, 0, DOT11F_EID_REDUCED_NEIGHBOR_REPORT, 0, 0, },
 	{0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, },};
 
@@ -12495,7 +12503,7 @@ static const tIEDefn IES_ProbeResponse[] = {
 	4, DOT11F_EID_QCN_IE, 0, 0, },
 	{ offsetof(tDot11fProbeResponse, reduced_neighbor_report),
 	offsetof(tDot11fIEreduced_neighbor_report, present), 0,
-	"reduced_neighbor_report", 0, 7, 23, SigIereduced_neighbor_report,
+	"reduced_neighbor_report", 0, 7, 22, SigIereduced_neighbor_report,
 	{0, 0, 0, 0, 0}, 0, DOT11F_EID_REDUCED_NEIGHBOR_REPORT, 0, 0, },
 	{0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, },};
 
@@ -12936,7 +12944,7 @@ static const tIEDefn IES_ReAssocResponse[] = {
 	4, DOT11F_EID_MBO_IE, 0, 0, },
 	{ offsetof(tDot11fReAssocResponse, reduced_neighbor_report),
 	offsetof(tDot11fIEreduced_neighbor_report, present), 0,
-	"reduced_neighbor_report", 0, 7, 23, SigIereduced_neighbor_report,
+	"reduced_neighbor_report", 0, 7, 22, SigIereduced_neighbor_report,
 	{0, 0, 0, 0, 0}, 0, DOT11F_EID_REDUCED_NEIGHBOR_REPORT, 0, 0, },
 	{0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, },};
 
@@ -17583,7 +17591,8 @@ uint32_t dot11f_get_packed_ie_reduced_neighbor_report(tpAniSirGlobal pCtx,
 			*pnNeeded += 4;
 			*pnNeeded += 1;
 			*pnNeeded += 1;
-			*pnNeeded += 4;
+			*pnNeeded += 1;
+			*pnNeeded += 2;
 			break;
 		}
 		break;
@@ -29543,7 +29552,7 @@ uint32_t dot11f_pack_ie_reduced_neighbor_report(tpAniSirGlobal pCtx,
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
 	uint16_t tmp220__;
-	uint32_t tmp221__;
+	uint16_t tmp221__;
 	uint32_t status = DOT11F_PARSE_SUCCESS;
 	status = dot11f_get_packed_ie_reduced_neighbor_report(pCtx, pSrc, &nNeeded);
 	if (!DOT11F_SUCCEEDED(status))
@@ -29698,18 +29707,21 @@ uint32_t dot11f_pack_ie_reduced_neighbor_report(tpAniSirGlobal pCtx,
 			*pBuf = pSrc->tbtt_info.tbtt_info_16.psd_20mhz;
 			*pnConsumed += 1;
 			pBuf += 1;
+			*pBuf = pSrc->tbtt_info.tbtt_info_16.mld_id;
+			*pnConsumed += 1;
+			pBuf += 1;
 			tmp221__ = 0U;
-			tmp221__ |= (pSrc->tbtt_info.tbtt_info_16.mld_id << 0);
-			tmp221__ |= (pSrc->tbtt_info.tbtt_info_16.link_id << 8);
-			tmp221__ |= (pSrc->tbtt_info.tbtt_info_16.bss_param_change_cnt << 12);
-			tmp221__ |= (pSrc->tbtt_info.tbtt_info_16.reserved << 20);
-			if (unlikely(nBuf < 4))
+			tmp221__ |= (pSrc->tbtt_info.tbtt_info_16.link_id << 0);
+			tmp221__ |= (pSrc->tbtt_info.tbtt_info_16.bss_param_change_cnt << 4);
+			tmp221__ |= (pSrc->tbtt_info.tbtt_info_16.all_updates_included << 12);
+			tmp221__ |= (pSrc->tbtt_info.tbtt_info_16.reserved << 13);
+			if (unlikely(nBuf < 2))
 				return DOT11F_INCOMPLETE_IE;
 
-			frameshtonl(pCtx, pBuf, tmp221__, 0);
-			*pnConsumed += 4;
+			frameshtons(pCtx, pBuf, tmp221__, 0);
+			*pnConsumed += 2;
 			/* fieldsEndFlag  = 1 */
-			nBuf -=  4 ;
+			nBuf -=  2 ;
 			break;
 		}
 		break;