|
|
|
@ -5212,8 +5212,12 @@ static uint32_t rtp_packet_index(struct re_crypto_context *c, |
|
|
|
spin_lock_irqsave(&c->lock, flags); |
|
|
|
|
|
|
|
/* rfc 3711 section 3.3.1 */ |
|
|
|
index = atomic_read(&ssrc_stats[ssrc_idx]->ext_seq); |
|
|
|
if (unlikely(!index)) |
|
|
|
if (ssrc_stats[ssrc_idx]) { |
|
|
|
index = atomic_read(&ssrc_stats[ssrc_idx]->ext_seq); |
|
|
|
if (unlikely(!index)) |
|
|
|
index = seq; |
|
|
|
} |
|
|
|
else |
|
|
|
index = seq; |
|
|
|
|
|
|
|
/* rfc 3711 appendix A, modified, and sections 3.3 and 3.3.1 */ |
|
|
|
@ -5234,7 +5238,8 @@ static uint32_t rtp_packet_index(struct re_crypto_context *c, |
|
|
|
} |
|
|
|
|
|
|
|
index = (v << 16) | seq; |
|
|
|
atomic_set(&ssrc_stats[ssrc_idx]->ext_seq, index); |
|
|
|
if (ssrc_stats[ssrc_idx]) |
|
|
|
atomic_set(&ssrc_stats[ssrc_idx]->ext_seq, index); |
|
|
|
|
|
|
|
spin_unlock_irqrestore(&c->lock, flags); |
|
|
|
|
|
|
|
@ -5248,7 +5253,8 @@ static void update_packet_index(struct re_crypto_context *c, |
|
|
|
if (ssrc_idx < 0) |
|
|
|
ssrc_idx = 0; |
|
|
|
|
|
|
|
atomic_set(&ssrc_stats[ssrc_idx]->ext_seq, idx); |
|
|
|
if (ssrc_stats[ssrc_idx]) |
|
|
|
atomic_set(&ssrc_stats[ssrc_idx]->ext_seq, idx); |
|
|
|
} |
|
|
|
|
|
|
|
static int srtp_hash(unsigned char *hmac, |
|
|
|
@ -6155,6 +6161,9 @@ static void rtp_stats(struct rtpengine_target *g, struct rtp_parsed *rtp, s64 ar |
|
|
|
int32_t d; |
|
|
|
uint32_t new_seq; |
|
|
|
|
|
|
|
if (!s) |
|
|
|
return; |
|
|
|
|
|
|
|
uint16_t seq = ntohs(rtp->rtp_header->seq_num); |
|
|
|
uint32_t ts = ntohl(rtp->rtp_header->timestamp); |
|
|
|
|
|
|
|
@ -6374,7 +6383,7 @@ static unsigned int rtpengine46(struct sk_buff *skb, struct sk_buff *oskb, |
|
|
|
if (g->target.pt_filter) |
|
|
|
goto out; |
|
|
|
} |
|
|
|
else if (ssrc_idx >= 0) { |
|
|
|
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); |
|
|
|
|