X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=doc%2Fguides%2Fnics%2Fcxgbe.rst;h=4a8fef07b82d17fbffdd474e5e9b41be5df9b1be;hb=d63dab349afcd559e1f9a170bd32f546ad41b9a6;hp=124022cfc899f8a5cd399f4e5988f7989423c0c9;hpb=ee61f5113b170b3b7742c7060c7e9cef6f5bc6ca;p=dpdk.git diff --git a/doc/guides/nics/cxgbe.rst b/doc/guides/nics/cxgbe.rst index 124022cfc8..4a8fef07b8 100644 --- a/doc/guides/nics/cxgbe.rst +++ b/doc/guides/nics/cxgbe.rst @@ -5,7 +5,7 @@ CXGBE Poll Mode Driver ====================== -The CXGBE PMD (**librte_pmd_cxgbe**) provides poll mode driver support +The CXGBE PMD (**librte_net_cxgbe**) provides poll mode driver support for **Chelsio Terminator** 10/25/40/100 Gbps family of adapters. CXGBE PMD has support for the latest Linux and FreeBSD operating systems. @@ -30,18 +30,18 @@ CXGBE and CXGBEVF PMD has support for: - All multicast mode - Port hardware statistics - Jumbo frames -- Flow API +- Flow API - Support for both Wildcard (LE-TCAM) and Exact (HASH) match filters. Limitations ----------- The Chelsio Terminator series of devices provide two/four ports but -expose a single PCI bus address, thus, librte_pmd_cxgbe registers +expose a single PCI bus address, thus, librte_net_cxgbe registers itself as a PCI driver that allocates one Ethernet device per detected port. -For this reason, one cannot whitelist/blacklist a single port without -whitelisting/blacklisting the other ports on the same device. +For this reason, one cannot allow/block a single port without +allowing/blocking the other ports on the same device. .. _t5-nics: @@ -70,7 +70,7 @@ in :ref:`t5-nics` and :ref:`t6-nics`. Prerequisites ------------- -- Requires firmware version **1.17.14.0** and higher. Visit +- Requires firmware version **1.25.4.0** and higher. Visit `Chelsio Download Center `_ to get latest firmware bundled with the latest Chelsio Unified Wire package. @@ -87,68 +87,248 @@ Prerequisites :ref:`linux-installation` for Linux and section :ref:`freebsd-installation` for FreeBSD. -Pre-Installation Configuration ------------------------------- - -Config File Options -~~~~~~~~~~~~~~~~~~~ -The following options can be modified in the ``.config`` file. Please note that -enabling debugging options may affect system performance. +Runtime Options +--------------- -- ``CONFIG_RTE_LIBRTE_CXGBE_PMD`` (default **y**) +The following ``devargs`` options can be enabled at runtime. They must +be passed as part of EAL arguments. For example, - Toggle compilation of librte_pmd_cxgbe driver. +.. code-block:: console - .. note:: + dpdk-testpmd -a 02:00.4,keep_ovlan=1 -- -i - This controls compilation of both CXGBE and CXGBEVF PMD. +Common Runtime Options +~~~~~~~~~~~~~~~~~~~~~~ -- ``CONFIG_RTE_LIBRTE_CXGBE_DEBUG`` (default **n**) +- ``keep_ovlan`` (default **0**) - Toggle display of generic debugging messages. + Toggle behavior to keep/strip outer VLAN in Q-in-Q packets. If + enabled, the outer VLAN tag is preserved in Q-in-Q packets. Otherwise, + the outer VLAN tag is stripped in Q-in-Q packets. -- ``CONFIG_RTE_LIBRTE_CXGBE_DEBUG_REG`` (default **n**) +- ``tx_mode_latency`` (default **0**) - Toggle display of registers related run-time check messages. + When set to 1, Tx doesn't wait for max number of packets to get + coalesced and sends the packets immediately at the end of the + current Tx burst. When set to 0, Tx waits across multiple Tx bursts + until the max number of packets have been coalesced. In this case, + Tx only sends the coalesced packets to hardware once the max + coalesce limit has been reached. -- ``CONFIG_RTE_LIBRTE_CXGBE_DEBUG_MBOX`` (default **n**) +CXGBE VF Only Runtime Options +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Toggle display of firmware mailbox related run-time check messages. +- ``force_link_up`` (default **0**) -- ``CONFIG_RTE_LIBRTE_CXGBE_DEBUG_TX`` (default **n**) + When set to 1, CXGBEVF PMD always forces link as up for all VFs on + underlying Chelsio NICs. This enables multiple VFs on the same NIC + to send traffic to each other even when the physical link is down. - Toggle display of transmission data path run-time check messages. +CXGBE PF Only Runtime Options +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- ``filtermode`` (default **0**) + + Apart from the 4-tuple (IP src/dst addresses and TCP/UDP src/dst port + addresses), there are only 40-bits available to match other fields in + packet headers. So, ``filtermode`` devarg allows user to dynamically + select a 40-bit supported match field combination for LETCAM (wildcard) + filters. + + Default value of **0** makes driver pick the combination configured in + the firmware configuration file on the adapter. + + The supported flags and their corresponding values are shown in table below. + These flags can be OR'd to create 1 of the multiple supported combinations + for LETCAM filters. + + ================== ====== + FLAG VALUE + ================== ====== + Physical Port 0x1 + PFVF 0x2 + Destination MAC 0x4 + Ethertype 0x8 + Inner VLAN 0x10 + Outer VLAN 0x20 + IP TOS 0x40 + IP Protocol 0x80 + ================== ====== + + The supported ``filtermode`` combinations and their corresponding OR'd + values are shown in table below. + + +-----------------------------------+-----------+ + | FILTERMODE COMBINATIONS | VALUE | + +===================================+===========+ + | Protocol, TOS, Outer VLAN, Port | 0xE1 | + +-----------------------------------+-----------+ + | Protocol, TOS, Outer VLAN | 0xE0 | + +-----------------------------------+-----------+ + | Protocol, TOS, Inner VLAN, Port | 0xD1 | + +-----------------------------------+-----------+ + | Protocol, TOS, Inner VLAN | 0xD0 | + +-----------------------------------+-----------+ + | Protocol, TOS, PFVF, Port | 0xC3 | + +-----------------------------------+-----------+ + | Protocol, TOS, PFVF | 0xC2 | + +-----------------------------------+-----------+ + | Protocol, TOS, Port | 0xC1 | + +-----------------------------------+-----------+ + | Protocol, TOS | 0xC0 | + +-----------------------------------+-----------+ + | Protocol, Outer VLAN, Port | 0xA1 | + +-----------------------------------+-----------+ + | Protocol, Outer VLAN | 0xA0 | + +-----------------------------------+-----------+ + | Protocol, Inner VLAN, Port | 0x91 | + +-----------------------------------+-----------+ + | Protocol, Inner VLAN | 0x90 | + +-----------------------------------+-----------+ + | Protocol, Ethertype, DstMAC, Port | 0x8D | + +-----------------------------------+-----------+ + | Protocol, Ethertype, DstMAC | 0x8C | + +-----------------------------------+-----------+ + | Protocol, Ethertype, Port | 0x89 | + +-----------------------------------+-----------+ + | Protocol, Ethertype | 0x88 | + +-----------------------------------+-----------+ + | Protocol, DstMAC, PFVF, Port | 0x87 | + +-----------------------------------+-----------+ + | Protocol, DstMAC, PFVF | 0x86 | + +-----------------------------------+-----------+ + | Protocol, DstMAC, Port | 0x85 | + +-----------------------------------+-----------+ + | Protocol, DstMAC | 0x84 | + +-----------------------------------+-----------+ + | Protocol, PFVF, Port | 0x83 | + +-----------------------------------+-----------+ + | Protocol, PFVF | 0x82 | + +-----------------------------------+-----------+ + | Protocol, Port | 0x81 | + +-----------------------------------+-----------+ + | Protocol | 0x80 | + +-----------------------------------+-----------+ + | TOS, Outer VLAN, Port | 0x61 | + +-----------------------------------+-----------+ + | TOS, Outer VLAN | 0x60 | + +-----------------------------------+-----------+ + | TOS, Inner VLAN, Port | 0x51 | + +-----------------------------------+-----------+ + | TOS, Inner VLAN | 0x50 | + +-----------------------------------+-----------+ + | TOS, Ethertype, DstMAC, Port | 0x4D | + +-----------------------------------+-----------+ + | TOS, Ethertype, DstMAC | 0x4C | + +-----------------------------------+-----------+ + | TOS, Ethertype, Port | 0x49 | + +-----------------------------------+-----------+ + | TOS, Ethertype | 0x48 | + +-----------------------------------+-----------+ + | TOS, DstMAC, PFVF, Port | 0x47 | + +-----------------------------------+-----------+ + | TOS, DstMAC, PFVF | 0x46 | + +-----------------------------------+-----------+ + | TOS, DstMAC, Port | 0x45 | + +-----------------------------------+-----------+ + | TOS, DstMAC | 0x44 | + +-----------------------------------+-----------+ + | TOS, PFVF, Port | 0x43 | + +-----------------------------------+-----------+ + | TOS, PFVF | 0x42 | + +-----------------------------------+-----------+ + | TOS, Port | 0x41 | + +-----------------------------------+-----------+ + | TOS | 0x40 | + +-----------------------------------+-----------+ + | Outer VLAN, Inner VLAN, Port | 0x31 | + +-----------------------------------+-----------+ + | Outer VLAN, Ethertype, Port | 0x29 | + +-----------------------------------+-----------+ + | Outer VLAN, Ethertype | 0x28 | + +-----------------------------------+-----------+ + | Outer VLAN, DstMAC, Port | 0x25 | + +-----------------------------------+-----------+ + | Outer VLAN, DstMAC | 0x24 | + +-----------------------------------+-----------+ + | Outer VLAN, Port | 0x21 | + +-----------------------------------+-----------+ + | Outer VLAN | 0x20 | + +-----------------------------------+-----------+ + | Inner VLAN, Ethertype, Port | 0x19 | + +-----------------------------------+-----------+ + | Inner VLAN, Ethertype | 0x18 | + +-----------------------------------+-----------+ + | Inner VLAN, DstMAC, Port | 0x15 | + +-----------------------------------+-----------+ + | Inner VLAN, DstMAC | 0x14 | + +-----------------------------------+-----------+ + | Inner VLAN, Port | 0x11 | + +-----------------------------------+-----------+ + | Inner VLAN | 0x10 | + +-----------------------------------+-----------+ + | Ethertype, DstMAC, Port | 0xD | + +-----------------------------------+-----------+ + | Ethertype, DstMAC | 0xC | + +-----------------------------------+-----------+ + | Ethertype, PFVF, Port | 0xB | + +-----------------------------------+-----------+ + | Ethertype, PFVF | 0xA | + +-----------------------------------+-----------+ + | Ethertype, Port | 0x9 | + +-----------------------------------+-----------+ + | Ethertype | 0x8 | + +-----------------------------------+-----------+ + | DstMAC, PFVF, Port | 0x7 | + +-----------------------------------+-----------+ + | DstMAC, PFVF | 0x6 | + +-----------------------------------+-----------+ + | DstMAC, Port | 0x5 | + +-----------------------------------+-----------+ + | Destination MAC | 0x4 | + +-----------------------------------+-----------+ + | PFVF, Port | 0x3 | + +-----------------------------------+-----------+ + | PFVF | 0x2 | + +-----------------------------------+-----------+ + | Physical Port | 0x1 + + +-----------------------------------+-----------+ + + For example, to enable matching ``ethertype`` field in Ethernet + header, and ``protocol`` field in IPv4 header, the ``filtermode`` + combination must be given as: -- ``CONFIG_RTE_LIBRTE_CXGBE_DEBUG_RX`` (default **n**) + .. code-block:: console - Toggle display of receiving data path run-time check messages. + dpdk-testpmd -a 02:00.4,filtermode=0x88 -- -i -- ``CONFIG_RTE_LIBRTE_CXGBE_TPUT`` (default **y**) +- ``filtermask`` (default **0**) - Toggle behaviour to prefer Throughput or Latency. + ``filtermask`` devarg works similar to ``filtermode``, but is used + to configure a filter mode combination for HASH (exact-match) filters. -Runtime Options -~~~~~~~~~~~~~~~ + .. note:: -The following ``devargs`` options can be enabled at runtime. They must -be passed as part of EAL arguments. For example, + The combination chosen for ``filtermask`` devarg **must be a subset** of + the combination chosen for ``filtermode`` devarg. -.. code-block:: console + Default value of **0** makes driver pick the combination configured in + the firmware configuration file on the adapter. - testpmd -w 02:00.4,keep_ovlan=1 -- -i + Note that the filter rule will only be inserted in HASH region, if the + rule contains **all** the fields specified in the ``filtermask`` combination. + Otherwise, the filter rule will get inserted in LETCAM region. -- ``keep_ovlan`` (default **0**) + The same combination list explained in the tables in ``filtermode`` devarg + section earlier applies for ``filtermask`` devarg, as well. - Toggle behaviour to keep/strip outer VLAN in Q-in-Q packets. If - enabled, the outer VLAN tag is preserved in Q-in-Q packets. Otherwise, - the outer VLAN tag is stripped in Q-in-Q packets. + For example, to enable matching only protocol field in IPv4 header, the + ``filtermask`` combination must be given as: -- ``force_link_up`` (default **0**) + .. code-block:: console - When set to 1, CXGBEVF PMD always forces link as up for all VFs on - underlying Chelsio NICs. This enables multiple VFs on the same NIC - to send traffic to each other even when the physical link is down. + dpdk-testpmd -a 02:00.4,filtermode=0x88,filtermask=0x80 -- -i .. _driver-compilation: @@ -224,13 +404,13 @@ Unified Wire package for Linux operating system are as follows: .. code-block:: console - firmware-version: 1.17.14.0, TP 0.1.4.9 + firmware-version: 1.25.4.0, TP 0.1.23.2 Running testpmd ~~~~~~~~~~~~~~~ This section demonstrates how to launch **testpmd** with Chelsio -devices managed by librte_pmd_cxgbe in Linux operating system. +devices managed by librte_net_cxgbe in Linux operating system. #. Load the kernel module: @@ -282,7 +462,7 @@ devices managed by librte_pmd_cxgbe in Linux operating system. EAL: PCI memory mapped at 0x7fd7c0200000 EAL: PCI memory mapped at 0x7fd77cdfd000 EAL: PCI memory mapped at 0x7fd7c10b7000 - PMD: rte_cxgbe_pmd: fw: 1.17.14.0, TP: 0.1.4.9 + PMD: rte_cxgbe_pmd: fw: 1.25.4.0, TP: 0.1.23.2 PMD: rte_cxgbe_pmd: Coming up as MASTER: Initializing adapter Interactive-mode selected Configuring Port 0 (socket 0) @@ -388,16 +568,16 @@ virtual functions. [...] EAL: PCI device 0000:02:01.0 on NUMA socket 0 EAL: probe driver: 1425:5803 net_cxgbevf - PMD: rte_cxgbe_pmd: Firmware version: 1.17.14.0 - PMD: rte_cxgbe_pmd: TP Microcode version: 0.1.4.9 + PMD: rte_cxgbe_pmd: Firmware version: 1.25.4.0 + PMD: rte_cxgbe_pmd: TP Microcode version: 0.1.23.2 PMD: rte_cxgbe_pmd: Chelsio rev 0 PMD: rte_cxgbe_pmd: No bootstrap loaded PMD: rte_cxgbe_pmd: No Expansion ROM loaded PMD: rte_cxgbe_pmd: 0000:02:01.0 Chelsio rev 0 1G/10GBASE-SFP EAL: PCI device 0000:02:01.1 on NUMA socket 0 EAL: probe driver: 1425:5803 net_cxgbevf - PMD: rte_cxgbe_pmd: Firmware version: 1.17.14.0 - PMD: rte_cxgbe_pmd: TP Microcode version: 0.1.4.9 + PMD: rte_cxgbe_pmd: Firmware version: 1.25.4.0 + PMD: rte_cxgbe_pmd: TP Microcode version: 0.1.23.2 PMD: rte_cxgbe_pmd: Chelsio rev 0 PMD: rte_cxgbe_pmd: No bootstrap loaded PMD: rte_cxgbe_pmd: No Expansion ROM loaded @@ -474,13 +654,13 @@ Unified Wire package for FreeBSD operating system are as follows: .. code-block:: console - dev.t5nex.0.firmware_version: 1.17.14.0 + dev.t5nex.0.firmware_version: 1.25.4.0 Running testpmd ~~~~~~~~~~~~~~~ This section demonstrates how to launch **testpmd** with Chelsio -devices managed by librte_pmd_cxgbe in FreeBSD operating system. +devices managed by librte_net_cxgbe in FreeBSD operating system. #. Change to DPDK source directory where the target has been compiled in section :ref:`driver-compilation`: @@ -493,7 +673,7 @@ devices managed by librte_pmd_cxgbe in FreeBSD operating system. .. code-block:: console - cp x86_64-native-bsdapp-clang/kmod/contigmem.ko /boot/kernel/ + cp /kernel/freebsd/contigmem.ko /boot/kernel/ #. Add the following lines to /boot/loader.conf: @@ -574,13 +754,13 @@ devices managed by librte_pmd_cxgbe in FreeBSD operating system. .. code-block:: console - kldload ./x86_64-native-bsdapp-clang/kmod/nic_uio.ko + kldload /kernel/freebsd/nic_uio.ko #. Start testpmd with basic parameters: .. code-block:: console - ./x86_64-native-bsdapp-clang/app/testpmd -l 0-3 -n 4 -w 0000:02:00.4 -- -i + .//app/dpdk-testpmd -l 0-3 -n 4 -a 0000:02:00.4 -- -i Example output: @@ -592,7 +772,7 @@ devices managed by librte_pmd_cxgbe in FreeBSD operating system. EAL: PCI memory mapped at 0x8007ec000 EAL: PCI memory mapped at 0x842800000 EAL: PCI memory mapped at 0x80086c000 - PMD: rte_cxgbe_pmd: fw: 1.17.14.0, TP: 0.1.4.9 + PMD: rte_cxgbe_pmd: fw: 1.25.4.0, TP: 0.1.23.2 PMD: rte_cxgbe_pmd: Coming up as MASTER: Initializing adapter Interactive-mode selected Configuring Port 0 (socket 0)