1 .. SPDX-License-Identifier: BSD-3-Clause
2 Copyright(c) 2016 QLogic Corporation
3 Copyright(c) 2017 Cavium, Inc
8 The QEDE poll mode driver library (**librte_pmd_qede**) implements support
9 for **QLogic FastLinQ QL4xxxx 10G/25G/40G/50G/100G Intelligent Ethernet Adapters (IEA) and Converged Network Adapters (CNA)** family of adapters as well as SR-IOV virtual functions (VF). It is supported on
10 several standard Linux distros like RHEL7.x, SLES12.x and Ubuntu.
11 It is compile-tested under FreeBSD OS.
13 More information can be found at `QLogic Corporation's Website
14 <http://www.qlogic.com>`_.
19 - Unicast/Multicast filtering
22 - Port hardware statistics
24 - Multiple MAC address
26 - Default pause flow control
29 - Multiple Rx/Tx queues
30 - RSS (with RETA/hash table/key)
32 - Stateless checksum offloads (IPv4/IPv6/TCP/UDP)
34 - VLAN offload - Filtering and stripping
35 - N-tuple filter and flow director (limited support)
36 - NPAR (NIC Partitioning)
38 - VXLAN tunneling offload
39 - MPLSoUDP Tx tunnel offload
41 Non-supported Features
42 ----------------------
45 - GENEVE and NVGRE Tunneling offloads
47 Supported QLogic Adapters
48 -------------------------
50 - QLogic FastLinQ QL4xxxx 10G/25G/40G/50G/100G Intelligent Ethernet Adapters (IEA) and Converged Network Adapters (CNA)
55 - Requires storm firmware version **8.30.12.0**. Firmware may be available
56 inbox in certain newer Linux distros under the standard directory
57 ``E.g. /lib/firmware/qed/qed_init_values-8.30.12.0.bin``
58 If the required firmware files are not available then download it from
59 `QLogic Driver Download Center <http://driverdownloads.qlogic.com/QLogicDriverDownloads_UI/DefaultNewSearch.aspx>`_.
60 For downloading firmware file, select adapter category, model and DPDK Poll Mode Driver.
62 - Requires management firmware (MFW) version **8.30.x.x** or higher to be
63 flashed on to the adapter. If the required management firmware is not
64 available then download from
65 `QLogic Driver Download Center <http://driverdownloads.qlogic.com/QLogicDriverDownloads_UI/DefaultNewSearch.aspx>`_.
66 For downloading firmware upgrade utility, select adapter category, model and Linux distro.
67 To flash the management firmware refer to the instructions in the QLogic Firmware Upgrade Utility Readme document.
69 - SR-IOV requires Linux PF driver version **8.20.x.x** or higher.
70 If the required PF driver is not available then download it from
71 `QLogic Driver Download Center <http://driverdownloads.qlogic.com/QLogicDriverDownloads_UI/DefaultNewSearch.aspx>`_.
72 For downloading PF driver, select adapter category, model and Linux distro.
78 - For better performance, it is recommended to use 4K or higher RX/TX rings.
83 The following options can be modified in the ``.config`` file. Please note that
84 enabling debugging options may affect system performance.
86 - ``CONFIG_RTE_LIBRTE_QEDE_PMD`` (default **y**)
88 Toggle compilation of QEDE PMD driver.
90 - ``CONFIG_RTE_LIBRTE_QEDE_DEBUG_INFO`` (default **n**)
92 Toggle display of generic debugging messages.
94 - ``CONFIG_RTE_LIBRTE_QEDE_DEBUG_DRIVER`` (default **n**)
96 Toggle display of ecore related messages.
98 - ``CONFIG_RTE_LIBRTE_QEDE_DEBUG_TX`` (default **n**)
100 Toggle display of transmit fast path run-time messages.
102 - ``CONFIG_RTE_LIBRTE_QEDE_DEBUG_RX`` (default **n**)
104 Toggle display of receive fast path run-time messages.
106 - ``CONFIG_RTE_LIBRTE_QEDE_VF_TX_SWITCH`` (default **"y"**)
108 A knob to control per-VF Tx switching feature.
110 - ``CONFIG_RTE_LIBRTE_QEDE_FW`` (default **""**)
112 Gives absolute path of firmware file.
113 ``Eg: "/lib/firmware/qed/qed_init_values-8.30.12.0.bin"``
114 Empty string indicates driver will pick up the firmware file
115 from the default location /lib/firmware/qed.
116 CAUTION this option is more for custom firmware, it is not
117 recommended for use under normal condition.
119 Driver compilation and testing
120 ------------------------------
122 Refer to the document :ref:`compiling and testing a PMD for a NIC <pmd_build_and_test>`
125 SR-IOV: Prerequisites and Sample Application Notes
126 --------------------------------------------------
128 This section provides instructions to configure SR-IOV with Linux OS.
130 **Note**: librte_pmd_qede will be used to bind to SR-IOV VF device and Linux native kernel driver (qede) will function as SR-IOV PF driver. Requires PF driver to be 8.10.x.x or higher.
132 #. Verify SR-IOV and ARI capability is enabled on the adapter using ``lspci``:
134 .. code-block:: console
140 .. code-block:: console
143 Capabilities: [1b8 v1] Alternative Routing-ID Interpretation (ARI)
145 Capabilities: [1c0 v1] Single Root I/O Virtualization (SR-IOV)
147 Kernel driver in use: igb_uio
149 #. Load the kernel module:
151 .. code-block:: console
157 .. code-block:: console
159 systemd-udevd[4848]: renamed network interface eth0 to ens5f0
160 systemd-udevd[4848]: renamed network interface eth1 to ens5f1
162 #. Bring up the PF ports:
164 .. code-block:: console
169 #. Create VF device(s):
171 Echo the number of VFs to be created into ``"sriov_numvfs"`` sysfs entry
176 .. code-block:: console
178 echo 2 > /sys/devices/pci0000:00/0000:00:03.0/0000:81:00.0/sriov_numvfs
181 #. Assign VF MAC address:
183 Assign MAC address to the VF using iproute2 utility. The syntax is::
185 ip link set <PF iface> vf <VF id> mac <macaddr>
189 .. code-block:: console
191 ip link set ens5f0 vf 0 mac 52:54:00:2f:9d:e8
196 The VF devices may be passed through to the guest VM using ``virt-manager`` or
197 ``virsh``. QEDE PMD should be used to bind the VF devices in the guest VM
198 using the instructions from Driver compilation and testing section above.
202 (Enable QEDE_DEBUG_INFO=y to view informational messages):
204 Refer to the document
205 :ref:`compiling and testing a PMD for a NIC <pmd_build_and_test>` to run
206 ``testpmd`` application.
210 .. code-block:: console
212 testpmd -l 0,4-11 -n 4 -- -i --nb-cores=8 --portmask=0xf --rxd=4096 \
213 --txd=4096 --txfreet=4068 --enable-rx-cksum --rxq=4 --txq=4 \
218 EAL: PCI device 0000:84:00.0 on NUMA socket 1
219 EAL: probe driver: 1077:1634 rte_qede_pmd
220 EAL: Not managed by a supported kernel driver, skipped
221 EAL: PCI device 0000:84:00.1 on NUMA socket 1
222 EAL: probe driver: 1077:1634 rte_qede_pmd
223 EAL: Not managed by a supported kernel driver, skipped
224 EAL: PCI device 0000:88:00.0 on NUMA socket 1
225 EAL: probe driver: 1077:1656 rte_qede_pmd
226 EAL: PCI memory mapped at 0x7f738b200000
227 EAL: PCI memory mapped at 0x7f738b280000
228 EAL: PCI memory mapped at 0x7f738b300000
229 PMD: Chip details : BB1
230 PMD: Driver version : QEDE PMD 8.7.9.0_1.0.0
231 PMD: Firmware version : 8.7.7.0
232 PMD: Management firmware version : 8.7.8.0
233 PMD: Firmware file : /lib/firmware/qed/qed_init_values_zipped-8.7.7.0.bin
234 [QEDE PMD: (84:00.0:dpdk-port-0)]qede_common_dev_init:macaddr \
237 [QEDE PMD: (84:00.0:dpdk-port-0)]qede_tx_queue_setup:txq 0 num_desc 4096 \
238 tx_free_thresh 4068 socket 0
239 [QEDE PMD: (84:00.0:dpdk-port-0)]qede_tx_queue_setup:txq 1 num_desc 4096 \
240 tx_free_thresh 4068 socket 0
241 [QEDE PMD: (84:00.0:dpdk-port-0)]qede_tx_queue_setup:txq 2 num_desc 4096 \
242 tx_free_thresh 4068 socket 0
243 [QEDE PMD: (84:00.0:dpdk-port-0)]qede_tx_queue_setup:txq 3 num_desc 4096 \
244 tx_free_thresh 4068 socket 0
245 [QEDE PMD: (84:00.0:dpdk-port-0)]qede_rx_queue_setup:rxq 0 num_desc 4096 \
246 rx_buf_size=2148 socket 0
247 [QEDE PMD: (84:00.0:dpdk-port-0)]qede_rx_queue_setup:rxq 1 num_desc 4096 \
248 rx_buf_size=2148 socket 0
249 [QEDE PMD: (84:00.0:dpdk-port-0)]qede_rx_queue_setup:rxq 2 num_desc 4096 \
250 rx_buf_size=2148 socket 0
251 [QEDE PMD: (84:00.0:dpdk-port-0)]qede_rx_queue_setup:rxq 3 num_desc 4096 \
252 rx_buf_size=2148 socket 0
253 [QEDE PMD: (84:00.0:dpdk-port-0)]qede_dev_start:port 0
254 [QEDE PMD: (84:00.0:dpdk-port-0)]qede_dev_start:link status: down
256 Checking link statuses...
257 Port 0 Link Up - speed 25000 Mbps - full-duplex
258 Port 1 Link Up - speed 25000 Mbps - full-duplex
259 Port 2 Link Up - speed 25000 Mbps - full-duplex
260 Port 3 Link Up - speed 25000 Mbps - full-duplex