MT#63317 add SSRC mapping to kernel

Change-Id: If3af2ff872be340be57a2c53c35fcf2d83af6587
rfuchs/dtls-ice
Richard Fuchs 8 months ago
parent 44deb79faa
commit d78064344a

@ -1695,6 +1695,12 @@ static const char *kernelize_target(kernelize_state *s, struct packet_stream *st
s->ssrc[u] = se; // no reference needed
reti->ssrc[u] = htonl(se->h.ssrc);
reti->ssrc_stats[u] = se->stats;
reti->ssrc_media_idx[u] = -1u;
if (se->media) {
unsigned int media_idx = se->media->index - 1;
reti->ssrc_media_idx[u] = media_idx;
fill_media_sinks(s, media_idx, stream);
}
u++;
}

@ -1728,11 +1728,19 @@ static int proc_list_show(struct seq_file *f, void *v) {
for (i = 0; i < ARRAY_SIZE(g->target.ssrc); i++) {
if (!g->target.ssrc[i] || !g->target.ssrc_stats[i])
break;
seq_printf(f, "%s %lx [seq %u/%u]",
(i == 0) ? "" : ",",
(unsigned long) ntohl(g->target.ssrc[i]),
atomic_read(&g->target.ssrc_stats[i]->ext_seq),
atomic_read(&g->target.ssrc_stats[i]->rtcp_seq));
if (g->target.ssrc_media_idx[i] == -1u)
seq_printf(f, "%s %lx [seq %u/%u]",
(i == 0) ? "" : ",",
(unsigned long) ntohl(g->target.ssrc[i]),
atomic_read(&g->target.ssrc_stats[i]->ext_seq),
atomic_read(&g->target.ssrc_stats[i]->rtcp_seq));
else
seq_printf(f, "%s %lx [seq %u/%u #%u]",
(i == 0) ? "" : ",",
(unsigned long) ntohl(g->target.ssrc[i]),
atomic_read(&g->target.ssrc_stats[i]->ext_seq),
atomic_read(&g->target.ssrc_stats[i]->rtcp_seq),
g->target.ssrc_media_idx[i]);
}
seq_printf(f, "\n");
@ -6483,6 +6491,9 @@ static unsigned int rtpengine46(struct sk_buff *skb, struct sk_buff *oskb,
if (ssrc_idx == -2 || (ssrc_idx == -1 && g->target.ssrc_req))
goto out_error;
if (output_group_idx == -1u)
output_group_idx = g->target.ssrc_media_idx[ssrc_idx];
pkt_idx = rtp_packet_index(&g->decrypt_rtp, &g->target.decrypt, rtp.rtp_header, ssrc_idx,
g->target.ssrc_stats);
errstr = "SRTP authentication tag mismatch";

@ -102,6 +102,7 @@ struct rtpengine_target_info {
struct rtpengine_srtp decrypt;
uint32_t ssrc[RTPE_NUM_SSRC_TRACKING]; // Expose the SSRC to userspace when we resync.
struct ssrc_stats *ssrc_stats[RTPE_NUM_SSRC_TRACKING];
unsigned int ssrc_media_idx[RTPE_NUM_PAYLOAD_TYPES]; // same idx as ssrc
struct rtp_stats *pt_stats[RTPE_NUM_PAYLOAD_TYPES]; // must be sorted by PT
unsigned int pt_media_idx[RTPE_NUM_PAYLOAD_TYPES]; // same idx as pt_stats

Loading…
Cancel
Save