mbuf_tag memory freeing issues with LRO enabled on the XENHVM driver

Egoitz Aurrekoetxea egoitz at ramattack.net
Tue Feb 11 18:13:10 UTC 2014


Good afternoon,

It seems the LRO code inside the FreeBSD's kernel is causing the first mbuf chain’s anymbuf->m_hdr->mh_flags due to some failure not to contain the M_PKTHDR  flag. 
Have you ever seen this bad behavior with any of these  drivers having LRO enabled : 

cxgb
cxgbe
e1000
ixgbe
ixgbe
mxge
oce
qlxgb
qlxge
virtio
vxge

The no presence of this flag, seems to be causing the kernel not to be able to enter : 

static void
mb_dtor_pack(void *mem, int size, void *arg)
{
	struct mbuf *m;

	m = (struct mbuf *)mem;
	if ((m->m_flags & M_PKTHDR) != 0)
		m_tag_delete_chain(m, NULL);              <============ to this function.

causing the wired memory to increase a lot due mbuf_tags usage memory to be pretty high.

I have noticed about this issue using the XENHVM network driver (xn), but taking a look at some other drivers using the same code as this one… have found the commented before ones….

Has anyone too suffered the issue?.

Best regards,




More information about the freebsd-hackers mailing list