From fac25391302002bce2594a75d346d00d027c7bde Mon Sep 17 00:00:00 2001 From: rirfha948 Date: Wed, 10 Sep 2025 08:29:08 +0000 Subject: [PATCH 1/8] RDKB-xx000: LAN side latency measurement Reason for change: LAN side latency measurment Test Procedure: - TBD Risks: None Priority: P3 Signed-off-by: rirfha948 --- Makefile.am | 2 +- source/LatencyMeasurement/xNetDP/Makefile.am | 2 +- source/LatencyMeasurement/xNetDP/xNetDP.c | 65 ++++++++++++++++++++ 3 files changed, 67 insertions(+), 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index e92b5703..3d530de1 100644 --- a/Makefile.am +++ b/Makefile.am @@ -80,4 +80,4 @@ endif libdiagnostic_la_CPPFLAGS = -I$(top_srcdir)/source/diagnostic/include -I$(top_srcdir)/source/diagnostic/BbhmDiagIpPing -I$(top_srcdir)/source/dmltad -I$(top_srcdir)/source/TandDSsp libdiagnostic_la_DEPENDENCIES = $(EXTRA_DEPENDENCIES) libdiagnostic_la_LIBADD = $(libdiagnostic_la_DEPENDENCIES) -libdiagnostic_la_LDFLAGS = -lccsp_common +libdiagnostic_la_LDFLAGS = -lccsp_common -lmosquitto diff --git a/source/LatencyMeasurement/xNetDP/Makefile.am b/source/LatencyMeasurement/xNetDP/Makefile.am index b0897d6a..fb471554 100644 --- a/source/LatencyMeasurement/xNetDP/Makefile.am +++ b/source/LatencyMeasurement/xNetDP/Makefile.am @@ -21,4 +21,4 @@ bin_PROGRAMS = xNetDP xNetDP_CPPFLAGS = -I${PKG_CONFIG_SYSROOT_DIR}$(includedir)/rbus xNetDP_SOURCES = xNetDP.c -xNetDP_LDFLAGS = -lpcap -lrbus -lsyscfg -lm -lpthread +xNetDP_LDFLAGS = -lpcap -lrbus -lsyscfg -lm -lpthread -lmosquitto diff --git a/source/LatencyMeasurement/xNetDP/xNetDP.c b/source/LatencyMeasurement/xNetDP/xNetDP.c index c2fe3fe1..0529a11e 100644 --- a/source/LatencyMeasurement/xNetDP/xNetDP.c +++ b/source/LatencyMeasurement/xNetDP/xNetDP.c @@ -42,6 +42,7 @@ #include #include #include +#include #include "syscfg/syscfg.h" #define ADD_MAX_SAMPLE 10 #define MAX_SAMPLE 50 @@ -74,6 +75,10 @@ pthread_mutex_t latency_report_lock = PTHREAD_MUTEX_INITIALIZER; #define TRUE 1 #define FALSE 0 #define BUF_SIZE 200 +#define MQTT_LOCAL_MQTT_BROKER_IP_ADDR "192.168.245.254" +#define MQTT_LOCAL_MQTT_BROKER_PORT_VAL 1883 +#define TCP_LAN_latency_TOPIC "device/TCP_LAN_latency" + enum ip_family { IPV4=0, @@ -1049,6 +1054,57 @@ void* LatencyReportThread(void* arg) #if 1 + +// Function that takes MAC + LAN latency (microseconds) +int send_latency_message(const char *mac, long long lan_latency_usec) { + struct mosquitto *mosq; + char payload[256]; + + // JSON payload: you can format however you need + snprintf(payload, sizeof(payload), + "{\"mac\":\"%s\", \"lan_latency_usec\":%lld}", mac, lan_latency_usec); + + mosquitto_lib_init(); + mosq = mosquitto_new("LatencyPublisher", true, NULL); + if (!mosq) { + dbg_log("Failed to create Mosquitto client"); + mosquitto_lib_cleanup(); + return -1; + } + + rc = mosquitto_connect(mosq, + MQTT_LOCAL_MQTT_BROKER_IP_ADDR, + MQTT_LOCAL_MQTT_BROKER_PORT_VAL, + MQTT_KEEPALIVE_TIME); + + if (rc != MOSQ_ERR_SUCCESS) { + if (rc == MOSQ_ERR_ERRNO) { + sys_errno_msg_log(); // log system error (e.g., ECONNREFUSED) + } + dbg_log("Failed to connect to MQTT broker: %s", mosquitto_strerror(rc)); + + mosquitto_destroy(mosq); + mosquitto_lib_cleanup(); + return 1; + } + + // Publish message + int rc = mosquitto_publish(mosq, NULL, TCP_LAN_latency_TOPIC, + strlen(payload), payload, + 1, false); + + if (rc == MOSQ_ERR_SUCCESS) { + dbg_log("Published: %s", payload); + } else { + dbg_log("Failed to publish message: %s", mosquitto_strerror(rc)); + } + + mosquitto_disconnect(mosq); + mosquitto_destroy(mosq); + mosquitto_lib_cleanup(); + return rc; +} + void* LatencyReportThreadPerSession(void* arg) { // detach the current thread @@ -1081,6 +1137,15 @@ void* LatencyReportThreadPerSession(void* arg) if(hashArray[i].bComputed == TRUE) { tempCount = snprintf(str1,sizeof(str1),"%s,%u,%lld.%lld,%lld.%06lld|",hashArray[i].mac,hashArray[i].TcpInfo[INDEX_SYN].th_seq,hashArray[i].latency_sec,hashArray[i].latency_usec,hashArray[i].Lan_latency_sec,hashArray[i].Lan_latency_usec); + //Send LAN side Latency Notification to HCM module + int rc = send_latency_message(hashArray[i].mac, + hashArray[i].Lan_latency_sec); + + if (rc != MOSQ_ERR_SUCCESS) { + dbg_log("MQTT publish failed for MAC %s: %s", + hashArray[i].mac, mosquitto_strerror(rc)); + } + if(tempCount) { if((byteCount+tempCount) < MAX_REPORT_SIZE) From a86b7290bff3f7abb3e709c48d6b867f15af52f7 Mon Sep 17 00:00:00 2001 From: rirfha948 Date: Wed, 10 Sep 2025 13:39:24 +0000 Subject: [PATCH 2/8] RDKB-xx000: LAN side latency measurement Reason for change: LAN side latency measurment Test Procedure: - TBD Risks: None Priority: P3 Signed-off-by: rirfha948 --- source/LatencyMeasurement/xNetDP/xNetDP.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/source/LatencyMeasurement/xNetDP/xNetDP.c b/source/LatencyMeasurement/xNetDP/xNetDP.c index 0529a11e..c965e5d8 100644 --- a/source/LatencyMeasurement/xNetDP/xNetDP.c +++ b/source/LatencyMeasurement/xNetDP/xNetDP.c @@ -78,6 +78,7 @@ pthread_mutex_t latency_report_lock = PTHREAD_MUTEX_INITIALIZER; #define MQTT_LOCAL_MQTT_BROKER_IP_ADDR "192.168.245.254" #define MQTT_LOCAL_MQTT_BROKER_PORT_VAL 1883 #define TCP_LAN_latency_TOPIC "device/TCP_LAN_latency" +#define MQTT_KEEPALIVE_TIME 60 enum ip_family { @@ -1059,6 +1060,7 @@ void* LatencyReportThread(void* arg) int send_latency_message(const char *mac, long long lan_latency_usec) { struct mosquitto *mosq; char payload[256]; + int rc =0; // JSON payload: you can format however you need snprintf(payload, sizeof(payload), @@ -1078,9 +1080,6 @@ int send_latency_message(const char *mac, long long lan_latency_usec) { MQTT_KEEPALIVE_TIME); if (rc != MOSQ_ERR_SUCCESS) { - if (rc == MOSQ_ERR_ERRNO) { - sys_errno_msg_log(); // log system error (e.g., ECONNREFUSED) - } dbg_log("Failed to connect to MQTT broker: %s", mosquitto_strerror(rc)); mosquitto_destroy(mosq); @@ -1089,7 +1088,7 @@ int send_latency_message(const char *mac, long long lan_latency_usec) { } // Publish message - int rc = mosquitto_publish(mosq, NULL, TCP_LAN_latency_TOPIC, + rc = mosquitto_publish(mosq, NULL, TCP_LAN_latency_TOPIC, strlen(payload), payload, 1, false); From 9edb2210013e74499cf7c4fb188d35511a4dd57e Mon Sep 17 00:00:00 2001 From: rirfha948 Date: Wed, 10 Sep 2025 13:39:24 +0000 Subject: [PATCH 3/8] RDKB-xx000: LAN side latency measurement Reason for change: LAN side latency measurment Test Procedure: - TBD Risks: None Priority: P3 Signed-off-by: rirfha948 --- source/LatencyMeasurement/Makefile.am | 2 +- source/LatencyMeasurement/xNetDP/xNetDP.c | 7 +- .../LatencyMeasurement/xNetTest/Makefile.am | 24 +++++++ source/LatencyMeasurement/xNetTest/xNetTest.c | 68 +++++++++++++++++++ 4 files changed, 96 insertions(+), 5 deletions(-) create mode 100644 source/LatencyMeasurement/xNetTest/Makefile.am create mode 100644 source/LatencyMeasurement/xNetTest/xNetTest.c diff --git a/source/LatencyMeasurement/Makefile.am b/source/LatencyMeasurement/Makefile.am index 213b96c2..46ea60ed 100644 --- a/source/LatencyMeasurement/Makefile.am +++ b/source/LatencyMeasurement/Makefile.am @@ -1 +1 @@ -SUBDIRS = TR-181 xNetSniffer xNetDP ServiceMonitor +SUBDIRS = TR-181 xNetSniffer xNetDP ServiceMonitor xNetTest diff --git a/source/LatencyMeasurement/xNetDP/xNetDP.c b/source/LatencyMeasurement/xNetDP/xNetDP.c index 0529a11e..c965e5d8 100644 --- a/source/LatencyMeasurement/xNetDP/xNetDP.c +++ b/source/LatencyMeasurement/xNetDP/xNetDP.c @@ -78,6 +78,7 @@ pthread_mutex_t latency_report_lock = PTHREAD_MUTEX_INITIALIZER; #define MQTT_LOCAL_MQTT_BROKER_IP_ADDR "192.168.245.254" #define MQTT_LOCAL_MQTT_BROKER_PORT_VAL 1883 #define TCP_LAN_latency_TOPIC "device/TCP_LAN_latency" +#define MQTT_KEEPALIVE_TIME 60 enum ip_family { @@ -1059,6 +1060,7 @@ void* LatencyReportThread(void* arg) int send_latency_message(const char *mac, long long lan_latency_usec) { struct mosquitto *mosq; char payload[256]; + int rc =0; // JSON payload: you can format however you need snprintf(payload, sizeof(payload), @@ -1078,9 +1080,6 @@ int send_latency_message(const char *mac, long long lan_latency_usec) { MQTT_KEEPALIVE_TIME); if (rc != MOSQ_ERR_SUCCESS) { - if (rc == MOSQ_ERR_ERRNO) { - sys_errno_msg_log(); // log system error (e.g., ECONNREFUSED) - } dbg_log("Failed to connect to MQTT broker: %s", mosquitto_strerror(rc)); mosquitto_destroy(mosq); @@ -1089,7 +1088,7 @@ int send_latency_message(const char *mac, long long lan_latency_usec) { } // Publish message - int rc = mosquitto_publish(mosq, NULL, TCP_LAN_latency_TOPIC, + rc = mosquitto_publish(mosq, NULL, TCP_LAN_latency_TOPIC, strlen(payload), payload, 1, false); diff --git a/source/LatencyMeasurement/xNetTest/Makefile.am b/source/LatencyMeasurement/xNetTest/Makefile.am new file mode 100644 index 00000000..31c28e10 --- /dev/null +++ b/source/LatencyMeasurement/xNetTest/Makefile.am @@ -0,0 +1,24 @@ +########################################################################## +# If not stated otherwise in this file or this component's Licenses.txt +# file the following copyright and licenses apply: +# +# Copyright 2015 RDK Management +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +########################################################################## + +bin_PROGRAMS = xNetTest + +xNetTest_CPPFLAGS = -I${PKG_CONFIG_SYSROOT_DIR}$(includedir)/rbus +xNetTest_SOURCES = xNetTest.c +xNetTest_LDFLAGS = -lpcap -lrbus -lsyscfg -lm -lpthread -lmosquitto diff --git a/source/LatencyMeasurement/xNetTest/xNetTest.c b/source/LatencyMeasurement/xNetTest/xNetTest.c new file mode 100644 index 00000000..47def490 --- /dev/null +++ b/source/LatencyMeasurement/xNetTest/xNetTest.c @@ -0,0 +1,68 @@ +#include +#include +#include +#include + +#define TCP_LAN_latency_TOPIC1 "device/TCP_LAN_latency" + +// Logging macro +#define dbg_log1(fmt, ...) fprintf(stderr, "[DEBUG] " fmt "\n", ##__VA_ARGS__) + +// Callback when a message arrives +void on_message(struct mosquitto *mosq, void *userdata, + const struct mosquitto_message *msg) +{ + if (msg->payloadlen) { + printf("Received on topic %s: %s\n", msg->topic, (char *)msg->payload); + printf("✅ Success: Message received\n"); + } else { + printf("Received empty message on topic %s\n", msg->topic); + } +} + +int main(void) +{ + struct mosquitto *mosq; + int rc; + + mosquitto_lib_init(); + + mosq = mosquitto_new("LatencySubscriber", true, NULL); + if (!mosq) { + dbg_log1("Failed to create Mosquitto client"); + mosquitto_lib_cleanup(); + return -1; + } + + mosquitto_message_callback_set(mosq, on_message); + + rc = mosquitto_connect(mosq, + "192.168.245.254", + 1883, + 60); + if (rc != MOSQ_ERR_SUCCESS) { + dbg_log1("Failed to connect: %s", mosquitto_strerror(rc)); + mosquitto_destroy(mosq); + mosquitto_lib_cleanup(); + return 1; + } + + // Subscribe to the same topic publisher uses + rc = mosquitto_subscribe(mosq, NULL, TCP_LAN_latency_TOPIC1, 1); + if (rc != MOSQ_ERR_SUCCESS) { + dbg_log1("Failed to subscribe: %s", mosquitto_strerror(rc)); + mosquitto_destroy(mosq); + mosquitto_lib_cleanup(); + return 1; + } + + dbg_log1("Subscribed to topic: %s", TCP_LAN_latency_TOPIC1); + + // Blocking loop to process messages + mosquitto_loop_forever(mosq, -1, 1); + + mosquitto_destroy(mosq); + mosquitto_lib_cleanup(); + return 0; +} + From 172199a2a07692e88412c67dca8554abd0464964 Mon Sep 17 00:00:00 2001 From: rirfha948 Date: Thu, 11 Sep 2025 17:16:54 +0000 Subject: [PATCH 4/8] RDKB-xx000: LAN side latency measurement Reason for change: LAN side latency measurment Test Procedure: - TBD Risks: None Priority: P3 Signed-off-by: rirfha948 --- configure.ac | 1 + 1 file changed, 1 insertion(+) diff --git a/configure.ac b/configure.ac index 0d5fa703..9a50ef70 100644 --- a/configure.ac +++ b/configure.ac @@ -161,6 +161,7 @@ AC_CONFIG_FILES( source/LatencyMeasurement/TR-181/Makefile source/LatencyMeasurement/xNetSniffer/Makefile source/LatencyMeasurement/xNetDP/Makefile + source/LatencyMeasurement/xNetTest/Makefile source/DevicePrioritization/Makefile source/DevicePrioritization/TR-181/Makefile Makefile From 645e5f0751be3eeb664a74ea9042ca8b686ac64d Mon Sep 17 00:00:00 2001 From: rirfha948 Date: Thu, 11 Sep 2025 17:30:59 +0000 Subject: [PATCH 5/8] RDKB-xx000: LAN side latency measurement Reason for change: LAN side latency measurment Test Procedure: - TBD Risks: None Priority: P3 Signed-off-by: rirfha948 --- source/LatencyMeasurement/xNetDP/xNetDP.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/LatencyMeasurement/xNetDP/xNetDP.c b/source/LatencyMeasurement/xNetDP/xNetDP.c index c965e5d8..c2c5151b 100644 --- a/source/LatencyMeasurement/xNetDP/xNetDP.c +++ b/source/LatencyMeasurement/xNetDP/xNetDP.c @@ -1057,14 +1057,14 @@ void* LatencyReportThread(void* arg) #if 1 // Function that takes MAC + LAN latency (microseconds) -int send_latency_message(const char *mac, long long lan_latency_usec) { +int send_latency_message(const char *mac, long long lan_latency_sec, long long lan_latency_usec) { struct mosquitto *mosq; char payload[256]; int rc =0; // JSON payload: you can format however you need snprintf(payload, sizeof(payload), - "{\"mac\":\"%s\", \"lan_latency_usec\":%lld}", mac, lan_latency_usec); + "{\"mac\":\"%s\", \"lan_latency_sec\":%lld.%06lld}", mac, lan_latency_sec, lan_latency_usec); mosquitto_lib_init(); mosq = mosquitto_new("LatencyPublisher", true, NULL); @@ -1138,7 +1138,7 @@ void* LatencyReportThreadPerSession(void* arg) tempCount = snprintf(str1,sizeof(str1),"%s,%u,%lld.%lld,%lld.%06lld|",hashArray[i].mac,hashArray[i].TcpInfo[INDEX_SYN].th_seq,hashArray[i].latency_sec,hashArray[i].latency_usec,hashArray[i].Lan_latency_sec,hashArray[i].Lan_latency_usec); //Send LAN side Latency Notification to HCM module int rc = send_latency_message(hashArray[i].mac, - hashArray[i].Lan_latency_sec); + hashArray[i].Lan_latency_sec, hashArray[i].Lan_latency_usec); if (rc != MOSQ_ERR_SUCCESS) { dbg_log("MQTT publish failed for MAC %s: %s", From 9d0713f66efb1ff53a9f34c4923f2a401ef720fa Mon Sep 17 00:00:00 2001 From: rirfha948 Date: Fri, 12 Sep 2025 10:07:02 +0000 Subject: [PATCH 6/8] RDKB-xx000: LAN side latency measurement Reason for change: LAN side latency measurment Test Procedure: - TBD Risks: None Priority: P3 Signed-off-by: rirfha948 --- configure.ac | 1 - source/LatencyMeasurement/Makefile.am | 2 +- .../LatencyMeasurement/xNetTest/Makefile.am | 24 ------- source/LatencyMeasurement/xNetTest/xNetTest.c | 68 ------------------- 4 files changed, 1 insertion(+), 94 deletions(-) delete mode 100644 source/LatencyMeasurement/xNetTest/Makefile.am delete mode 100644 source/LatencyMeasurement/xNetTest/xNetTest.c diff --git a/configure.ac b/configure.ac index 9a50ef70..0d5fa703 100644 --- a/configure.ac +++ b/configure.ac @@ -161,7 +161,6 @@ AC_CONFIG_FILES( source/LatencyMeasurement/TR-181/Makefile source/LatencyMeasurement/xNetSniffer/Makefile source/LatencyMeasurement/xNetDP/Makefile - source/LatencyMeasurement/xNetTest/Makefile source/DevicePrioritization/Makefile source/DevicePrioritization/TR-181/Makefile Makefile diff --git a/source/LatencyMeasurement/Makefile.am b/source/LatencyMeasurement/Makefile.am index 46ea60ed..213b96c2 100644 --- a/source/LatencyMeasurement/Makefile.am +++ b/source/LatencyMeasurement/Makefile.am @@ -1 +1 @@ -SUBDIRS = TR-181 xNetSniffer xNetDP ServiceMonitor xNetTest +SUBDIRS = TR-181 xNetSniffer xNetDP ServiceMonitor diff --git a/source/LatencyMeasurement/xNetTest/Makefile.am b/source/LatencyMeasurement/xNetTest/Makefile.am deleted file mode 100644 index 31c28e10..00000000 --- a/source/LatencyMeasurement/xNetTest/Makefile.am +++ /dev/null @@ -1,24 +0,0 @@ -########################################################################## -# If not stated otherwise in this file or this component's Licenses.txt -# file the following copyright and licenses apply: -# -# Copyright 2015 RDK Management -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -########################################################################## - -bin_PROGRAMS = xNetTest - -xNetTest_CPPFLAGS = -I${PKG_CONFIG_SYSROOT_DIR}$(includedir)/rbus -xNetTest_SOURCES = xNetTest.c -xNetTest_LDFLAGS = -lpcap -lrbus -lsyscfg -lm -lpthread -lmosquitto diff --git a/source/LatencyMeasurement/xNetTest/xNetTest.c b/source/LatencyMeasurement/xNetTest/xNetTest.c deleted file mode 100644 index 47def490..00000000 --- a/source/LatencyMeasurement/xNetTest/xNetTest.c +++ /dev/null @@ -1,68 +0,0 @@ -#include -#include -#include -#include - -#define TCP_LAN_latency_TOPIC1 "device/TCP_LAN_latency" - -// Logging macro -#define dbg_log1(fmt, ...) fprintf(stderr, "[DEBUG] " fmt "\n", ##__VA_ARGS__) - -// Callback when a message arrives -void on_message(struct mosquitto *mosq, void *userdata, - const struct mosquitto_message *msg) -{ - if (msg->payloadlen) { - printf("Received on topic %s: %s\n", msg->topic, (char *)msg->payload); - printf("✅ Success: Message received\n"); - } else { - printf("Received empty message on topic %s\n", msg->topic); - } -} - -int main(void) -{ - struct mosquitto *mosq; - int rc; - - mosquitto_lib_init(); - - mosq = mosquitto_new("LatencySubscriber", true, NULL); - if (!mosq) { - dbg_log1("Failed to create Mosquitto client"); - mosquitto_lib_cleanup(); - return -1; - } - - mosquitto_message_callback_set(mosq, on_message); - - rc = mosquitto_connect(mosq, - "192.168.245.254", - 1883, - 60); - if (rc != MOSQ_ERR_SUCCESS) { - dbg_log1("Failed to connect: %s", mosquitto_strerror(rc)); - mosquitto_destroy(mosq); - mosquitto_lib_cleanup(); - return 1; - } - - // Subscribe to the same topic publisher uses - rc = mosquitto_subscribe(mosq, NULL, TCP_LAN_latency_TOPIC1, 1); - if (rc != MOSQ_ERR_SUCCESS) { - dbg_log1("Failed to subscribe: %s", mosquitto_strerror(rc)); - mosquitto_destroy(mosq); - mosquitto_lib_cleanup(); - return 1; - } - - dbg_log1("Subscribed to topic: %s", TCP_LAN_latency_TOPIC1); - - // Blocking loop to process messages - mosquitto_loop_forever(mosq, -1, 1); - - mosquitto_destroy(mosq); - mosquitto_lib_cleanup(); - return 0; -} - From 47a183bec0443928fba7b2f06b68ef47d20aa0b7 Mon Sep 17 00:00:00 2001 From: rirfha948 Date: Fri, 12 Sep 2025 10:07:02 +0000 Subject: [PATCH 7/8] RDKB-xx000: LAN side latency measurement Reason for change: LAN side latency measurment Test Procedure: - TBD Risks: None Priority: P3 Signed-off-by: rirfha948 --- configure.ac | 1 - source/LatencyMeasurement/Makefile.am | 2 +- source/LatencyMeasurement/xNetDP/xNetDP.c | 53 ++++++++------- .../LatencyMeasurement/xNetTest/Makefile.am | 24 ------- source/LatencyMeasurement/xNetTest/xNetTest.c | 68 ------------------- 5 files changed, 28 insertions(+), 120 deletions(-) delete mode 100644 source/LatencyMeasurement/xNetTest/Makefile.am delete mode 100644 source/LatencyMeasurement/xNetTest/xNetTest.c diff --git a/configure.ac b/configure.ac index 9a50ef70..0d5fa703 100644 --- a/configure.ac +++ b/configure.ac @@ -161,7 +161,6 @@ AC_CONFIG_FILES( source/LatencyMeasurement/TR-181/Makefile source/LatencyMeasurement/xNetSniffer/Makefile source/LatencyMeasurement/xNetDP/Makefile - source/LatencyMeasurement/xNetTest/Makefile source/DevicePrioritization/Makefile source/DevicePrioritization/TR-181/Makefile Makefile diff --git a/source/LatencyMeasurement/Makefile.am b/source/LatencyMeasurement/Makefile.am index 46ea60ed..213b96c2 100644 --- a/source/LatencyMeasurement/Makefile.am +++ b/source/LatencyMeasurement/Makefile.am @@ -1 +1 @@ -SUBDIRS = TR-181 xNetSniffer xNetDP ServiceMonitor xNetTest +SUBDIRS = TR-181 xNetSniffer xNetDP ServiceMonitor diff --git a/source/LatencyMeasurement/xNetDP/xNetDP.c b/source/LatencyMeasurement/xNetDP/xNetDP.c index c2c5151b..3abc7c7b 100644 --- a/source/LatencyMeasurement/xNetDP/xNetDP.c +++ b/source/LatencyMeasurement/xNetDP/xNetDP.c @@ -1057,8 +1057,7 @@ void* LatencyReportThread(void* arg) #if 1 // Function that takes MAC + LAN latency (microseconds) -int send_latency_message(const char *mac, long long lan_latency_sec, long long lan_latency_usec) { - struct mosquitto *mosq; +int send_latency_message(struct mosquitto *mosq, const char *mac, long long lan_latency_sec, long long lan_latency_usec) { char payload[256]; int rc =0; @@ -1066,26 +1065,6 @@ int send_latency_message(const char *mac, long long lan_latency_sec, long long l snprintf(payload, sizeof(payload), "{\"mac\":\"%s\", \"lan_latency_sec\":%lld.%06lld}", mac, lan_latency_sec, lan_latency_usec); - mosquitto_lib_init(); - mosq = mosquitto_new("LatencyPublisher", true, NULL); - if (!mosq) { - dbg_log("Failed to create Mosquitto client"); - mosquitto_lib_cleanup(); - return -1; - } - - rc = mosquitto_connect(mosq, - MQTT_LOCAL_MQTT_BROKER_IP_ADDR, - MQTT_LOCAL_MQTT_BROKER_PORT_VAL, - MQTT_KEEPALIVE_TIME); - - if (rc != MOSQ_ERR_SUCCESS) { - dbg_log("Failed to connect to MQTT broker: %s", mosquitto_strerror(rc)); - - mosquitto_destroy(mosq); - mosquitto_lib_cleanup(); - return 1; - } // Publish message rc = mosquitto_publish(mosq, NULL, TCP_LAN_latency_TOPIC, @@ -1098,9 +1077,6 @@ int send_latency_message(const char *mac, long long lan_latency_sec, long long l dbg_log("Failed to publish message: %s", mosquitto_strerror(rc)); } - mosquitto_disconnect(mosq); - mosquitto_destroy(mosq); - mosquitto_lib_cleanup(); return rc; } @@ -1113,6 +1089,8 @@ void* LatencyReportThreadPerSession(void* arg) int count = 0; char *str = NULL; char str1[1024]; + struct mosquitto *mosq; + int rc =0; str = (char*) malloc (MAX_REPORT_SIZE); if (str == NULL ) return NULL; @@ -1123,6 +1101,26 @@ void* LatencyReportThreadPerSession(void* arg) FILE *fp; //fp = fopen("LatencyReport.txt", "w+"); + mosquitto_lib_init(); + mosq = mosquitto_new("LatencyPublisher", true, NULL); + if (!mosq) { + dbg_log("Failed to create Mosquitto client"); + mosquitto_lib_cleanup(); + return NULL; + } + + rc = mosquitto_connect(mosq, + MQTT_LOCAL_MQTT_BROKER_IP_ADDR, + MQTT_LOCAL_MQTT_BROKER_PORT_VAL, + MQTT_KEEPALIVE_TIME); + + if (rc != MOSQ_ERR_SUCCESS) { + dbg_log("Failed to connect to MQTT broker: %s", mosquitto_strerror(rc)); + + mosquitto_destroy(mosq); + mosquitto_lib_cleanup(); + return NULL; + } while(1) { sleep(5); @@ -1137,7 +1135,7 @@ void* LatencyReportThreadPerSession(void* arg) { tempCount = snprintf(str1,sizeof(str1),"%s,%u,%lld.%lld,%lld.%06lld|",hashArray[i].mac,hashArray[i].TcpInfo[INDEX_SYN].th_seq,hashArray[i].latency_sec,hashArray[i].latency_usec,hashArray[i].Lan_latency_sec,hashArray[i].Lan_latency_usec); //Send LAN side Latency Notification to HCM module - int rc = send_latency_message(hashArray[i].mac, + rc = send_latency_message(mosq, hashArray[i].mac, hashArray[i].Lan_latency_sec, hashArray[i].Lan_latency_usec); if (rc != MOSQ_ERR_SUCCESS) { @@ -1206,6 +1204,9 @@ void* LatencyReportThreadPerSession(void* arg) free(str); str=NULL; } + mosquitto_disconnect(mosq); + mosquitto_destroy(mosq); + mosquitto_lib_cleanup(); // exit the current thread //pthread_exit(NULL); } diff --git a/source/LatencyMeasurement/xNetTest/Makefile.am b/source/LatencyMeasurement/xNetTest/Makefile.am deleted file mode 100644 index 31c28e10..00000000 --- a/source/LatencyMeasurement/xNetTest/Makefile.am +++ /dev/null @@ -1,24 +0,0 @@ -########################################################################## -# If not stated otherwise in this file or this component's Licenses.txt -# file the following copyright and licenses apply: -# -# Copyright 2015 RDK Management -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -########################################################################## - -bin_PROGRAMS = xNetTest - -xNetTest_CPPFLAGS = -I${PKG_CONFIG_SYSROOT_DIR}$(includedir)/rbus -xNetTest_SOURCES = xNetTest.c -xNetTest_LDFLAGS = -lpcap -lrbus -lsyscfg -lm -lpthread -lmosquitto diff --git a/source/LatencyMeasurement/xNetTest/xNetTest.c b/source/LatencyMeasurement/xNetTest/xNetTest.c deleted file mode 100644 index 47def490..00000000 --- a/source/LatencyMeasurement/xNetTest/xNetTest.c +++ /dev/null @@ -1,68 +0,0 @@ -#include -#include -#include -#include - -#define TCP_LAN_latency_TOPIC1 "device/TCP_LAN_latency" - -// Logging macro -#define dbg_log1(fmt, ...) fprintf(stderr, "[DEBUG] " fmt "\n", ##__VA_ARGS__) - -// Callback when a message arrives -void on_message(struct mosquitto *mosq, void *userdata, - const struct mosquitto_message *msg) -{ - if (msg->payloadlen) { - printf("Received on topic %s: %s\n", msg->topic, (char *)msg->payload); - printf("✅ Success: Message received\n"); - } else { - printf("Received empty message on topic %s\n", msg->topic); - } -} - -int main(void) -{ - struct mosquitto *mosq; - int rc; - - mosquitto_lib_init(); - - mosq = mosquitto_new("LatencySubscriber", true, NULL); - if (!mosq) { - dbg_log1("Failed to create Mosquitto client"); - mosquitto_lib_cleanup(); - return -1; - } - - mosquitto_message_callback_set(mosq, on_message); - - rc = mosquitto_connect(mosq, - "192.168.245.254", - 1883, - 60); - if (rc != MOSQ_ERR_SUCCESS) { - dbg_log1("Failed to connect: %s", mosquitto_strerror(rc)); - mosquitto_destroy(mosq); - mosquitto_lib_cleanup(); - return 1; - } - - // Subscribe to the same topic publisher uses - rc = mosquitto_subscribe(mosq, NULL, TCP_LAN_latency_TOPIC1, 1); - if (rc != MOSQ_ERR_SUCCESS) { - dbg_log1("Failed to subscribe: %s", mosquitto_strerror(rc)); - mosquitto_destroy(mosq); - mosquitto_lib_cleanup(); - return 1; - } - - dbg_log1("Subscribed to topic: %s", TCP_LAN_latency_TOPIC1); - - // Blocking loop to process messages - mosquitto_loop_forever(mosq, -1, 1); - - mosquitto_destroy(mosq); - mosquitto_lib_cleanup(); - return 0; -} - From 6b0caa201833be4006d6a55cba68e8af61128df1 Mon Sep 17 00:00:00 2001 From: rirfha948 Date: Wed, 24 Sep 2025 03:07:25 +0000 Subject: [PATCH 8/8] RDKB-xx000: LAN side latency measurement Reason for change: LAN side latency measurment Test Procedure: - TBD Risks: None Priority: P3 Signed-off-by: rirfha948 --- source/LatencyMeasurement/xNetDP/xNetDP.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/LatencyMeasurement/xNetDP/xNetDP.c b/source/LatencyMeasurement/xNetDP/xNetDP.c index 3abc7c7b..d32848af 100644 --- a/source/LatencyMeasurement/xNetDP/xNetDP.c +++ b/source/LatencyMeasurement/xNetDP/xNetDP.c @@ -77,7 +77,7 @@ pthread_mutex_t latency_report_lock = PTHREAD_MUTEX_INITIALIZER; #define BUF_SIZE 200 #define MQTT_LOCAL_MQTT_BROKER_IP_ADDR "192.168.245.254" #define MQTT_LOCAL_MQTT_BROKER_PORT_VAL 1883 -#define TCP_LAN_latency_TOPIC "device/TCP_LAN_latency" +#define TCP_LAN_latency_TOPIC "local/tcplatency" #define MQTT_KEEPALIVE_TIME 60 enum ip_family