Dave,
Thank you for your help. After few changes (below) I see an QLogic
interface in VPP. The next problem is that if I issue “vppctl set int
state UnknownEthernet1/0/1 up” VPP restarts itself and the interface
is always “down”. I will leave this problem to someone else because my
faith in the QLogic NIC is gone.
Could you please provide a list of particular NIC models which are
tested with VPP? I would like to set VLAN, VXLAN, NSH.
# Download exact version of QLogic firmware
wget -O /lib/firmware/bnx2x/bnx2x-e2-7.2.51.0.fw
http://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmware.git/tree/bnx2x/bnx2x-e2-7.2.51.0.fw
# Modify these files and build VPP
root@frinxblade16:~/vpp# git diff
diff --git a/dpdk/Makefile b/dpdk/Makefile
index c9ed873..c8c9f5c 100644
--- a/dpdk/Makefile
+++ b/dpdk/Makefile
@@ -111,6 +111,7 @@ $(B)/custom-config: $(B)/.patch.ok Makefile
$(call set,RTE_PCI_CONFIG,y)
$(call set,RTE_PCI_EXTENDED_TAG,"on")
$(call set,RTE_PCI_MAX_READ_REQUEST_SIZE,4096)
+ $(call set,RTE_LIBRTE_BNX2X_PMD,y)
@# enable debug init for device drivers
$(call set,RTE_LIBRTE_I40E_DEBUG_INIT,$(DPDK_DEBUG))
$(call set,RTE_LIBRTE_IXGBE_DEBUG_INIT,$(DPDK_DEBUG))
diff --git a/src/vnet/devices/dpdk/init.c b/src/vnet/devices/dpdk/init.c
index 7249cc5..9393798 100755
--- a/src/vnet/devices/dpdk/init.c
+++ b/src/vnet/devices/dpdk/init.c
@@ -886,6 +886,9 @@ dpdk_bind_devices_to_uio (dpdk_config_main_t * conf)
/* Chelsio T4/T5 */
else if (d->vendor_id == 0x1425 && (d->device_id & 0xe000) == 0x4000)
;
+ /* QLogic 57810 */
+ else if (d->vendor_id == 0x14e4 && d->device_id == 0x168e)
+ ;
else
{
clib_warning ("Unsupported Ethernet PCI device 0x%04x:0x%04x found "
diff --git a/src/vpp.am b/src/vpp.am
index 37466c6..a261665 100644
--- a/src/vpp.am
+++ b/src/vpp.am
@@ -78,7 +78,7 @@ bin_vpp_LDADD = \
libsvm.la \
libsvmdb.la \
libvppinfra.la \
- -lrt -lm -lpthread -ldl
+ -lrt -lm -lpthread -ldl -lz
bin_vpp_LDFLAGS = -Wl,--export-dynamic
Thank you,
Martin
*From:*Dave Wallace [mailto:dwallac...@gmail.com]
*Sent:* Monday, February 13, 2017 10:41 PM
*To:* Martin Šuňal <msu...@frinx.io>; vpp-dev@lists.fd.io; Damjan
Marion <dmarion.li...@gmail.com>
*Subject:* Re: [vpp-dev] VPP cannot find interface QLogic 57810
Martin,
There have been several DPDK build changes since I was last working on
the VPP dpdk driver infra, but the following patch will enable the
BNX2X PMD in .../custom-config.
+Damjan for his input as this may not be the best way to add the BNX2X
PMD to VPP.
---- %< ----
diff --git a/dpdk/Makefile b/dpdk/Makefile
index c9ed873..c8c9f5c 100644
--- a/dpdk/Makefile
+++ b/dpdk/Makefile
@@ -111,6 +111,7 @@ $(B)/custom-config: $(B)/.patch.ok Makefile
$(call set,RTE_PCI_CONFIG,y)
$(call set,RTE_PCI_EXTENDED_TAG,"on")
$(call set,RTE_PCI_MAX_READ_REQUEST_SIZE,4096)
+ $(call set,RTE_LIBRTE_BNX2X_PMD,y)
@# enable debug init for device drivers
$(call set,RTE_LIBRTE_I40E_DEBUG_INIT,$(DPDK_DEBUG))
$(call set,RTE_LIBRTE_IXGBE_DEBUG_INIT,$(DPDK_DEBUG))
---- %< ----
NOTE: the BNX2X driver requires the zlib library so you'll need to
ensure that is installed or the build will fail.
Thanks,
-daw-
On 02/13/2017 01:01 PM, Martin Šuňal wrote:
Dave,
Thanks much. I’ve added elseif case for QLogic as you mentioned.
Now, “vppctl show pci” is showing driver “uio_pci_generic” but
iface is still missing in “vppctl show int”.
I found bnx2x inside files in build-root after vpp build
(./vpp/build-root/vagrant/build.sh)
./build-root/build-vpp-native/dpdk/custom-config
./build-root/build-vpp-native/dpdk/dpdk-16.11/config/common_base
./build-root/build-vpp-native/dpdk/dpdk-16.11/build/.config.orig
./build-root/build-vpp-native/dpdk/dpdk-16.11/x86_64-native-linuxapp-gcc/.config
./build-root/build-vpp-native/dpdk/dpdk-16.11/x86_64-native-linuxapp-gcc/.config.orig
./build-root/install-vpp-native/dpdk/share/dpdk/x86_64-nhm-linuxapp-gcc/.config
I noticed that all .config files contain
"CONFIG_RTE_LIBRTE_BNX2X_PMD=n" so I changed it to “=y”
I restarted VPP but no changes. I guess I am missing some steps
like where and when are dpdk NIC drivers installed.
Thank you,
Martin
*From:*Dave Wallace [mailto:dwallac...@gmail.com]
*Sent:* Sunday, February 12, 2017 3:24 AM
*To:* Martin Šuňal <msu...@frinx.io> <mailto:msu...@frinx.io>;
vpp-dev@lists.fd.io <mailto:vpp-dev@lists.fd.io>
*Subject:* Re: [vpp-dev] VPP cannot find interface QLogic 57810
Martin,
AFAIK, QLogic NICs have not been tested with VPP.
You need to start by adding a case for the QLogic NICs in
.../vpp/vnet/vnet/devices/dpdk/init.c::dpdk_bind_devices_to_uio().
Search for "Unsupported Ethernet PCI device" in this file for details.
A quick internet search for a DPDK QLogic PMD shows the following
documentation for 17.02-rc3:
http://dpdk.org/doc/guides/nics/bnx2x.html
I'm not sure if this PMD exists in DPDK 16.11 which is what VPP is
currently being tested against, but hopefully it will just work.
Thanks,
-daw-
On 2/10/17 11:03 AM, Martin Šuňal wrote:
I’ve just found that VPP has problem with QLogic interface.
Any idea if it is problem of VPP or DPDK?
Is it something what can be easy fixed?
I am thinking to try different version of NIC firmware..
root@frinxblade16:~# *service vpp status*
* vpp.service - vector packet processing engine
Loaded: loaded (/lib/systemd/system/vpp.service; enabled;
vendor preset: enabled)
Active: active (running) since Fri 2017-02-10 16:41:32 CET;
1min 22s ago
Process: 3503 ExecStartPre=/sbin/modprobe igb_uio
(code=exited, status=0/SUCCESS)
Process: 3484 ExecStartPre=/bin/rm -f /dev/shm/db
/dev/shm/global_vm /dev/shm/vpe-api (code=exited,
status=0/SUCCESS)
Main PID: 3521 (vpp_main)
Tasks: 3
Memory: 36.0M
CPU: 1min 21.730s
CGroup: /system.slice/vpp.service
`-3521 /usr/bin/vpp -c /etc/vpp/startup.conf
Feb 10 16:41:32 frinxblade16 systemd[1]: Starting vector
packet processing engine...
Feb 10 16:41:32 frinxblade16 systemd[1]: Started vector packet
processing engine.
Feb 10 16:41:32 frinxblade16 vpp[3521]:
vlib_plugin_early_init:213: plugin path /usr/lib/vpp_plugins
Feb 10 16:41:32 frinxblade16 vpp[3521]: /usr/bin/vpp[3521]:
dpdk_bind_devices_to_uio:871: *Unsupported Ethernet PCI device
0x14e4:0x168e found at PCI address 0000:01:00.1*
Feb 10 16:41:32 frinxblade16 /usr/bin/vpp[3521]:
dpdk_bind_devices_to_uio:871: Unsupported Ethernet PCI device
0x14e4:0x168e found at PCI address 0000:01:00.1
Feb 10 16:41:32 frinxblade16 vpp[3521]: EAL: Detected 56 lcore(s)
Feb 10 16:41:32 frinxblade16 vpp[3521]: EAL: No free hugepages
reported in hugepages-1048576kB
Feb 10 16:41:32 frinxblade16 vpp[3521]: EAL: Probing VFIO
support...
Feb 10 16:41:32 frinxblade16 vnet[3521]: EAL: Probing VFIO
support...
Feb 10 16:41:32 frinxblade16 vnet[3521]: dpdk_lib_init:304:
*DPDK drivers found no ports...*
Thank you,
Martin Šuňal
/Technical Leader/
Frinx s.r.o.
Mlynské Nivy 48 / 821 09 Bratislava / Slovakia
+421 2 20 91 01 41 / msu...@frinx.io
<mailto:msu...@frinx.io> / www.frinx.io <http://www.frinx.io/>
frinx_logo
*From:* Martin Šuňal
*Sent:* Friday, February 10, 2017 12:21 PM
*To:* 'vpp-dev@lists.fd.io <mailto:vpp-dev@lists.fd.io>'
<vpp-dev@lists.fd.io> <mailto:vpp-dev@lists.fd.io>
*Subject:* VPP cannot find interface QLogic 57810
Hello,
I have a problem that VPP cannot find QLogic 57810 interface.
I use Ubuntu 16.04 LTS and VPP 17.01 which was installed like
this:
|echo "deb
[trusted=yes]|https://nexus.fd.io/content/repositories/fd.io.ubuntu.xenial.main/|./"
| sudo tee -a /etc/apt/sources.list.d/99fd.io.list|
|sudo apt update|
|sudo apt install vpp vpp-lib vpp-dpdk-dkms|
I have 2 QLogic interfaces on a server and I want to put
interface “eno2” into VPP.
Here are some outputs:
root@frinxblade10:~# *uname -a*
Linux frinxblade10 4.4.0-62-generic #83-Ubuntu SMP Wed Jan 18
14:10:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
root@frinxblade10:~# *ip a*
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state
UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq
portid b4e10f8a6e56 state UP group default qlen 1000
link/ether b4:e1:0f:8a:6e:56 brd ff:ff:ff:ff:ff:ff
inet 10.10.193.20/24 brd 10.10.193.255 scope global eno1
valid_lft forever preferred_lft forever
inet6 fe80::b6e1:fff:fe8a:6e56/64 scope link
valid_lft forever preferred_lft forever
3: eno2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop portid
b4e10f8a6e59 state DOWN group default qlen 1000
link/ether b4:e1:0f:8a:6e:59 brd ff:ff:ff:ff:ff:ff
root@frinxblade10:~# *ethtool -i eno2*
driver: bnx2x
version: 1.712.30-0
firmware-version: FFV7.12.19 bc 7.12.5
expansion-rom-version:
bus-info: 0000:01:00.1
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes
root@frinxblade10:~# *lshw -class network -businfo*
Bus info Device Class Description
========================================================
pci@0000:01:00.0 <mailto:pci@0000:01:00.0> eno1
network NetXtreme II BCM57810 10 Gigabit Ethernet
pci@0000:01:00.1 <mailto:pci@0000:01:00.1> eno2
network NetXtreme II BCM57810 10 Gigabit Ethernet
vpp# *sh pci*
Address Socket VID:PID Link Speed
Driver Product Name
0000:01:00.0 0 14e4:168e 5.0 GT/s x8
bnx2x QLogic 57810 10 Gigabit Ethernet
0000:01:00.1 0 14e4:168e 5.0 GT/s x8 bnx2x
QLogic 57810 10 Gigabit Ethernet
vpp# *sh int*
Name Idx State Counter Count
local0 0 down
I also tried to add this into /etc/vpp/startup.conf
dpdk {
dev 0000:01:00.1
}
and it did not change anything.
No errors in /tmp/vpp.log
Any idea?
Thank you,
Martin Šuňal
/Technical Leader/
Frinx s.r.o.
Mlynské Nivy 48 / 821 09 Bratislava / Slovakia
+421 2 20 91 01 41 / msu...@frinx.io
<mailto:msu...@frinx.io> / www.frinx.io <http://www.frinx.io/>
frinx_logo
_______________________________________________
vpp-dev mailing list
vpp-dev@lists.fd.io <mailto:vpp-dev@lists.fd.io>
https://lists.fd.io/mailman/listinfo/vpp-dev