diff --git a/core/mac/src/cfg/cfgUtil/dot11f.frms b/core/mac/src/cfg/cfgUtil/dot11f.frms index bbc197edc8..3ca664d3cd 100644 --- a/core/mac/src/cfg/cfgUtil/dot11f.frms +++ b/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; } } }; diff --git a/core/mac/src/include/dot11f.h b/core/mac/src/include/dot11f.h index 55f1287554..a894daa1ab 100644 --- a/core/mac/src/include/dot11f.h +++ b/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" { diff --git a/core/mac/src/sys/legacy/src/utils/src/dot11f.c b/core/mac/src/sys/legacy/src/utils/src/dot11f.c index 08ae89e037..258528dbfb 100644 --- a/core/mac/src/sys/legacy/src/utils/src/dot11f.c +++ b/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;