On Thu, Jan 09, 2014 at 04:06:09PM +0100, Alexandre Martins wrote:
> Dear,
> I experience some troubles with the igb device driver on FreeBSD 10-RC4.
> The kernel make a pagefault in the igb_tx_ctx_setup function when accessing 
> to 
> a IPv6 header.
> The network configuration is the following:
>  - box acting as an IPv6 router
>  - one interface with an IPv6 (igb0)
>  - another interface with a vlan, and IPv6 on it (vlan0 on igb1)
> Vlan Hardware tagging is set on both interfaces.
> The packet that cause the crash come from igb0 and go to vlan0.
> After investigation, i see that the mbuf is split in two. The first one carry 
> the ethernet header, the second, the IPv6 header and data payload.
> The split is due to the "m_copy" done in ip6_forward, that make the mbuf not 
> writable and the "M_PREPEND" in ether_output that insert the new mbuf before 
> the original one.
> The kernel crashes only if the newly allocated mbuf is at the end of a memory 
> page, and no page is available after this one. So, it's extremly rare.
> I inserted a "KASSERT" into the function (see attached patch) to check this 
> behavior, and it raises on every IPv6 forwarded packet to the vlan. The 
> problem disapear if i remove hardware tagging.
> In the commit 256200, i see that pullups has been removed. May it be related ?

I think I introduced the header parsing code to meet controller
requirement in em(4) and Jack borrowed that code in the past but it
seems it was removed in r256200.  It seems igb_tx_ctx_setup()
assumes it can access ethernet/IP/TCP/UDP headers in the first mbuf
of the chain.
This looks wrong to me.

> Can you confirm the problem ?

Probably Jack can tell more about change made in r256200.  It's not
easy for me to verify correctness of igb(4) at this moment.

> Best regards
> -- 
> Alexandre Martins
> NETASQ -- We secure IT

freebsd-current@freebsd.org mailing list
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to