[dpdk-dev] i40e: XL710 Rx filters out frames above 1510 bytes

Vlad Zolotarov vladz at cloudius-systems.com
Sun Aug 30 15:03:17 CEST 2015


Hi, I have the most strange issue on a setup of 2 pairs of connected 
back to back XL710 cards.
It seems that frames above 1510 bytes are being filtered out by an i40e 
PMD receiver.
The same setup works perfectly when I use Linux drivers on both sides 
but when I use a PMD on one side and a Linux driver on the other - the 
issue above occurs.

i40e PMD statistics show nothing: all counters stay zero.
The MFS field in PRTGL_SAH register has the expected (reset) value: 0x2600.

I even tried to disable all Tx offload capabilities on the Linux side - 
still no success.

Could u, guys clarify to be what is going on and what I may be doing wrong?
Pls., let me know if u need any additional info about the setup.

thanks in advance,
vlad


        How to reproduce the issue:

I used the in tree apps from examples/multi_process/client_server_mp:


          On the DPDK box:

 1. Bound both NICs to DPDK's UIO.
 2. Configured 1024 huge pages on each NUMA Node (there are two NUMA
    Nodes in total).

$ cat /proc/meminfo  | grep Huge
AnonHugePages:         0 kB
HugePages_Total:    2048
HugePages_Free:      292
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

 3. Compiled mp_server and mp_client example applications.
 4. Run: sudo ./build/mp_server -c 6 -n 4  --  -p 0x3 -n 1
 5. Run: sudo ./build/mp_client -c 8 -n 4 --proc-type=auto -- -n 0


          On the "other side" box (with the Linux device drivers):

 1. configure a static arp:

$ arp 192.169.10.118
Address                  HWtype  HWaddress           Flags 
Mask            Iface
192.169.10.118           ether   68:05:ca:2d:39:88 CM                    
ens3

 2. Set the MTU on ens3 to 3000 (see below).
 3. Use *ping* application for sending frames of different sizes:
     1. "ping 192.169.10.118 -s 1400" makes both Rx and Tx counters on
        the DPDK side increment.
     2. "ping 192.169.10.118 -s 1500" - Rx counter on the DPDK side
        doesn't increment.


        The DPDK PMD driven setup description:

  * Two XL710 single port cards connected to XL710 cards in a different
    server back to back.

$ lspci | grep Ether
---snip---
05:00.0 Ethernet controller: Intel Corporation Ethernet Controller XL710 
for 40GbE QSFP+ (rev 01)
83:00.0 Ethernet controller: Intel Corporation Ethernet Controller XL710 
for 40GbE QSFP+ (rev 01)
---snip---

$ ethtool -i ens288
driver: i40e
version: 1.3.2-k
firmware-version: f4.22.26225 a1.1 n4.24 e13fd
bus-info: 0000:83:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes

$ ethtool -i ens785
driver: i40e
version: 1.3.2-k
firmware-version: f4.22.26225 a1.1 n4.24 e13fd
bus-info: 0000:05:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes

$ ifconfig
---snip---
ens288: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
         ether 68:05:ca:2d:3a:00  txqueuelen 1000  (Ethernet)
         RX packets 0  bytes 0 (0.0 B)
         RX errors 0  dropped 0  overruns 0  frame 0
         TX packets 0  bytes 0 (0.0 B)
         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens785: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
         ether 68:05:ca:2d:39:88  txqueuelen 1000  (Ethernet)
         RX packets 0  bytes 0 (0.0 B)
         RX errors 0  dropped 0  overruns 0  frame 0
         TX packets 0  bytes 0 (0.0 B)
         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
---snip---


$ cat /etc/redhat-release
Fedora release 21 (Twenty One)

  * DPDK git HEAD 7173acefc7cfdfbbb9b91fcba1c9a67adb4c07c9


        The Linux drivers driven setup description:

  * Two XL710 single port cards connected to XL710 cards in a different
    server back to back.

$ lspci | grep Ether
---snip---
04:00.0 Ethernet controller: Intel Corporation Ethernet Controller XL710 
for 40GbE QSFP+ (rev 01)
83:00.0 Ethernet controller: Intel Corporation Ethernet Controller XL710 
for 40GbE QSFP+ (rev 01)
---snip---

$ ethtool -i ens3
driver: i40e
version: 1.2.6-k
firmware-version: f4.1 a1.1 n04.10 e80001121
bus-info: 0000:83:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no

$ ethtool -i ens5
driver: i40e
version: 1.2.6-k
firmware-version: f4.1 a1.1 n04.10 e80001121
bus-info: 0000:04:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no

$ ifconfig
---snip---
ens3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 3000
         inet 192.169.10.199  netmask 255.255.255.0  broadcast 
192.169.10.255
         ether 68:05:ca:27:d3:72  txqueuelen 1000  (Ethernet)
         RX packets 69  bytes 30155 (29.4 KiB)
         RX errors 0  dropped 0  overruns 0  frame 0
         TX packets 746  bytes 820489 (801.2 KiB)
         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
         inet 1.1.1.2  netmask 255.255.255.0  broadcast 1.1.1.255
         inet6 fe80::6a05:caff:fe27:d3ea  prefixlen 64  scopeid 0x20<link>
         ether 68:05:ca:27:d3:ea  txqueuelen 1000  (Ethernet)
         RX packets 523572634  bytes 34869102046 (32.4 GiB)
         RX errors 0  dropped 0  overruns 0  frame 0
         TX packets 523254659  bytes 153342981238 (142.8 GiB)
         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

---snip---

$ cat /etc/redhat-release
Fedora release 21 (Twenty One)_

_$ modinfo i40e
filename: 
/lib/modules/4.0.6-200.fc21.x86_64/kernel/drivers/net/ethernet/intel/i40e/i40e.ko.xz
version:        1.2.6-k
license:        GPL
description:    Intel(R) Ethernet Connection XL710 Network Driver
author:         Intel Corporation, <e1000-devel at lists.sourceforge.net>
srcversion:     14800421FE3354248473729
alias:          pci:v00008086d00001586sv*sd*bc*sc*i*
alias:          pci:v00008086d00001585sv*sd*bc*sc*i*
alias:          pci:v00008086d00001584sv*sd*bc*sc*i*
alias:          pci:v00008086d00001583sv*sd*bc*sc*i*
alias:          pci:v00008086d00001581sv*sd*bc*sc*i*
alias:          pci:v00008086d00001580sv*sd*bc*sc*i*
alias:          pci:v00008086d0000157Fsv*sd*bc*sc*i*
alias:          pci:v00008086d00001574sv*sd*bc*sc*i*
alias:          pci:v00008086d00001572sv*sd*bc*sc*i*
depends:        ptp,vxlan
intree:         Y
vermagic:       4.0.6-200.fc21.x86_64 SMP mod_unload
signer:         Fedora kernel signing key
sig_key: F9:FE:41:30:BC:4F:80:F6:C4:1E:A1:E1:5C:73:37:9B:B8:BA:C8:4C
sig_hashalgo:   sha256
parm:           debug:Debug level (0=none,...,16=all) (int)
_
_


More information about the dev mailing list