MT#55283 move last_pt to SSRC context

We track last PT per SSRC in the daemon, so we should do the same in the
kernel module.

Change-Id: I1aa1382e3b81e756bcedbe3f588d0c3d12914ad9
pull/1826/head
Richard Fuchs 2 years ago
parent d45cdc85ce
commit 7599e55a59

@ -3406,6 +3406,10 @@ enum thread_looper_action kernel_stats_updater(void) {
for (unsigned int u = 0; u < G_N_ELEMENTS(ke->target.ssrc); u++) {
if (!ke->target.ssrc[u]) // end of list
break;
struct ssrc_ctx *in_ctx = __hunt_ssrc_ctx(ntohl(ke->target.ssrc[u]),
ps->ssrc_in, 0);
if (!in_ctx)
continue;
uint32_t out_ssrc = o->ssrc_out[u];
if (!out_ssrc)
out_ssrc = ke->target.ssrc[u];
@ -3413,9 +3417,9 @@ enum thread_looper_action kernel_stats_updater(void) {
sink->ssrc_out, 0);
if (!ctx)
continue;
if (rtpe_now.tv_sec - atomic64_get_na(&ps->stats_in->last_packet) < 2)
if (rtpe_now.tv_sec - atomic64_get_na(&in_ctx->stats->last_packet) < 2)
payload_tracker_add(&ctx->tracker,
atomic_get_na(&ps->stats_in->last_pt));
atomic_get_na(&in_ctx->stats->last_pt));
// XXX redis update
}
mutex_unlock(&sink->out_lock);
@ -3431,9 +3435,9 @@ enum thread_looper_action kernel_stats_updater(void) {
if (!ctx)
continue;
if (rtpe_now.tv_sec - atomic64_get_na(&ps->stats_in->last_packet) < 2)
if (rtpe_now.tv_sec - atomic64_get_na(&ctx->stats->last_packet) < 2)
payload_tracker_add(&ctx->tracker,
atomic_get_na(&ps->stats_in->last_pt));
atomic_get_na(&ctx->stats->last_pt));
// XXX redis update
}

@ -47,7 +47,6 @@ struct stream_stats {
atomic64 bytes;
atomic64 errors;
atomic64 last_packet;
atomic_t last_pt;
atomic_t tos;
};
@ -69,6 +68,8 @@ struct ssrc_stats {
atomic_t total_lost;
atomic_t transit;
atomic_t jitter;
atomic64 last_packet;
atomic_t last_pt;
};
#endif

@ -5429,8 +5429,11 @@ static unsigned int rtpengine46(struct sk_buff *skb, struct sk_buff *oskb,
if (g->target.pt_filter)
goto out;
}
else
atomic_set(&g->target.stats->last_pt, g->target.pt_stats[rtp_pt_idx]->payload_type);
else if (ssrc_idx >= 0) {
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);
}
errstr = "SRTP decryption failed";
err = srtp_decrypt(&g->decrypt_rtp, &g->target.decrypt, &rtp, &pkt_idx);

Loading…
Cancel
Save