Browse Source

qcacld-3.0: Update no of bytes for Group Id 10

Currently host is considering 2 octets for all the
elements of Sta Statistics report for group ID 10
which is not aligned with spec and appending extra
zeros in report.

Fix is to update the element octet as per spec.

ap_average_access_delay ->  1 octet
average_access_delay_besteffort -> 1 octet
average_access_delay_background -> 1 octet
average_access_delay_video -> 1 octet
average_access_delay_voice -> 1 octet
station_count -> 2 octet
channel_utilization -> 1 octet

Change-Id: I998d5cba57d3ffbea1f66d595401266b1f8ac735
CRs-Fixed: 3661263
Sheenam Monga 1 year ago
parent
commit
e22f33a4a1

+ 6 - 6
core/mac/src/cfg/cfgUtil/dot11f.frms

@@ -1836,13 +1836,13 @@ IE MeasurementReport (EID_MEAS_REPORT)    // 7.3.2.22
                 }
                 dot11_bss_average_access_delay (group_id IS 10)
                 {
-                        ap_average_access_delay, 2;
-                        average_access_delay_besteffort, 2;
-                        average_access_delay_background, 2;
-                        average_access_delay_video, 2;
-                        average_access_delay_voice, 2;
+                        ap_average_access_delay, 1;
+                        average_access_delay_besteffort, 1;
+                        average_access_delay_background, 1;
+                        average_access_delay_video, 1;
+                        average_access_delay_voice, 1;
                         station_count, 2;
-                        channel_utilization, 2;
+                        channel_utilization, 1;
                 }
             };
             OPTIE reporting_reason;

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

@@ -27,7 +27,7 @@
  *
  *
  * This file was automatically generated by 'framesc'
- * Fri Sep 22 02:08:42 2023 from the following file(s):
+ * Fri Nov 10 10:07:33 2023 from the following file(s):
  *
  * dot11f.frms
  *
@@ -6251,13 +6251,13 @@ typedef struct sDot11fIEMeasurementReport {
 					uint32_t qos_retries_received_count;
 				} dot11_qos_counter; /* group_id = 2 */
 				struct {
-					uint16_t ap_average_access_delay;
-					uint16_t average_access_delay_besteffort;
-					uint16_t average_access_delay_background;
-					uint16_t average_access_delay_video;
-					uint16_t average_access_delay_voice;
+					uint8_t ap_average_access_delay;
+					uint8_t average_access_delay_besteffort;
+					uint8_t average_access_delay_background;
+					uint8_t average_access_delay_video;
+					uint8_t average_access_delay_voice;
 					uint16_t station_count;
-					uint16_t channel_utilization;
+					uint8_t channel_utilization;
 				} dot11_bss_average_access_delay; /* group_id = 10 */
 			} statsgroupdata;
 	tDot11fIEreporting_reason reporting_reason;

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

@@ -25,7 +25,7 @@
  *
  *
  * This file was automatically generated by 'framesc'
- * Fri Sep 22 02:08:42 2023 from the following file(s):
+ * Fri Nov 10 10:07:33 2023 from the following file(s):
  *
  * dot11f.frms
  *
@@ -6059,46 +6059,46 @@ uint32_t dot11f_unpack_ie_measurement_report(tpAniSirGlobal pCtx,
 				ielen -= (uint8_t)4;
 				break;
 			case 10:
-				if (unlikely(ielen < 2)) {
+				if (unlikely(ielen < 1)) {
 					pDst->present = 0;
 					return DOT11F_INCOMPLETE_IE;
 				}
 
-				framesntohs(pCtx, &pDst->report.sta_stats.statsgroupdata.dot11_bss_average_access_delay.ap_average_access_delay, pBuf, 0);
-				pBuf += 2;
-				ielen -= (uint8_t)2;
-				if (unlikely(ielen < 2)) {
+				pDst->report.sta_stats.statsgroupdata.dot11_bss_average_access_delay.ap_average_access_delay = *pBuf;
+				pBuf += 1;
+				ielen -= (uint8_t)1;
+				if (unlikely(ielen < 1)) {
 					pDst->present = 0;
 					return DOT11F_INCOMPLETE_IE;
 				}
 
-				framesntohs(pCtx, &pDst->report.sta_stats.statsgroupdata.dot11_bss_average_access_delay.average_access_delay_besteffort, pBuf, 0);
-				pBuf += 2;
-				ielen -= (uint8_t)2;
-				if (unlikely(ielen < 2)) {
+				pDst->report.sta_stats.statsgroupdata.dot11_bss_average_access_delay.average_access_delay_besteffort = *pBuf;
+				pBuf += 1;
+				ielen -= (uint8_t)1;
+				if (unlikely(ielen < 1)) {
 					pDst->present = 0;
 					return DOT11F_INCOMPLETE_IE;
 				}
 
-				framesntohs(pCtx, &pDst->report.sta_stats.statsgroupdata.dot11_bss_average_access_delay.average_access_delay_background, pBuf, 0);
-				pBuf += 2;
-				ielen -= (uint8_t)2;
-				if (unlikely(ielen < 2)) {
+				pDst->report.sta_stats.statsgroupdata.dot11_bss_average_access_delay.average_access_delay_background = *pBuf;
+				pBuf += 1;
+				ielen -= (uint8_t)1;
+				if (unlikely(ielen < 1)) {
 					pDst->present = 0;
 					return DOT11F_INCOMPLETE_IE;
 				}
 
-				framesntohs(pCtx, &pDst->report.sta_stats.statsgroupdata.dot11_bss_average_access_delay.average_access_delay_video, pBuf, 0);
-				pBuf += 2;
-				ielen -= (uint8_t)2;
-				if (unlikely(ielen < 2)) {
+				pDst->report.sta_stats.statsgroupdata.dot11_bss_average_access_delay.average_access_delay_video = *pBuf;
+				pBuf += 1;
+				ielen -= (uint8_t)1;
+				if (unlikely(ielen < 1)) {
 					pDst->present = 0;
 					return DOT11F_INCOMPLETE_IE;
 				}
 
-				framesntohs(pCtx, &pDst->report.sta_stats.statsgroupdata.dot11_bss_average_access_delay.average_access_delay_voice, pBuf, 0);
-				pBuf += 2;
-				ielen -= (uint8_t)2;
+				pDst->report.sta_stats.statsgroupdata.dot11_bss_average_access_delay.average_access_delay_voice = *pBuf;
+				pBuf += 1;
+				ielen -= (uint8_t)1;
 				if (unlikely(ielen < 2)) {
 					pDst->present = 0;
 					return DOT11F_INCOMPLETE_IE;
@@ -6107,14 +6107,14 @@ uint32_t dot11f_unpack_ie_measurement_report(tpAniSirGlobal pCtx,
 				framesntohs(pCtx, &pDst->report.sta_stats.statsgroupdata.dot11_bss_average_access_delay.station_count, pBuf, 0);
 				pBuf += 2;
 				ielen -= (uint8_t)2;
-				if (unlikely(ielen < 2)) {
+				if (unlikely(ielen < 1)) {
 					pDst->present = 0;
 					return DOT11F_INCOMPLETE_IE;
 				}
 
-				framesntohs(pCtx, &pDst->report.sta_stats.statsgroupdata.dot11_bss_average_access_delay.channel_utilization, pBuf, 0);
-				pBuf += 2;
-				ielen -= (uint8_t)2;
+				pDst->report.sta_stats.statsgroupdata.dot11_bss_average_access_delay.channel_utilization = *pBuf;
+				pBuf += 1;
+				ielen -= (uint8_t)1;
 				break;
 			}
 			status |= unpack_core(pCtx,
@@ -18245,13 +18245,13 @@ uint32_t dot11f_get_packed_ie_measurement_report(tpAniSirGlobal pCtx,
 					*pnNeeded += 4;
 					break;
 				case 10:
+					*pnNeeded += 1;
+					*pnNeeded += 1;
+					*pnNeeded += 1;
+					*pnNeeded += 1;
+					*pnNeeded += 1;
 					*pnNeeded += 2;
-					*pnNeeded += 2;
-					*pnNeeded += 2;
-					*pnNeeded += 2;
-					*pnNeeded += 2;
-					*pnNeeded += 2;
-					*pnNeeded += 2;
+					*pnNeeded += 1;
 					break;
 				}
 				status = get_packed_size_core(pCtx, (uint8_t *)pIe, pnNeeded, IES_reportsta_stats);
@@ -26981,27 +26981,27 @@ uint32_t dot11f_pack_ie_measurement_report(tpAniSirGlobal pCtx,
 					pBuf += 4;
 					break;
 				case 10:
-					frameshtons(pCtx, pBuf, pSrc->report.sta_stats.statsgroupdata.dot11_bss_average_access_delay.ap_average_access_delay, 0);
-					*pnConsumed += 2;
-					pBuf += 2;
-					frameshtons(pCtx, pBuf, pSrc->report.sta_stats.statsgroupdata.dot11_bss_average_access_delay.average_access_delay_besteffort, 0);
-					*pnConsumed += 2;
-					pBuf += 2;
-					frameshtons(pCtx, pBuf, pSrc->report.sta_stats.statsgroupdata.dot11_bss_average_access_delay.average_access_delay_background, 0);
-					*pnConsumed += 2;
-					pBuf += 2;
-					frameshtons(pCtx, pBuf, pSrc->report.sta_stats.statsgroupdata.dot11_bss_average_access_delay.average_access_delay_video, 0);
-					*pnConsumed += 2;
-					pBuf += 2;
-					frameshtons(pCtx, pBuf, pSrc->report.sta_stats.statsgroupdata.dot11_bss_average_access_delay.average_access_delay_voice, 0);
-					*pnConsumed += 2;
-					pBuf += 2;
+					*pBuf = pSrc->report.sta_stats.statsgroupdata.dot11_bss_average_access_delay.ap_average_access_delay;
+					*pnConsumed += 1;
+					pBuf += 1;
+					*pBuf = pSrc->report.sta_stats.statsgroupdata.dot11_bss_average_access_delay.average_access_delay_besteffort;
+					*pnConsumed += 1;
+					pBuf += 1;
+					*pBuf = pSrc->report.sta_stats.statsgroupdata.dot11_bss_average_access_delay.average_access_delay_background;
+					*pnConsumed += 1;
+					pBuf += 1;
+					*pBuf = pSrc->report.sta_stats.statsgroupdata.dot11_bss_average_access_delay.average_access_delay_video;
+					*pnConsumed += 1;
+					pBuf += 1;
+					*pBuf = pSrc->report.sta_stats.statsgroupdata.dot11_bss_average_access_delay.average_access_delay_voice;
+					*pnConsumed += 1;
+					pBuf += 1;
 					frameshtons(pCtx, pBuf, pSrc->report.sta_stats.statsgroupdata.dot11_bss_average_access_delay.station_count, 0);
 					*pnConsumed += 2;
 					pBuf += 2;
-					frameshtons(pCtx, pBuf, pSrc->report.sta_stats.statsgroupdata.dot11_bss_average_access_delay.channel_utilization, 0);
-					*pnConsumed += 2;
-					pBuf += 2;
+					*pBuf = pSrc->report.sta_stats.statsgroupdata.dot11_bss_average_access_delay.channel_utilization;
+					*pnConsumed += 1;
+					pBuf += 1;
 					break;
 				}
 				status = pack_core(pCtx,