diff --git a/src/control_server.c b/src/control_server.c index 92f2658..c144f8a 100644 --- a/src/control_server.c +++ b/src/control_server.c @@ -948,6 +948,7 @@ static void send_metrics(struct control_server* server, struct control_client* c link_info[i].keepalive_recv = (uint32_t)link->keepalive_recv_count; link_info[i].inflight_bytes = link->inflight_bytes; link_info[i].inflight_packets = link->inflight_packets; + link_info[i].inflight_lim_bytes = link->inflight_lim_bytes; link = link->next; } diff --git a/tools/etcpmon/etcpmon_gui.c b/tools/etcpmon/etcpmon_gui.c index 44904a3..ba81a0f 100644 --- a/tools/etcpmon/etcpmon_gui.c +++ b/tools/etcpmon/etcpmon_gui.c @@ -548,6 +548,9 @@ static void CreateControls(struct etcpmon_app* app) { app->hEditWaitAckTimer = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "", WS_CHILD | WS_VISIBLE | ES_READONLY | ES_CENTER, q_col1 + 195, qy - 2, 60, 18, hWnd, (HMENU)IDC_EDIT_WAITACK_TIMER, hInst, NULL); + app->hEditWaitAckOptInfl = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "", + WS_CHILD | WS_VISIBLE | ES_READONLY | ES_CENTER, + q_col1 + 260, qy - 2, 60, 18, hWnd, (HMENU)IDC_EDIT_WAITACK_OPT_INFL, hInst, NULL); /* ID metrics - row 4 */ // qy += 30; @@ -1001,6 +1004,7 @@ void etcpmon_gui_update_metrics(struct etcpmon_app* app, UpdateEditIfChanged(hMain, IDC_EDIT_WAITACK_SUSP, "%s", metrics->etcp.wait_ack_cb_suspended ? "ON" : "OFF"); UpdateEditIfChanged(hMain, IDC_EDIT_WAITACK_CB, "%s", metrics->etcp.wait_ack_cb_set ? "ON" : "OFF"); UpdateEditIfChanged(hMain, IDC_EDIT_WAITACK_TIMER, "%s", metrics->etcp.wait_ack_resume_timeout ? "ON" : "OFF"); + UpdateEditIfChanged(hMain, IDC_EDIT_WAITACK_OPT_INFL, "%u", metrics->etcp.optimal_inflight); /* ID Metrics */ UpdateEditIfChanged(hMain, IDC_EDIT_ID_NEXT_TX, "%u", metrics->etcp.next_tx_id); @@ -1057,7 +1061,7 @@ void etcpmon_gui_update_metrics(struct etcpmon_app* app, snprintf(line2, sizeof(line2), " RTT=%.1f ms, avg10=%.1f ms, TT=%.1f ms Timers: Init=%s, KA=%s, Shaper=%s | " - "KAsent=%u, KArecv=%u, InB/P=%u/%u", + "KAsent=%u, KArecv=%u, InB/L/P=%u/%u/%u", (float)links[i].rtt_last/10.0f, (float)links[i].rtt_avg10/10.0f, (float)links[i].tt_last/10.f, @@ -1067,6 +1071,7 @@ void etcpmon_gui_update_metrics(struct etcpmon_app* app, links[i].keepalive_sent, links[i].keepalive_recv, links[i].inflight_bytes, + links[i].inflight_lim_bytes, links[i].inflight_packets); SendMessageA(app->hListLinks, LB_ADDSTRING, 0, (LPARAM)line1); diff --git a/tools/etcpmon/etcpmon_gui.h b/tools/etcpmon/etcpmon_gui.h index 57079fd..d74b9d8 100644 --- a/tools/etcpmon/etcpmon_gui.h +++ b/tools/etcpmon/etcpmon_gui.h @@ -103,6 +103,7 @@ extern "C" { #define IDC_EDIT_WAITACK_SUSP 650 #define IDC_EDIT_WAITACK_CB 651 #define IDC_EDIT_WAITACK_TIMER 652 +#define IDC_EDIT_WAITACK_OPT_INFL 653 /* ID Metrics control IDs */ #define IDC_STATIC_IDS 640 @@ -250,6 +251,7 @@ struct etcpmon_app { HWND hEditWaitAckSuspend; HWND hEditWaitAckCb; HWND hEditWaitAckTimer; + HWND hEditWaitAckOptInfl; /* ID metrics */ HWND hEditIdNextTx; diff --git a/tools/etcpmon/etcpmon_protocol.h b/tools/etcpmon/etcpmon_protocol.h index a924ddb..5996eb4 100644 --- a/tools/etcpmon/etcpmon_protocol.h +++ b/tools/etcpmon/etcpmon_protocol.h @@ -197,6 +197,7 @@ struct etcpmon_link_metrics { /* Inflight counters */ uint32_t inflight_bytes; uint32_t inflight_packets; + uint32_t inflight_lim_bytes; }; /* TUN interface metrics */