Date: Thu, 12 Jun 2008 18:17:20 +0300 From: "Yony Yossef" <yonyossef.lists@gmail.com> To: freebsd-net@freebsd.org Cc: liranl@mellanox.co.il Subject: TSO bug in FreeBSD 7.0 ? Message-ID: <20def4870806120817q5b755805hfafa0d0d1523f2ad@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20def4870806120817q5b755805hfafa0d0d1523f2ad>
