pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/32394 )
Change subject: ms: Log MS active/idle state in 'show ms' VTY commands ......................................................................
ms: Log MS active/idle state in 'show ms' VTY commands
Change-Id: Ibcd34055c9ae390510c5c3ba26621fd96d2368fd --- M src/gprs_ms.c M src/gprs_ms.h M src/pcu_vty_functions.cpp 3 files changed, 24 insertions(+), 0 deletions(-)
Approvals: Jenkins Builder: Verified fixeria: Looks good to me, but someone else must approve osmith: Looks good to me, but someone else must approve pespin: Looks good to me, approved
diff --git a/src/gprs_ms.c b/src/gprs_ms.c index 720617e..0018252 100644 --- a/src/gprs_ms.c +++ b/src/gprs_ms.c @@ -219,6 +219,8 @@ { unsigned long delay_rel_sec = osmo_tdef_get(ms->bts->pcu->T_defs, -2030, OSMO_TDEF_S, -1);
+ osmo_gettimeofday(&ms->tv_idle_start, NULL); + ms_set_reserved_slots(ms, NULL, 0, 0); ms->first_common_ts = NULL;
@@ -251,6 +253,7 @@
LOGPMS(ms, DMS, LOGL_DEBUG, "Cancel scheduled MS release\n");
+ timerclear(&ms->tv_idle_start); osmo_timer_del(&ms->release_timer); }
diff --git a/src/gprs_ms.h b/src/gprs_ms.h index b2b3274..ef1cc4e 100644 --- a/src/gprs_ms.h +++ b/src/gprs_ms.h @@ -80,6 +80,8 @@
struct osmo_use_count use_count; struct osmo_timer_list release_timer; + /* Time at which MS became idle and waiting to be released by release_timer: */ + struct timeval tv_idle_start;
int64_t last_cs_not_low;
diff --git a/src/pcu_vty_functions.cpp b/src/pcu_vty_functions.cpp index fe51203..b7fcc8f 100644 --- a/src/pcu_vty_functions.cpp +++ b/src/pcu_vty_functions.cpp @@ -148,6 +148,16 @@ uint8_t slots;
vty_out(vty, "MS TLLI=%08x, IMSI=%s%s", ms_tlli(ms), ms_imsi(ms), VTY_NEWLINE); + if (osmo_timer_pending(&ms->release_timer)) { + struct timeval tv_now, tv_res1, tv_res2; + osmo_gettimeofday(&tv_now, NULL); + timersub(&tv_now, &ms->tv_idle_start, &tv_res1); + osmo_timer_remaining(&ms->release_timer, &tv_now, &tv_res2); + vty_out(vty, " State: IDLE for %lus, release in %lus%s", + tv_res1.tv_sec, tv_res2.tv_sec, VTY_NEWLINE); + } else { + vty_out(vty, " State: ACTIVE%s", VTY_NEWLINE); + } vty_out(vty, " Timing advance (TA): %d%s", ms_ta(ms), VTY_NEWLINE); vty_out(vty, " Coding scheme uplink: %s%s", mcs_name(ms_current_cs_ul(ms)), VTY_NEWLINE);