diff options
Diffstat (limited to 'src/libosmo-mgcp/mgcp_stat.c')
-rw-r--r-- | src/libosmo-mgcp/mgcp_stat.c | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/src/libosmo-mgcp/mgcp_stat.c b/src/libosmo-mgcp/mgcp_stat.c index 581130c..3685cfe 100644 --- a/src/libosmo-mgcp/mgcp_stat.c +++ b/src/libosmo-mgcp/mgcp_stat.c @@ -25,12 +25,14 @@ #include <osmocom/mgcp/mgcp_stat.h> #include <osmocom/mgcp/mgcp_endp.h> #include <limits.h> +#include <inttypes.h> /* Helper function for mgcp_format_stats_rtp() to calculate packet loss */ -void calc_loss(struct mgcp_rtp_state *state, - struct mgcp_rtp_end *end, uint32_t *expected, - int *loss) +void calc_loss(struct mgcp_conn_rtp *conn, uint32_t *expected, int *loss) { + struct mgcp_rtp_state *state = &conn->state; + struct rate_ctr *packets_rx = &conn->rate_ctr_group->ctr[RTP_PACKETS_RX_CTR]; + *expected = state->stats.cycles + state->stats.max_seq; *expected = *expected - state->stats.base_seq + 1; @@ -44,8 +46,8 @@ void calc_loss(struct mgcp_rtp_state *state, * Make sure the sign is correct and use the biggest * positive/negative number that fits. */ - *loss = *expected - end->stats.packets_rx; - if (*expected < end->stats.packets_rx) { + *loss = *expected - packets_rx->current; + if (*expected < packets_rx->current) { if (*loss > 0) *loss = INT_MIN; } else { @@ -70,13 +72,18 @@ static void mgcp_format_stats_rtp(char *str, size_t str_len, int ploss; int nchars; - calc_loss(&conn->state, &conn->end, &expected, &ploss); + struct rate_ctr *packets_rx = &conn->rate_ctr_group->ctr[RTP_PACKETS_RX_CTR]; + struct rate_ctr *octets_rx = &conn->rate_ctr_group->ctr[RTP_OCTETS_RX_CTR]; + struct rate_ctr *packets_tx = &conn->rate_ctr_group->ctr[RTP_PACKETS_TX_CTR]; + struct rate_ctr *octets_tx = &conn->rate_ctr_group->ctr[RTP_OCTETS_TX_CTR]; + + calc_loss(conn, &expected, &ploss); jitter = calc_jitter(&conn->state); nchars = snprintf(str, str_len, - "\r\nP: PS=%u, OS=%u, PR=%u, OR=%u, PL=%d, JI=%u", - conn->end.stats.packets_tx, conn->end.stats.octets_tx, - conn->end.stats.packets_rx, conn->end.stats.octets_rx, + "\r\nP: PS=%" PRIu64 ", OS=%" PRIu64 ", PR=%" PRIu64 ", OR=%" PRIu64 ", PL=%d, JI=%u", + packets_tx->current, octets_tx->current, + packets_rx->current, octets_rx->current, ploss, jitter); if (nchars < 0 || nchars >= str_len) goto truncate; @@ -87,9 +94,9 @@ static void mgcp_format_stats_rtp(char *str, size_t str_len, if (conn->conn->endp->cfg->osmux != OSMUX_USAGE_OFF) { /* Error Counter */ nchars = snprintf(str, str_len, - "\r\nX-Osmo-CP: EC TI=%u, TO=%u", - conn->state.in_stream.err_ts_counter, - conn->state.out_stream.err_ts_counter); + "\r\nX-Osmo-CP: EC TI=%" PRIu64 ", TO=%" PRIu64, + conn->state.in_stream.err_ts_ctr->current, + conn->state.out_stream.err_ts_ctr->current); if (nchars < 0 || nchars >= str_len) goto truncate; |