Page MenuHomeFreeBSD

D32663.id97536.diff
No OneTemporary

D32663.id97536.diff

Index: sys/net/if_epair.c
===================================================================
--- sys/net/if_epair.c
+++ sys/net/if_epair.c
@@ -196,6 +196,19 @@
};
DPCPU_DEFINE(struct epair_dpcpu, epair_dpcpu);
+static void
+epair_clear_mbuf(struct mbuf *m)
+{
+ /* Remove any CSUM_SND_TAG as ether_input will barf. */
+ if (m->m_pkthdr.csum_flags & CSUM_SND_TAG) {
+ m_snd_tag_rele(m->m_pkthdr.snd_tag);
+ m->m_pkthdr.snd_tag = NULL;
+ m->m_pkthdr.csum_flags &= ~CSUM_SND_TAG;
+ }
+
+ m_tag_delete_nonpersistent(m);
+}
+
static void
epair_dpcpu_init(void)
{
@@ -435,6 +448,8 @@
}
DPRINTF("packet %s -> %s\n", ifp->if_xname, oifp->if_xname);
+ epair_clear_mbuf(m);
+
/*
* Add a reference so the interface cannot go while the
* packet is in transit as we rely on rcvif to stay valid.
@@ -545,6 +560,8 @@
IF_UNLOCK(&ifp->if_snd);
#endif
+ epair_clear_mbuf(m);
+
if ((epair_dpcpu->epair_drv_flags & IFF_DRV_OACTIVE) != 0) {
/*
* Our hardware queue is full, try to fall back

File Metadata

Mime Type
text/plain
Expires
Sat, Apr 11, 1:44 AM (18 m, 37 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31260922
Default Alt Text
D32663.id97536.diff (1015 B)

Event Timeline