Age | Commit message (Collapse) | Author |
|
with m_tag_copy_chain() failures.
Use m_defrag() to eliminate hand rolled defragging of mbufs and
some uses of M_DUP_PKTHDR().
Original diff from thib@, claudio@'s feedback integrated by me.
Tests kevlo@ claudio@, "reads ok" blambert@
ok thib@ claudio@, "m_defrag() bits ok" kettenis@
|
|
struct to 0/NULL. no performance impact but way less error prone on
addition of new pkthdr field (as just ran into with a theo diff). ok theo
|
|
running out of mbufs for rx rings.
if the system low watermark is lower than a rx rings low watermark,
we'll never send a packet up the stack, we'll always recycle it.
found by thib@ on a bge
sadface
|
|
to free some for use on the rx rings on network cards.
this modifies m_cluncount to advise callers when we're in such a
situation, and makes them responsible for freeing up the cluster
for allocation by MCLGETI later.
fixes an awesome lockup with sis(4) henning has been experiencing.
this is not the best fix, but it is better than the current situation.
yep deraadt@ tested by henning@
|
|
ok dlg thib
|
|
to the per-ipf mbuf cluster reference counters
ok dlg claudio
|
|
|
|
the chain
ok henning
|
|
the most common operation is checking for a particular tag to be there.
in the majority of the cases it is not.
introduce a "tagsset" in the mbuf packet header which has a bit for
each mbuf tag type that is in the chain set, checking for its existance
is now as easy and cheap as (tagsset & type) != 0. theo ok
|
|
this lets m_freem() only do one splnet/splx instead of repeating this all
the way down a chain
ok henning claudio dlg
|
|
|
|
reducing the amount of splnet/splx dancing required.. especially in the
worst case (of m_cldrop)
ok dlg kettenis damien
|
|
addition of rdomain to struct pkthdr.
"Doh!" claudio@
ok henning@
|
|
alternate routing table and separate them from other interfaces in distinct
routing tables. The same network can now be used in any doamin at the same
time without causing conflicts.
This diff is mostly mechanical and adds the necessary rdomain checks accross
net and netinet. L2 and IPv4 are mostly covered still missing pf and IPv6.
input and tested by jsg@, phessler@ and reyk@. "put it in" deraadt@
|
|
calling M_PREPEND is now #define'd to be calling m_prepend.
Shaves an unknown but assumed-to-be-nontrivial amount from the kernel.
ok claudio@ henning@(who may have had to okay this twice to get me to notice)
|
|
the panic string.
|
|
did not care either and with this packets from drivers with external buffers
(e.g. wpi(4)) would trigger this panic through pf(4).
Found the hard way by Tim van der Molen tbvdm (at) xs4all (dot) nl
|
|
(M_TRAILINGSPACE()) and allocate one cluster if needed (instead of chaining
many mbufs). Somewhat needed for the rl(4) fix to ensure that the ethernet
header is in one mbuf for sure. Tested by landry@ and myself
|
|
to prevent the hwm growing beyond that. this allows the livelock mitigation
to do something where the hwm used to grow beyond twice the rx rings size.
ok kettenis@ claudio@
|
|
OK dlg@
|
|
this pool (and the mbstat variables, and a few other things in certain
cases)
ok mikeb, tedu, and discussion with others...
|
|
the issues seen by damien@. OK dlg@, damien@
|
|
|
|
drivers are guaranteed to make progress. We could probably set it to 1,
but we set it to 2, to make sure drivers that link descriptors don't link
a descriptor back to itself.
ok deraadt@, dlg@
|
|
|
|
inside if_data, so that netstat(1) and systat(1) can see them
ok dlg
|
|
them in again.
|
|
|
|
|
|
todo. Discussed with deraadt@ and dlg@
|
|
|
|
single buffer without changing the head mbuf. This is done with a lot of
magic so there will be dragons.
Tested and OK dlg@, kettenis@
|
|
|
|
allocators again.
|
|
ok dlg
|
|
but don't do that in m_free() as that will cause a double loop behaviour when
called via m_freem().
OK dlg@, deraadt@
|
|
objects. dmesg is being spammed with splasserts.
disable the 8k, 9k, 12k, 16k, and 64k backend pools for the cluster
allocator.
art will fix this when he gets back from dinner, otherwise i'll nag more.
|
|
allocator.
|
|
other option
ok dlg
|
|
of. currently limited to MCLBYTES (2048 bytes) and 4096 bytes until pools
can allocate objects of sizes greater than PAGESIZE.
this allows drivers to ask for "jumbo" packets to fill rx rings with.
the second half of this change is per interface mbuf cluster allocator
statistics. drivers can use the new interface (MCLGETI), which will use
these stats to selectively fail allocations based on demand for mbufs. if
the driver isnt rapidly consuming rx mbufs, we dont allow it to allocate
many to put on its rx ring.
drivers require modifications to take advantage of both the new allocation
semantic and large clusters.
this was written and developed with deraadt@ over the last two days
ok deraadt@ claudio@
|
|
now the offset into the first mbuf of the target chain before copying
the source data over. From FreeBSD.
Convert drivers' use of m_devget(). Mostly from thib@.
Update mbuf(9) man page.
ok claudio@, thib@
|
|
|
|
used once -- in m_free(). Removed so that people don't get stupid ideas.
OK thib@
|
|
free the mbuf before bailing out.
ok claudio@
|
|
header inbound. on the outbound side, we take that and look for the key
that is the exact opposite, and store that mapping in the state key. on
subsequent packets we don't have to do the lookup on outbound any more.
almost unable to get real benchmarks going here, we know for sure this
gives a more than 5% increase in forwarding performance.
many thanks to ckuethe for stress- and performance-testing.
ok ryan theo
|
|
zero all flags when we pool_put mbufs.
ok claudio@ henning@
|
|
the flag argument to the m_*get* functions. Since PR_LIMITFAIL
can cause us to return NULL if hit the limits.
ok claudio@
|
|
this reduces kernel size quite a bit. ok claudio
|
|
mbuf back.
for fixing PR5563 in a few, tested janjaap@stack.nl, ok claudio
|
|
Also remove the _MEXTREMOVE macro which was only used by MFREE.
This time with the uipc_mbuf.c change that I missed last time.
|