TSO bug in FreeBSD 7.0 ?
Yony Yossef
yonyossef.lists at gmail.com
Thu Jun 12 15:17:21 UTC 2008
Hi freebsd-net,
I'm seeing mbuf chains larger than 64K being sent down by FreeBSD 7 when TSO
is enabled.
Then my driver crashes in bus_dmamap_load_mbuf_sg (error=EINVAL).
I'm printing the mbuf m_pkthdr.len size right after the DEQUEUE from the
stack:
IFQ_DRV_DEQUEUE(&dev->if_snd, m_head);
if (m_head == NULL)
break;
if (m_head->m_pkthdr.len > 65000) {
printf("TSO packet mbuf len:%d\n", m_head->m_pkthdr.len);
}
and the output is:
....
TSO packet mbuf len:65387
TSO packet mbuf len:65417
TSO packet mbuf len:65447
TSO packet mbuf len:65477
TSO packet mbuf len:65507
TSO packet mbuf len:65537
mtnic0: bus_dmamap_load_mbuf_sg error: 22
xmit_failure:12
...
Note the 65537, I've also seen TSO packets sized 65542.
There's this old thread talking about it:
http://unix.derkeiler.com/Mailing-Lists/FreeBSD/net/2007-02/msg00312.html
but I've seen no solution for this bug.
Is there a fix for that?
Thanks,
Yony
More information about the freebsd-net
mailing list