Subject: Re: NetBSD/xen network problems (need help)
To: None <bouyer@antioche.eu.org>
From: YAMAMOTO Takashi <yamt@mwd.biglobe.ne.jp>
List: port-xen
Date: 03/15/2006 18:34:41
> I think setting m_len to 0 will cause the m_copyback() to add a second mbuf to
> the chain to store the data, leaving the first one with a NULL size.

yes, it's why i said "the minimal fix". :-)

it's also trivial to make m_copyback to use trailing space of
the given mbuf if any.  but let's fix the problem first,
and then optimize it.

> Now, it seems that m_copyback() adjust m->m_pkthdr.len, but not m->m_len.
> Should it ? It so, adding
> 			m->m_len = m->m_pkthdr.len;
> after the call to m_copyback() should be enough.

i'd say the mbuf chain is "broken" unless m->m_pkthdr.len is the sum of
m->m_len in the chain.

besides, i don't think it's a good idea to assume that
the result of m_copyback is a single mbuf.

YAMAMOTO Takashi