PERFORCE change 125175 for review
Marko Zec
zec at FreeBSD.org
Wed Aug 15 07:53:58 PDT 2007
http://perforce.freebsd.org/chv.cgi?CH=125175
Change 125175 by zec at zec_tpx32 on 2007/08/15 14:53:40
Clear the M_REMOTE_VNET mbuf flag once it has been used
for defering the direct netisr dispatch.
While here, do style-fixing on a few asserts.
Affected files ...
.. //depot/projects/vimage/src/sys/net/netisr.c#7 edit
Differences ...
==== //depot/projects/vimage/src/sys/net/netisr.c#7 (text+ko) ====
@@ -143,7 +143,7 @@
IF_DEQUEUE(ni->ni_queue, m);
if (m == NULL)
break;
- VNET_ASSERT(m->m_pkthdr.rcvif);
+ VNET_ASSERT(m->m_pkthdr.rcvif != NULL);
CURVNET_SET(m->m_pkthdr.rcvif->if_vnet);
ni->ni_handler(m);
CURVNET_RESTORE();
@@ -167,6 +167,7 @@
m_freem(m);
return;
}
+ VNET_ASSERT(m->m_pkthdr.rcvif != NULL)
/*
* Do direct dispatch only for MPSAFE netisrs (and
* only when enabled). Note that when a netisr is
@@ -201,6 +202,15 @@
*/
ni->ni_handler(m);
} else {
+#ifdef VIMAGE
+ /*
+ * Once direct netisr dispatching is avoided using the
+ * M_REMOTE_VNET flag, it should not be observed any
+ * more, so clear it here in order to avoid further
+ * defering of direct netisr dispatching.
+ */
+ m->m_flags &= ~M_REMOTE_VNET;
+#endif
isrstat.isrs_deferred++;
if (IF_HANDOFF(ni->ni_queue, m, NULL))
schednetisr(num);
@@ -227,7 +237,10 @@
m_freem(m);
return (ENXIO);
}
- VNET_ASSERT(m->m_pkthdr.rcvif)
+ VNET_ASSERT(m->m_pkthdr.rcvif != NULL)
+#ifdef VIMAGE
+ m->m_flags &= ~M_REMOTE_VNET;
+#endif
isrstat.isrs_queued++;
if (!IF_HANDOFF(ni->ni_queue, m, NULL))
return (ENOBUFS); /* IF_HANDOFF has free'd the mbuf */
More information about the p4-projects
mailing list