diff --git a/.gitignore b/.gitignore index 6b2dbfe55..5ce2a28ef 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,29 @@ install/ *.o *.so .vscode/ + +# Build artifacts +Makefile +Makefile.in +config.h +config.h.in +config.log +config.status +configure +aclocal.m4 +autom4te.cache/ +compile +config.guess +config.sub +depcomp +install-sh +libtool +ltmain.sh +m4/ +missing +stamp-h1 +_codeql_detected_source_root +INSTALL +.deps/ +*.Po +*.Plo diff --git a/source/apps/whix/wifi_whix.c b/source/apps/whix/wifi_whix.c index a2481242e..43e0c4ac3 100644 --- a/source/apps/whix/wifi_whix.c +++ b/source/apps/whix/wifi_whix.c @@ -1252,6 +1252,17 @@ void print_sta_client_telemetry_data(unsigned int num_devs, int vap_index, sta_d #define CLIENT_TELEMETRY_PARAM_MAX_LEN 64 #define MAX_BUFF_SIZE BSS_MAX_NUM_STATIONS *CLIENT_TELEMETRY_PARAM_MAX_LEN +static inline unsigned long calculate_counter_delta(unsigned long current, unsigned long previous) +{ + unsigned long diff = 0; + if (curr >= prev) { + diff = curr - prev; + } else { + diff = (ULONG_MAX - prev) + curr + 1; + } + return diff; +} + int upload_client_telemetry_data(wifi_app_t *app, unsigned int num_devs, unsigned int vap_index, sta_data_t *sta) { @@ -1276,6 +1287,7 @@ int upload_client_telemetry_data(wifi_app_t *app, unsigned int num_devs, unsigne wifi_mgr_t *wifi_mgr = (wifi_mgr_t *)get_wifimgr_obj(); hash_map_t *last_stats_map = app->data.u.whix.last_stats_map; wifi_associated_dev3_t *dev_stats_last = NULL; + unsigned long del = 0, curr = 0 , prev = 0; if (NULL == sta && num_devs != 0) { wifi_util_error_print(WIFI_APPS, "%s:%d sta is NULL and num_devs %u\n", __func__, __LINE__, @@ -1659,8 +1671,10 @@ int upload_client_telemetry_data(wifi_app_t *app, unsigned int num_devs, unsigne hash_map_put(app->data.u.whix.last_stats_map, strdup(sta_key), dev_stats_last); } if (sta[i].dev_stats.cli_Active == true) { - snprintf(tmp, 32, "%lu,", - sta[i].dev_stats.cli_BytesSent - dev_stats_last->cli_BytesSent); + curr = sta[i].dev_stats.cli_BytesSent; + prev = dev_stats_last->cli_BytesSent; + del = calculate_counter_delta(curr, prev); + snprintf(tmp, 32, "%lu,", del); strncat(buff, tmp, MAX_BUFF_SIZE - strlen(buff) - 1); } } @@ -1681,8 +1695,10 @@ int upload_client_telemetry_data(wifi_app_t *app, unsigned int num_devs, unsigne __LINE__); snprintf(tmp, 32, "%u,", 0); } else { - snprintf(tmp, 32, "%lu,", - sta[i].dev_stats.cli_BytesReceived - dev_stats_last->cli_BytesReceived); + curr = sta[i].dev_stats.cli_BytesReceived; + prev = dev_stats_last->cli_BytesReceived; + del = calculate_counter_delta(curr, prev); + snprintf(tmp, 32, "%lu,", del); } strncat(buff, tmp, MAX_BUFF_SIZE - strlen(buff) - 1); } @@ -1705,8 +1721,10 @@ int upload_client_telemetry_data(wifi_app_t *app, unsigned int num_devs, unsigne __LINE__); snprintf(tmp, 32, "%u,", 0); } else { - snprintf(tmp, 32, "%lu,", - sta[i].dev_stats.cli_PacketsSent - dev_stats_last->cli_PacketsSent); + curr = sta[i].dev_stats.cli_PacketsSent; + prev = dev_stats_last->cli_PacketsSent; + del = calculate_counter_delta(curr, prev); + snprintf(tmp, 32, "%lu,", del); } strncat(buff, tmp, MAX_BUFF_SIZE - strlen(buff) - 1); strncat(telemetryBuff, tmp, MAX_BUFF_SIZE - strlen(buff) - 1); @@ -1737,8 +1755,10 @@ int upload_client_telemetry_data(wifi_app_t *app, unsigned int num_devs, unsigne __LINE__); snprintf(tmp, 32, "%u,", 0); } else { - snprintf(tmp, 32, "%lu,", - sta[i].dev_stats.cli_PacketsReceived - dev_stats_last->cli_PacketsReceived); + curr = sta[i].dev_stats.cli_PacketsReceived; + prev = dev_stats_last->cli_PacketsReceived; + del = calculate_counter_delta(curr, prev); + snprintf(tmp, 32, "%lu,", del); } strncat(buff, tmp, MAX_BUFF_SIZE - strlen(buff) - 1); } @@ -1761,8 +1781,10 @@ int upload_client_telemetry_data(wifi_app_t *app, unsigned int num_devs, unsigne __LINE__); snprintf(tmp, 32, "%u,", 0); } else { - snprintf(tmp, 32, "%lu,", - sta[i].dev_stats.cli_ErrorsSent - dev_stats_last->cli_ErrorsSent); + curr = sta[i].dev_stats.cli_ErrorsSent; + prev = dev_stats_last->cli_ErrorsSent; + del = calculate_counter_delta(curr, prev); + snprintf(tmp, 32, "%lu,", del); } strncat(buff, tmp, MAX_BUFF_SIZE - strlen(buff) - 1); strncat(telemetryBuff, tmp, MAX_BUFF_SIZE - strlen(buff) - 1); @@ -1793,8 +1815,10 @@ int upload_client_telemetry_data(wifi_app_t *app, unsigned int num_devs, unsigne __LINE__); snprintf(tmp, 32, "%u,", 0); } else { - snprintf(tmp, 32, "%lu,", - sta[i].dev_stats.cli_RetransCount - dev_stats_last->cli_RetransCount); + curr = sta[i].dev_stats.cli_RetransCount; + prev = dev_stats_last->cli_RetransCount; + del = calculate_counter_delta(curr, prev); + snprintf(tmp, 32, "%lu,", del); } strncat(buff, tmp, MAX_BUFF_SIZE - strlen(buff) - 1); strncat(telemetryBuff, tmp, MAX_BUFF_SIZE - strlen(buff) - 1); @@ -1824,9 +1848,10 @@ int upload_client_telemetry_data(wifi_app_t *app, unsigned int num_devs, unsigne __LINE__); snprintf(tmp, 32, "%u,", 0); } else { - snprintf(tmp, 32, "%lu,", - sta[i].dev_stats.cli_FailedRetransCount - - dev_stats_last->cli_FailedRetransCount); + curr = sta[i].dev_stats.cli_FailedRetransCount; + prev = dev_stats_last->cli_FailedRetransCount; + del = calculate_counter_delta(curr, prev); + snprintf(tmp, 32, "%lu,", del); } strncat(buff, tmp, MAX_BUFF_SIZE - strlen(buff) - 1); } @@ -1848,8 +1873,10 @@ int upload_client_telemetry_data(wifi_app_t *app, unsigned int num_devs, unsigne __LINE__); snprintf(tmp, 32, "%u,", 0); } else { - snprintf(tmp, 32, "%lu,", - sta[i].dev_stats.cli_RetryCount - dev_stats_last->cli_RetryCount); + curr = sta[i].dev_stats.cli_RetryCount; + prev = dev_stats_last->cli_RetryCount; + del = calculate_counter_delta(curr, prev); + snprintf(tmp, 32, "%lu,", del); } strncat(buff, tmp, MAX_BUFF_SIZE - strlen(buff) - 1); } @@ -1871,9 +1898,10 @@ int upload_client_telemetry_data(wifi_app_t *app, unsigned int num_devs, unsigne __LINE__); snprintf(tmp, 32, "%u,", 0); } else { - snprintf(tmp, 32, "%lu,", - sta[i].dev_stats.cli_MultipleRetryCount - - dev_stats_last->cli_MultipleRetryCount); + curr = sta[i].dev_stats.cli_MultipleRetryCount; + prev = dev_stats_last->cli_MultipleRetryCount; + del = calculate_counter_delta(curr, prev); + snprintf(tmp, 32, "%lu,", del); } strncat(buff, tmp, MAX_BUFF_SIZE - strlen(buff) - 1); }