9.2 ixgbe tx queue hang

Markus Gebert markus.gebert at hostpoint.ch
Tue Mar 25 23:21:45 UTC 2014


On 26.03.2014, at 00:06, Christopher Forgeron <csforgeron at gmail.com> wrote:

> Update:
> 
> I'm changing my mind, and I believe Rick's TSO patch is fixing things
> (sorry). In looking at my notes, it's possible I had lagg on for those
> tests.  lagg does seem to negate the TSO patch in my case.

I’m glad to hear you could check that scenario again. In the other email I just sent, I just asked you to redo this test. Now it makes perfect sense why you saw oversized packets despite Rick’s if_hw_tsomax patch.


> kernel.10stable_basicTSO_65535/
> 
> - IP_MAXPACKET = 65535;
> - manually forced (no if statement) ifp->if_hw_tsomax = IP_MAXPACKET -
> (ETHER_HDR_LEN + ETHER_VLAN_ENCAP_LEN);
> - Verified on boot via printf that ifp->if_hw_tsomax = 65517

Is 65517 correct? With Ricks patch, I get this:

dev.ix.0.hw_tsomax: 65518

Also the dtrace command you used excludes 65518...

> - Boot in a NON LAGG environment.  ix0 only.
> 
> ixgbe's printf is showing packets up to 65530. Haven't run long enough yet
> to see if anything will go over 65535
> 
> I have this tcpdump running to check packet size.
> tcpdump -ennvvXS -i ix0 greater 65518
> 
> I do expect to get packets over 65518, but I was just curious to see if any
> of them would go over 65535. Time will tell.
> 
> In a separate test, If I enable lagg, we have LOTS of oversized packet
> problems. It looks like tsomax is definitely not making it through in
> if_lagg.c - Any recommendations there? I will eventually need lagg, as I'm
> sure will others.

I think somebody has to invent a way to propagate if_hw_maxtso to interfaces on top of each other.


> With dtrace, it's showing t_tsomax >= 65518. Shouldn't that not be
> happening?

Looks like these all come from bce interfaces (bce_intr in the stack trace), which probably have another value for if_hw_tsomax.


Markus


> dtrace -n 'fbt::tcp_output:entry / args[0]->t_tsomax != 0 &&
> args[0]->t_tsomax >= 65518 / { printf("unexpected tp->t_tsomax: %i\n",
> args[0]->t_tsomax); stack(); }'
> 
> 
>  6  31403                 tcp_output:entry unexpected tp->t_tsomax: 65535
> 
>              kernel`tcp_do_segment+0x2c99
>              kernel`tcp_input+0x11a2
>              kernel`ip_input+0xa2
>              kernel`netisr_dispatch_src+0x5e
>              kernel`ether_demux+0x12a
>              kernel`ether_nh_input+0x35f
>              kernel`netisr_dispatch_src+0x5e
>              kernel`bce_intr+0x765
>              kernel`intr_event_execute_handlers+0xab
>              kernel`ithread_loop+0x96
>              kernel`fork_exit+0x9a
>              kernel`0xffffffff80c75b2e
> 
>  3  31403                 tcp_output:entry unexpected tp->t_tsomax: 65535
> 
>              kernel`tcp_do_segment+0x2c99
>              kernel`tcp_input+0x11a2
>              kernel`ip_input+0xa2
>              kernel`netisr_dispatch_src+0x5e
>              kernel`ether_demux+0x12a
>              kernel`ether_nh_input+0x35f
>              kernel`netisr_dispatch_src+0x5e
>              kernel`bce_intr+0x765
>              kernel`intr_event_execute_handlers+0xab
>              kernel`ithread_loop+0x96
>              kernel`fork_exit+0x9a
>              kernel`0xffffffff80c75b2e
> 
>  6  31403                 tcp_output:entry unexpected tp->t_tsomax: 65535
> 
>              kernel`tcp_do_segment+0x2c99
>              kernel`tcp_input+0x11a2
>              kernel`ip_input+0xa2
>              kernel`netisr_dispatch_src+0x5e
>              kernel`ether_demux+0x12a
>              kernel`ether_nh_input+0x35f
>              kernel`netisr_dispatch_src+0x5e
>              kernel`bce_intr+0x765
>              kernel`intr_event_execute_handlers+0xab
>              kernel`ithread_loop+0x96
>              kernel`fork_exit+0x9a
>              kernel`0xffffffff80c75b2e
> 
>  1  31403                 tcp_output:entry unexpected tp->t_tsomax: 65535
> 
>              kernel`tcp_do_segment+0x2c99
>              kernel`tcp_input+0x11a2
>              kernel`ip_input+0xa2
>              kernel`netisr_dispatch_src+0x5e
>              kernel`ether_demux+0x12a
>              kernel`ether_nh_input+0x35f
>              kernel`netisr_dispatch_src+0x5e
>              kernel`bce_intr+0x765
>              kernel`intr_event_execute_handlers+0xab
>              kernel`ithread_loop+0x96
>              kernel`fork_exit+0x9a
>              kernel`0xffffffff80c75b2e
> _______________________________________________
> freebsd-net at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscribe at freebsd.org"
> 



More information about the freebsd-net mailing list