Intel 82574L interface wedging on em 7.1.9/7.2.3 when MSIX enabled

Emil Muratov gpm at hotplug.ru
Mon Oct 31 09:23:09 UTC 2011


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.






More information about the freebsd-net mailing list