diff --git a/daemon/call.c b/daemon/call.c index 3e665289a..9da02016f 100644 --- a/daemon/call.c +++ b/daemon/call.c @@ -198,7 +198,7 @@ static void call_timer_iterator(call_t *c, struct iterator_helper *hlp) { timestamp = atomic64_get_na(&ps->media->ice_agent->last_activity) / 1000000; // XXX if (PS_ISSET(ps, RTP)) { - if (timeval_from_us(rtpe_now).tv_sec - atomic64_get_na(&ps->stats_in->last_packet) < 2) { + if (rtpe_now - atomic64_get_na(&ps->stats_in->last_packet_us) < 2000000LL) { // kernel activity if (rtpe_now - atomic64_get_na(&ps->last_packet_us) < 2000000LL) hlp->user_kernel_streams++; // user activity diff --git a/daemon/call_interfaces.c b/daemon/call_interfaces.c index 14e799ade..bf96d2fc6 100644 --- a/daemon/call_interfaces.c +++ b/daemon/call_interfaces.c @@ -2797,7 +2797,7 @@ static void ng_stats_stream(ng_command_ctx_t *ctx, parser_arg list, const struct parser->dict_add_string(dict, "crypto suite", ps->crypto.params.crypto_suite->name); parser->dict_add_int(dict, "last packet", packet_stream_last_packet(ps)); - parser->dict_add_int(dict, "last kernel packet", atomic64_get_na(&ps->stats_in->last_packet)); + parser->dict_add_int(dict, "last kernel packet", atomic64_get_na(&ps->stats_in->last_packet_us) / 1000000LL); parser->dict_add_int(dict, "last user packet", atomic64_get_na(&ps->last_packet_us) / 1000000LL); flags = parser->dict_add_list(dict, "flags"); diff --git a/daemon/cli.c b/daemon/cli.c index b5ab4e4f2..bb6c5a652 100644 --- a/daemon/cli.c +++ b/daemon/cli.c @@ -813,7 +813,7 @@ static void cli_list_tag_info(struct cli_writer *cw, struct call_monologue *ml) atomic64_get_na(&ps->stats_in->bytes), atomic64_get_na(&ps->stats_in->errors), atomic64_get_na(&ps->last_packet_us) / 1000000L, - atomic64_get_na(&ps->stats_in->last_packet)); + atomic64_get_na(&ps->stats_in->last_packet_us) / 1000000L); cw->cw_printf(cw, "\n"); } } diff --git a/include/call.h b/include/call.h index 3f8bca79a..aab927ca2 100644 --- a/include/call.h +++ b/include/call.h @@ -469,7 +469,7 @@ struct packet_stream { INLINE uint64_t packet_stream_last_packet(const struct packet_stream *ps) { uint64_t lp1 = atomic64_get_na(&ps->last_packet_us) / 1000000L; - uint64_t lp2 = atomic64_get_na(&ps->stats_in->last_packet); + uint64_t lp2 = atomic64_get_na(&ps->stats_in->last_packet_us) / 1000000L; return MAX(lp1, lp2); } diff --git a/kernel-module/common_stats.h b/kernel-module/common_stats.h index 15b90c81d..4bc2f655b 100644 --- a/kernel-module/common_stats.h +++ b/kernel-module/common_stats.h @@ -49,7 +49,7 @@ struct stream_stats { atomic64 packets; atomic64 bytes; atomic64 errors; - atomic64 last_packet; + atomic64 last_packet_us; atomic_t tos; }; diff --git a/kernel-module/xt_RTPENGINE.c b/kernel-module/xt_RTPENGINE.c index 3af19d86d..4a48f34e2 100644 --- a/kernel-module/xt_RTPENGINE.c +++ b/kernel-module/xt_RTPENGINE.c @@ -1717,7 +1717,8 @@ static int proc_list_show(struct seq_file *f, void *v) { (unsigned long long) atomic64_read(&g->target.pt_stats[i]->packets)); } - seq_printf(f, " last packet: %lli", (long long) atomic64_read(&g->target.stats->last_packet)); + seq_printf(f, " last packet: %lli", + (long long) atomic64_read(&g->target.stats->last_packet_us) / 1000000L); seq_printf(f, " SSRC in:"); for (i = 0; i < ARRAY_SIZE(g->target.ssrc); i++) { @@ -6308,7 +6309,7 @@ static unsigned int rtpengine46(struct sk_buff *skb, struct sk_buff *oskb, goto out_error; } - packet_ts = ktime_divns(skb->tstamp, 1000000000LL); + packet_ts = ktime_to_us(skb->tstamp); if (g->target.dtls && is_dtls(skb)) goto out; @@ -6369,7 +6370,7 @@ static unsigned int rtpengine46(struct sk_buff *skb, struct sk_buff *oskb, else if (ssrc_idx >= 0 && g->target.ssrc_stats[ssrc_idx]) { atomic_set(&g->target.ssrc_stats[ssrc_idx]->last_pt, g->target.pt_stats[rtp_pt_idx]->payload_type); - atomic64_set(&g->target.ssrc_stats[ssrc_idx]->last_packet, packet_ts); + atomic64_set(&g->target.ssrc_stats[ssrc_idx]->last_packet, packet_ts / 1000000L); } errstr = "SRTP decryption failed"; @@ -6483,7 +6484,7 @@ static unsigned int rtpengine46(struct sk_buff *skb, struct sk_buff *oskb, do_stats: atomic_set(&g->target.stats->tos, in_tos); - atomic64_set(&g->target.stats->last_packet, packet_ts); + atomic64_set(&g->target.stats->last_packet_us, packet_ts); atomic64_inc(&g->target.stats->packets); atomic64_add(datalen, &g->target.stats->bytes);