Intel 82574L interface wedging on em 7.1.9/7.2.3 when MSIX
enabled
Hooman Fazaeli
hoomanfazaeli at gmail.com
Mon Oct 31 09:44:19 UTC 2011
On 10/31/2011 12:51 PM, Emil Muratov wrote:
> On 31.10.2011 12:13, Hooman Fazaeli wrote:
>>
>>>
>>>
>>> Thanks for looking into this. I'd be happy to test any patch thrown my way, but keep in mind my issue is only tickled when MSI-X is enabled. My interfaces aren't bouncing, though it might be
>>> possible some unique path in the MSI-X code is causing a throughput hang akin to connectivity loss?
>>>
>>> Jack is the delta your speaking to the 7.2.4 code? I did manage to get the code from Intel compiled with a couple minutes of work, but haven't loaded it up yet as I didn't see anything that
>>> caught my untrained eye in the diffs. I'll wait until its ported over and would be happy to test if needed.
>>>
>>> Conveniently enough I just received another report from my test boxes with a pretty stock loader.conf. I had forgotten to remove the advanced options from the interfaces after I cycled them to
>>> pick up the fc_setting=0. Fixed that up just meow.
>>>
>>> hw.em.fc_setting="0"
>>> cc_cubic_load="YES"
>>>
>>>
>>
>> Jason
>>
>> Attached is a patch for if_em.c. It flushes interface queue when it is full
>> and link is not active. Please note that when this happens, drops are increasing
>> on interface and this will trigger your scripts as before. You need to change
>> a little the scripts as follows:
>>
>> check interface TX status
>> if (interface TX seems hung) {
>> sleep 5
>> check interface TX status
>> if (interface TX seems hung) {
>> reset the interface.
>> }
>> }
>>
>> For MULTIQUEUE, it just disables the check for link status (which is not good).
>> so pls. test in non-MULTIQUEUE mode.
>>
>> The patch also contains some minor fixups to compile on 7 plus
>> a fix from r1.69 which addressed RX hang problem (the fix was
>> later removed in r1.70). I included it for Emil to give it a
>> try.
>>
>> Pls. let me know if you have any problems with patch.
>>
>>
>>
>
> Hi! Thanks for the update. But I can't make it, there is an error in build process. Can you kindly take a look at it?
>
>
> -emil at ion-/usr/src/sys/dev/e1000
> --(0)> sudo patch < /home/emil/patches/if_em/if_em.c.patch
> Password:
> Hmm... Looks like a unified diff to me...
> The text leading up to this was:
> --------------------------
> |--- if_em.c.orig 2011-10-31 11:43:35.000000000 +0330
> |+++ if_em.c 2011-10-31 11:43:35.000000000 +0330
> --------------------------
> Patching file if_em.c using Plan A...
> Hunk #1 succeeded at 85.
> Hunk #2 succeeded at 101.
> Hunk #3 succeeded at 382 (offset -29 lines).
> Hunk #4 succeeded at 400 (offset -29 lines).
> Hunk #5 succeeded at 857 (offset -29 lines).
> Hunk #6 succeeded at 960 (offset -29 lines).
> Hunk #7 succeeded at 1420 (offset -29 lines).
> Hunk #8 succeeded at 1436 (offset -29 lines).
> Hunk #9 succeeded at 1466 (offset -29 lines).
> Hunk #10 succeeded at 2230 (offset -29 lines).
> Hunk #11 succeeded at 2338 (offset -29 lines).
> Hunk #12 succeeded at 2350 (offset -29 lines).
> Hunk #13 succeeded at 3799 (offset -29 lines).
> Hunk #14 succeeded at 5164 with fuzz 2 (offset -29 lines).
> Hunk #15 succeeded at 5616 (offset -4 lines).
> done
>
> -emil at ion-/usr/src/sys/dev/e1000
> --(0)> sudo patch < /home/emil/patches/if_em/if_em.h.patch
> Hmm... Looks like a unified diff to me...
> The text leading up to this was:
> --------------------------
> |--- if_em.h.orig 2011-10-31 11:43:34.000000000 +0330
> |+++ if_em.h 2011-10-31 11:43:35.000000000 +0330
> --------------------------
> Patching file if_em.h using Plan A...
> Hunk #1 succeeded at 438.
> done
>
>
> #root at ion-/usr/src/sys/modules/em
> #-(0)> make
> Warning: Object directory not changed from original /usr/src/sys/modules/em
> awk -f @/tools/makeobjops.awk @/kern/device_if.m -h
> awk -f @/tools/makeobjops.awk @/kern/bus_if.m -h
> awk -f @/tools/makeobjops.awk @/dev/pci/pci_if.m -h
> :> opt_inet.h
> cc -O2 -pipe -march=nocona -fno-strict-aliasing -Werror -D_KERNEL -DKLD_MODULE -nostdinc -I/usr/src/sys/modules/em/../../dev/e1000 -I. -I@ -I@/contrib/altq
> -finline-limit=8000 --param inline-unit-growth=100 --param large-function-growth=1000 -fno-common -fno-omit-frame-pointer -mcmodel=kernel -mno-red-zone -mfpmath=387
> -mno-sse -mno-sse2 -mno-sse3 -mno-mmx -mno-3dnow -msoft-float -fno-asynchronous-unwind-tables - ffreestanding -fstack-protector -std=iso9899:1999 -fstack-protector -Wall
> -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing- prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef -Wno-pointer-sign -fformat-extensions -c
> /usr/src/sys/modules/em/../../dev/e1000/if _em.c
> /usr/src/sys/modules/em/../../dev/e1000/if_em.c:387: error: 'sysctl__hw_em_children' undeclared here (not in a function)
> *** Error code 1
>
> Stop in /usr/src/sys/modules/em.
>
>
>
>
Please sync your sys/dev/e1000 with HEAD and try again:
setenv CVSROOT :pserver:anoncvs at anoncvs.FreeBSD.org:/home/ncvs
cvs login
password: <enter anonymous>
cd /usr/src
cvs co -rHEAD sys/dev/e1000
More information about the freebsd-net
mailing list