Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/freebsd/freebsd-src.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristof Provost <kp@FreeBSD.org>2022-11-09 19:11:26 +0300
committerKristof Provost <kp@FreeBSD.org>2022-11-11 13:53:31 +0300
commit26b9e1f07fa5d3e734eeb3d427a8c8a5faf735e6 (patch)
treee0b1bd696448bf24c8f75fb3125de2fac83f7f2c
parent832c8a58e1f748a1e47b49fa510bfc52097268ed (diff)
dummynet: fix codel
Serialize rcvif when enqueing packets for codel. We already tried to restore the serialized rcvif in fq_codel_extract_head(), but that doesn't work when we fail to serialize it first, so we ended up dropping all packets passed through codel. Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D37318
-rw-r--r--sys/netpfil/ipfw/dn_sched_fq_codel.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/netpfil/ipfw/dn_sched_fq_codel.c b/sys/netpfil/ipfw/dn_sched_fq_codel.c
index 97341f5a9a60..0ac7694b6bef 100644
--- a/sys/netpfil/ipfw/dn_sched_fq_codel.c
+++ b/sys/netpfil/ipfw/dn_sched_fq_codel.c
@@ -194,6 +194,9 @@ codel_enqueue(struct fq_codel_flow *q, struct mbuf *m, struct fq_codel_si *si)
*(aqm_time_t *)(mtag + 1) = AQM_UNOW;
m_tag_prepend(m, mtag);
+ if (m->m_pkthdr.rcvif != NULL)
+ m_rcvif_serialize(m);
+
mq_append(&q->mq, m);
fq_update_stats(q, si, len, 0);
return 0;