unify tools naming
The following tools may be installed system-wide. It may be cleaner and more convenient to find them with the same dpdk- prefix (especially for autocompletion). Moreover, the script dpdk_nic_bind.py deserves a new name because it is not restricted to NICs and can be used for e.g. crypto. These files are renamed: pmdinfogen -> dpdk-pmdinfogen pmdinfo.py -> dpdk-pmdinfo.py dpdk_pdump -> dpdk-pdump dpdk_proc_info -> dpdk-procinfo dpdk_nic_bind.py -> dpdk-devbind.py setup.sh -> dpdk-setup.sh The tools pmdinfogen, pmdinfo.py and dpdk_pdump are new in 16.07. The scripts dpdk_nic_bind.py and setup.sh may have been used with previous releases by end users. That's why a symbolic link still provide the old name in the installed tools directory. Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com> Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
This commit is contained in:
parent
4b677a3b60
commit
a5d7a3f77d
@ -70,7 +70,7 @@ F: scripts/validate-abi.sh
|
||||
|
||||
Driver information
|
||||
F: buildtools/pmdinfogen/
|
||||
F: tools/pmdinfo.py
|
||||
F: tools/dpdk-pmdinfo.py
|
||||
|
||||
|
||||
Environment Abstraction Layer
|
||||
|
@ -33,7 +33,7 @@ include $(RTE_SDK)/mk/rte.vars.mk
|
||||
|
||||
ifeq ($(CONFIG_RTE_LIBRTE_PDUMP),y)
|
||||
|
||||
APP = dpdk_pdump
|
||||
APP = dpdk-pdump
|
||||
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
|
||||
|
@ -31,7 +31,7 @@
|
||||
|
||||
include $(RTE_SDK)/mk/rte.vars.mk
|
||||
|
||||
APP = dpdk_proc_info
|
||||
APP = dpdk-procinfo
|
||||
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
|
||||
|
@ -34,7 +34,7 @@ include $(RTE_SDK)/mk/rte.vars.mk
|
||||
#
|
||||
# library name
|
||||
#
|
||||
HOSTAPP = pmdinfogen
|
||||
HOSTAPP = dpdk-pmdinfogen
|
||||
|
||||
#
|
||||
# all sources are stored in SRCS-y
|
||||
|
@ -50,7 +50,7 @@ When you stop and restart the test application, it looks to see if the pages are
|
||||
If you look in the directory, you will see ``n`` number of 2M pages files. If you specified 1024, you will see 1024 page files.
|
||||
These are then placed in memory segments to get contiguous memory.
|
||||
|
||||
If you need to change the number of pages, it is easier to first remove the pages. The tools/setup.sh script provides an option to do this.
|
||||
If you need to change the number of pages, it is easier to first remove the pages. The tools/dpdk-setup.sh script provides an option to do this.
|
||||
See the "Quick Start Setup Script" section in the :ref:`DPDK Getting Started Guide <linux_gsg>` for more information.
|
||||
|
||||
|
||||
|
@ -198,7 +198,7 @@ however please consult your distributions documentation to make sure that is the
|
||||
Also, to use VFIO, both kernel and BIOS must support and be configured to use IO virtualization (such as Intel® VT-d).
|
||||
|
||||
For proper operation of VFIO when running DPDK applications as a non-privileged user, correct permissions should also be set up.
|
||||
This can be done by using the DPDK setup script (called setup.sh and located in the tools directory).
|
||||
This can be done by using the DPDK setup script (called dpdk-setup.sh and located in the tools directory).
|
||||
|
||||
.. _linux_gsg_binding_kernel:
|
||||
|
||||
@ -224,7 +224,7 @@ and to bind and unbind those ports from the different kernel modules, including
|
||||
The following are some examples of how the script can be used.
|
||||
A full description of the script and its parameters can be obtained by calling the script with the ``--help`` or ``--usage`` options.
|
||||
Note that the uio or vfio kernel modules to be used, should be loaded into the kernel before
|
||||
running the ``dpdk_nic_bind.py`` script.
|
||||
running the ``dpdk-devbind.py`` script.
|
||||
|
||||
.. warning::
|
||||
|
||||
@ -238,14 +238,14 @@ running the ``dpdk_nic_bind.py`` script.
|
||||
|
||||
.. warning::
|
||||
|
||||
While any user can run the dpdk_nic_bind.py script to view the status of the network ports,
|
||||
While any user can run the dpdk-devbind.py script to view the status of the network ports,
|
||||
binding or unbinding network ports requires root privileges.
|
||||
|
||||
To see the status of all network ports on the system:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
./tools/dpdk_nic_bind.py --status
|
||||
./tools/dpdk-devbind.py --status
|
||||
|
||||
Network devices using DPDK-compatible driver
|
||||
============================================
|
||||
@ -267,16 +267,16 @@ To bind device ``eth1``,``04:00.1``, to the ``uio_pci_generic`` driver:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
./tools/dpdk_nic_bind.py --bind=uio_pci_generic 04:00.1
|
||||
./tools/dpdk-devbind.py --bind=uio_pci_generic 04:00.1
|
||||
|
||||
or, alternatively,
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
./tools/dpdk_nic_bind.py --bind=uio_pci_generic eth1
|
||||
./tools/dpdk-devbind.py --bind=uio_pci_generic eth1
|
||||
|
||||
To restore device ``82:00.0`` to its original kernel binding:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
./tools/dpdk_nic_bind.py --bind=ixgbe 82:00.0
|
||||
./tools/dpdk-devbind.py --bind=ixgbe 82:00.0
|
||||
|
@ -192,12 +192,12 @@ Configurations before running DPDK
|
||||
|
||||
|
||||
# Bind ports 82:00.0 and 85:00.0 to dpdk driver
|
||||
./dpdk_folder/tools/dpdk_nic_bind.py -b igb_uio 82:00.0 85:00.0
|
||||
./dpdk_folder/tools/dpdk-devbind.py -b igb_uio 82:00.0 85:00.0
|
||||
|
||||
# Check the port driver status
|
||||
./dpdk_folder/tools/dpdk_nic_bind.py --status
|
||||
./dpdk_folder/tools/dpdk-devbind.py --status
|
||||
|
||||
See ``dpdk_nic_bind.py --help`` for more details.
|
||||
See ``dpdk-devbind.py --help`` for more details.
|
||||
|
||||
|
||||
More details about DPDK setup and Linux kernel requirements see :ref:`linux_gsg_compiling_dpdk`.
|
||||
|
@ -33,7 +33,7 @@
|
||||
Quick Start Setup Script
|
||||
========================
|
||||
|
||||
The setup.sh script, found in the tools subdirectory, allows the user to perform the following tasks:
|
||||
The dpdk-setup.sh script, found in the tools subdirectory, allows the user to perform the following tasks:
|
||||
|
||||
* Build the DPDK libraries
|
||||
|
||||
@ -63,7 +63,7 @@ the user may compile their own application that links in the EAL libraries to cr
|
||||
Script Organization
|
||||
-------------------
|
||||
|
||||
The setup.sh script is logically organized into a series of steps that a user performs in sequence.
|
||||
The dpdk-setup.sh script is logically organized into a series of steps that a user performs in sequence.
|
||||
Each step provides a number of options that guide the user to completing the desired task.
|
||||
The following is a brief synopsis of each step.
|
||||
|
||||
@ -98,17 +98,17 @@ The final step has options for restoring the system to its original state.
|
||||
Use Cases
|
||||
---------
|
||||
|
||||
The following are some example of how to use the setup.sh script.
|
||||
The following are some example of how to use the dpdk-setup.sh script.
|
||||
The script should be run using the source command.
|
||||
Some options in the script prompt the user for further data before proceeding.
|
||||
|
||||
.. warning::
|
||||
|
||||
The setup.sh script should be run with root privileges.
|
||||
The dpdk-setup.sh script should be run with root privileges.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
source tools/setup.sh
|
||||
source tools/dpdk-setup.sh
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
@ -269,7 +269,7 @@ The following selection demonstrates the launch of the test application to run o
|
||||
Applications
|
||||
------------
|
||||
|
||||
Once the user has run the setup.sh script, built one of the EAL targets and set up hugepages (if using one of the Linux EAL targets),
|
||||
Once the user has run the dpdk-setup.sh script, built one of the EAL targets and set up hugepages (if using one of the Linux EAL targets),
|
||||
the user can then move on to building and running their application or one of the examples provided.
|
||||
|
||||
The examples in the /examples directory provide a good starting point to gain an understanding of the operation of the DPDK.
|
||||
|
@ -207,7 +207,7 @@ devices managed by ``librte_pmd_bnx2x`` in Linux operating system.
|
||||
#. Bind the QLogic adapters to ``igb_uio`` or ``vfio-pci`` loaded in the
|
||||
previous step::
|
||||
|
||||
./tools/dpdk_nic_bind.py --bind igb_uio 0000:84:00.0 0000:84:00.1
|
||||
./tools/dpdk-devbind.py --bind igb_uio 0000:84:00.0 0000:84:00.1
|
||||
|
||||
or
|
||||
|
||||
@ -219,7 +219,7 @@ devices managed by ``librte_pmd_bnx2x`` in Linux operating system.
|
||||
|
||||
sudo chmod 0666 /dev/vfio/*
|
||||
|
||||
./tools/dpdk_nic_bind.py --bind vfio-pci 0000:84:00.0 0000:84:00.1
|
||||
./tools/dpdk-devbind.py --bind vfio-pci 0000:84:00.0 0000:84:00.1
|
||||
|
||||
#. Start ``testpmd`` with basic parameters:
|
||||
|
||||
|
@ -285,7 +285,7 @@ devices managed by librte_pmd_cxgbe in Linux operating system.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
./tools/dpdk_nic_bind.py --bind igb_uio 0000:02:00.4
|
||||
./tools/dpdk-devbind.py --bind igb_uio 0000:02:00.4
|
||||
|
||||
or
|
||||
|
||||
@ -297,7 +297,7 @@ devices managed by librte_pmd_cxgbe in Linux operating system.
|
||||
|
||||
sudo chmod 0666 /dev/vfio/*
|
||||
|
||||
./tools/dpdk_nic_bind.py --bind vfio-pci 0000:02:00.4
|
||||
./tools/dpdk-devbind.py --bind vfio-pci 0000:02:00.4
|
||||
|
||||
.. note::
|
||||
|
||||
|
@ -225,7 +225,7 @@ devices managed by librte_pmd_ena.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
./tools/dpdk_nic_bind.py --bind=igb_uio 0000:02:00.1
|
||||
./tools/dpdk-devbind.py --bind=igb_uio 0000:02:00.1
|
||||
|
||||
#. Start testpmd with basic parameters:
|
||||
|
||||
|
@ -174,13 +174,13 @@ Prerequisites
|
||||
- DPDK suite should be configured based on the user's decision to use VFIO or
|
||||
UIO framework
|
||||
- If the vNIC device(s) to be used is bound to the kernel mode Ethernet driver
|
||||
(enic), use 'ifconfig' to bring the interface down. The dpdk_nic_bind.py tool
|
||||
(enic), use 'ifconfig' to bring the interface down. The dpdk-devbind.py tool
|
||||
can then be used to unbind the device's bus id from the enic kernel mode
|
||||
driver.
|
||||
- Bind the intended vNIC to vfio-pci in case the user wants ENIC PMD to use
|
||||
VFIO framework using dpdk_nic_bind.py.
|
||||
VFIO framework using dpdk-devbind.py.
|
||||
- Bind the intended vNIC to igb_uio in case the user wants ENIC PMD to use
|
||||
UIO framework using dpdk_nic_bind.py.
|
||||
UIO framework using dpdk-devbind.py.
|
||||
|
||||
At this point the system should be ready to run DPDK applications. Once the
|
||||
application runs to completion, the vNIC can be detached from vfio-pci or
|
||||
|
@ -164,13 +164,13 @@ devices managed by ``librte_pmd_i40e`` in the Linux operating system.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
./tools/dpdk_nic_bind.py --bind igb_uio 0000:83:00.0
|
||||
./tools/dpdk-devbind.py --bind igb_uio 0000:83:00.0
|
||||
|
||||
Or setup VFIO permissions for regular users and then bind to ``vfio-pci``:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
./tools/dpdk_nic_bind.py --bind vfio-pci 0000:83:00.0
|
||||
./tools/dpdk-devbind.py --bind vfio-pci 0000:83:00.0
|
||||
|
||||
#. Start ``testpmd`` with basic parameters:
|
||||
|
||||
|
@ -151,7 +151,7 @@ For example,
|
||||
|
||||
modprobe uio
|
||||
insmod igb_uio
|
||||
./dpdk_nic_bind.py -b igb_uio bb:ss.f
|
||||
./dpdk-devbind.py -b igb_uio bb:ss.f
|
||||
echo 2 > /sys/bus/pci/devices/0000\:bb\:ss.f/max_vfs (To enable two VFs on a specific PCI device)
|
||||
|
||||
Launch the DPDK testpmd/example or your own host daemon application using the DPDK PMD library.
|
||||
@ -236,7 +236,7 @@ For example,
|
||||
|
||||
modprobe uio
|
||||
insmod igb_uio
|
||||
./dpdk_nic_bind.py -b igb_uio bb:ss.f
|
||||
./dpdk-devbind.py -b igb_uio bb:ss.f
|
||||
echo 2 > /sys/bus/pci/devices/0000\:bb\:ss.f/max_vfs (To enable two VFs on a specific PCI device)
|
||||
|
||||
Launch the DPDK testpmd/example or your own host daemon application using the DPDK PMD library.
|
||||
@ -285,7 +285,7 @@ For example,
|
||||
.. code-block:: console
|
||||
|
||||
insmod igb_uio
|
||||
./dpdk_nic_bind.py -b igb_uio bb:ss.f
|
||||
./dpdk-devbind.py -b igb_uio bb:ss.f
|
||||
echo 2 > /sys/bus/pci/devices/0000\:bb\:ss.f/max_vfs (To enable two VFs on a specific pci device)
|
||||
|
||||
Launch DPDK testpmd/example or your own host daemon application using the DPDK PMD library.
|
||||
@ -406,7 +406,7 @@ The setup procedure is as follows:
|
||||
|
||||
modprobe uio
|
||||
insmod igb_uio
|
||||
./dpdk_nic_bind.py -b igb_uio 02:00.0 02:00.1 0e:00.0 0e:00.1
|
||||
./dpdk-devbind.py -b igb_uio 02:00.0 02:00.1 0e:00.0 0e:00.1
|
||||
echo 2 > /sys/bus/pci/devices/0000\:02\:00.0/max_vfs
|
||||
echo 2 > /sys/bus/pci/devices/0000\:02\:00.1/max_vfs
|
||||
echo 2 > /sys/bus/pci/devices/0000\:0e\:00.0/max_vfs
|
||||
|
@ -242,9 +242,9 @@ Using the NFP PMD is not different to using other PMDs. Usual steps are:
|
||||
useful for installing the UIO modules and for binding the right device to those
|
||||
modules avoiding doing so manually:
|
||||
|
||||
* **setup.sh**
|
||||
* **dpdk_nic_bind.py**
|
||||
* **dpdk-setup.sh**
|
||||
* **dpdk-devbind.py**
|
||||
|
||||
Configuration may be performed by running setup.sh which invokes
|
||||
dpdk_nic_bind.py as needed. Executing setup.sh will display a menu of
|
||||
Configuration may be performed by running dpdk-setup.sh which invokes
|
||||
dpdk-devbind.py as needed. Executing dpdk-setup.sh will display a menu of
|
||||
configuration options.
|
||||
|
@ -177,7 +177,7 @@ devices managed by ``librte_pmd_qede`` in Linux operating system.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
./tools/dpdk_nic_bind.py --bind igb_uio 0000:84:00.0 0000:84:00.1 \
|
||||
./tools/dpdk-devbind.py --bind igb_uio 0000:84:00.0 0000:84:00.1 \
|
||||
0000:84:00.2 0000:84:00.3
|
||||
|
||||
#. Start ``testpmd`` with basic parameters:
|
||||
|
@ -146,7 +146,7 @@ managed by ``librte_pmd_thunderx_nicvf`` in the Linux operating system.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
./tools/dpdk_nic_bind.py --bind vfio-pci 0002:01:00.2
|
||||
./tools/dpdk-devbind.py --bind vfio-pci 0002:01:00.2
|
||||
|
||||
#. Start ``testpmd`` with basic parameters:
|
||||
|
||||
@ -246,11 +246,11 @@ This section provides instructions to configure SR-IOV with Linux OS.
|
||||
|
||||
Unless ``thunder-nicvf`` driver is in use make sure your kernel config includes ``CONFIG_THUNDER_NIC_VF`` setting.
|
||||
|
||||
#. Verify PF/VF bind using ``dpdk_nic_bind.py``:
|
||||
#. Verify PF/VF bind using ``dpdk-devbind.py``:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
./tools/dpdk_nic_bind.py --status
|
||||
./tools/dpdk-devbind.py --status
|
||||
|
||||
Example output:
|
||||
|
||||
@ -268,18 +268,18 @@ This section provides instructions to configure SR-IOV with Linux OS.
|
||||
|
||||
modprobe vfio-pci
|
||||
|
||||
#. Bind VF devices to ``vfio-pci`` using ``dpdk_nic_bind.py``:
|
||||
#. Bind VF devices to ``vfio-pci`` using ``dpdk-devbind.py``:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
./tools/dpdk_nic_bind.py --bind vfio-pci 0002:01:00.1
|
||||
./tools/dpdk_nic_bind.py --bind vfio-pci 0002:01:00.2
|
||||
./tools/dpdk-devbind.py --bind vfio-pci 0002:01:00.1
|
||||
./tools/dpdk-devbind.py --bind vfio-pci 0002:01:00.2
|
||||
|
||||
#. Verify VF bind using ``dpdk_nic_bind.py``:
|
||||
#. Verify VF bind using ``dpdk-devbind.py``:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
./tools/dpdk_nic_bind.py --status
|
||||
./tools/dpdk-devbind.py --status
|
||||
|
||||
Example output:
|
||||
|
||||
|
@ -172,7 +172,7 @@ Host2VM communication example
|
||||
modprobe uio
|
||||
echo 512 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
|
||||
modprobe uio_pci_generic
|
||||
python tools/dpdk_nic_bind.py -b uio_pci_generic 00:03.0
|
||||
python tools/dpdk-devbind.py -b uio_pci_generic 00:03.0
|
||||
|
||||
We use testpmd as the forwarding application in this example.
|
||||
|
||||
|
@ -309,11 +309,11 @@ Misc
|
||||
Internally Generated Build Tools
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
``app/pmdinfogen``
|
||||
``app/dpdk-pmdinfogen``
|
||||
|
||||
|
||||
``pmdinfogen`` scans an object (.o) file for various well known symbol names. These
|
||||
well known symbol names are defined by various macros and used to export
|
||||
``dpdk-pmdinfogen`` scans an object (.o) file for various well known symbol names.
|
||||
These well known symbol names are defined by various macros and used to export
|
||||
important information about hardware support and usage for pmd files. For
|
||||
instance the macro:
|
||||
|
||||
@ -328,10 +328,10 @@ Creates the following symbol:
|
||||
static char this_pmd_name0[] __attribute__((used)) = "<name>";
|
||||
|
||||
|
||||
Which pmdinfogen scans for. Using this information other relevant bits of data
|
||||
can be exported from the object file and used to produce a hardware support
|
||||
description, that pmdinfogen then encodes into a json formatted string in the
|
||||
following format:
|
||||
Which ``dpdk-pmdinfogen`` scans for. Using this information other relevant
|
||||
bits of data can be exported from the object file and used to produce a
|
||||
hardware support description, that ``dpdk-pmdinfogen`` then encodes into a
|
||||
json formatted string in the following format:
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
|
@ -325,6 +325,9 @@ API Changes
|
||||
* The function ``rte_eth_dev_set_mtu`` adds a new return value ``-EBUSY``, which
|
||||
indicates the operation is forbidden because the port is running.
|
||||
|
||||
* The script ``dpdk_nic_bind.py`` is renamed to ``dpdk-devbind.py``.
|
||||
And the script ``setup.sh`` is renamed to ``dpdk-setup.sh``.
|
||||
|
||||
|
||||
ABI Changes
|
||||
-----------
|
||||
|
@ -30,15 +30,15 @@
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
|
||||
dpdk_pdump Application
|
||||
dpdk-pdump Application
|
||||
======================
|
||||
|
||||
The ``dpdk_pdump`` tool is a Data Plane Development Kit (DPDK) tool that runs as
|
||||
The ``dpdk-pdump`` tool is a Data Plane Development Kit (DPDK) tool that runs as
|
||||
a DPDK secondary process and is capable of enabling packet capture on dpdk ports.
|
||||
|
||||
.. Note::
|
||||
|
||||
* The ``dpdk_pdump`` tool depends on libpcap based PMD which is disabled
|
||||
* The ``dpdk-pdump`` tool depends on libpcap based PMD which is disabled
|
||||
by default in the build configuration files,
|
||||
owing to an external dependency on the libpcap development files
|
||||
which must be installed on the board.
|
||||
@ -53,7 +53,7 @@ The tool has a number of command line options:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
./build/app/dpdk_pdump --
|
||||
./build/app/dpdk-pdump --
|
||||
--pdump '(port=<port id> | device_id=<pci id or vdev name>),
|
||||
(queue=<queue_id>),
|
||||
(rx-dev=<iface or pcap file> |
|
||||
@ -95,10 +95,10 @@ PCI address (or) name of the eth device on which packets should be captured.
|
||||
|
||||
.. Note::
|
||||
|
||||
* As of now the ``dpdk_pdump`` tool cannot capture the packets of virtual devices
|
||||
* As of now the ``dpdk-pdump`` tool cannot capture the packets of virtual devices
|
||||
in the primary process due to a bug in the ethdev library. Due to this bug, in a multi process context,
|
||||
when the primary and secondary have different ports set, then the secondary process
|
||||
(here the ``dpdk_pdump`` tool) overwrites the ``rte_eth_devices[]`` entries of the primary process.
|
||||
(here the ``dpdk-pdump`` tool) overwrites the ``rte_eth_devices[]`` entries of the primary process.
|
||||
|
||||
``queue``:
|
||||
Queue id of the eth device on which packets should be captured. The user can pass a queue value of ``*`` to enable
|
||||
@ -141,4 +141,4 @@ Example
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo ./build/app/dpdk_pdump -- --pdump 'port=0,queue=*,rx-dev=/tmp/rx.pcap'
|
||||
$ sudo ./build/app/dpdk-pdump -- --pdump 'port=0,queue=*,rx-dev=/tmp/rx.pcap'
|
||||
|
@ -30,10 +30,10 @@
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
|
||||
dpdk_proc_info Application
|
||||
==========================
|
||||
dpdk-procinfo Application
|
||||
=========================
|
||||
|
||||
The dpdk_proc_info application is a Data Plane Development Kit (DPDK) application
|
||||
The dpdk-procinfo application is a Data Plane Development Kit (DPDK) application
|
||||
that runs as a DPDK secondary process and is capable of retrieving port
|
||||
statistics, resetting port statistics and printing DPDK memory information.
|
||||
This application extends the original functionality that was supported by
|
||||
@ -45,7 +45,7 @@ The application has a number of command line options:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
./$(RTE_TARGET)/app/dpdk_proc_info -- -m | [-p PORTMASK] [--stats | --xstats |
|
||||
./$(RTE_TARGET)/app/dpdk-procinfo -- -m | [-p PORTMASK] [--stats | --xstats |
|
||||
--stats-reset | --xstats-reset]
|
||||
|
||||
Parameters
|
||||
|
@ -999,7 +999,7 @@ For example, to move a pci device using ixgbe under DPDK management:
|
||||
.. code-block:: console
|
||||
|
||||
# Check the status of the available devices.
|
||||
./tools/dpdk_nic_bind.py --status
|
||||
./tools/dpdk-devbind.py --status
|
||||
|
||||
Network devices using DPDK-compatible driver
|
||||
============================================
|
||||
@ -1011,11 +1011,11 @@ For example, to move a pci device using ixgbe under DPDK management:
|
||||
|
||||
|
||||
# Bind the device to igb_uio.
|
||||
sudo ./tools/dpdk_nic_bind.py -b igb_uio 0000:0a:00.0
|
||||
sudo ./tools/dpdk-devbind.py -b igb_uio 0000:0a:00.0
|
||||
|
||||
|
||||
# Recheck the status of the devices.
|
||||
./tools/dpdk_nic_bind.py --status
|
||||
./tools/dpdk-devbind.py --status
|
||||
Network devices using DPDK-compatible driver
|
||||
============================================
|
||||
0000:0a:00.0 '82599ES 10-Gigabit' drv=igb_uio unused=
|
||||
@ -1118,9 +1118,9 @@ For example, to move a pci device under kernel management:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
sudo ./tools/dpdk_nic_bind.py -b ixgbe 0000:0a:00.0
|
||||
sudo ./tools/dpdk-devbind.py -b ixgbe 0000:0a:00.0
|
||||
|
||||
./tools/dpdk_nic_bind.py --status
|
||||
./tools/dpdk-devbind.py --status
|
||||
|
||||
Network devices using DPDK-compatible driver
|
||||
============================================
|
||||
|
@ -323,7 +323,7 @@ Building and Running the Switching Backend
|
||||
.. code-block:: console
|
||||
|
||||
modprobe uio_pci_generic
|
||||
python tools/dpdk_nic_bind.py -b uio_pci_generic 0000:09:00:00.0
|
||||
python tools/dpdk-devbind.py -b uio_pci_generic 0000:09:00:00.0
|
||||
|
||||
In this case, 0000:09:00.0 is the PCI address for the NIC controller.
|
||||
|
||||
|
@ -116,9 +116,9 @@ TAILQ_HEAD_INITIALIZER(solib_list);
|
||||
static const char *default_solib_dir = RTE_EAL_PMD_PATH;
|
||||
|
||||
/*
|
||||
* Stringified version of solib path used by pmdinfo.py
|
||||
* Stringified version of solib path used by dpdk-pmdinfo.py
|
||||
* Note: PLEASE DO NOT ALTER THIS without making a corresponding
|
||||
* change to tools/pmdinfo.py
|
||||
* change to tools/dpdk-pmdinfo.py
|
||||
*/
|
||||
static const char dpdk_solib_path[] __attribute__((used)) =
|
||||
"DPDK_PLUGIN_PATH=" RTE_EAL_PMD_PATH;
|
||||
|
@ -84,7 +84,7 @@ C_TO_O = $(CC) -Wp,-MD,$(call obj2dep,$(@)).tmp $(CFLAGS) \
|
||||
C_TO_O_STR = $(subst ','\'',$(C_TO_O)) #'# fix syntax highlight
|
||||
C_TO_O_DISP = $(if $(V),"$(C_TO_O_STR)"," CC $(@)")
|
||||
endif
|
||||
PMDINFO_GEN = $(RTE_SDK_BIN)/app/pmdinfogen $@ $@.pmd.c
|
||||
PMDINFO_GEN = $(RTE_SDK_BIN)/app/dpdk-pmdinfogen $@ $@.pmd.c
|
||||
PMDINFO_CC = $(CC) $(CFLAGS) -c -o $@.pmd.o $@.pmd.c
|
||||
PMDINFO_LD = $(CROSS)ld $(LDFLAGS) -r -o $@.o $@.pmd.o $@
|
||||
PMDINFO_TO_O = if grep -q 'PMD_REGISTER_DRIVER(.*)' $<; then \
|
||||
|
@ -117,18 +117,22 @@ install-runtime:
|
||||
$(Q)cp -a $O/lib/* $(DESTDIR)$(libdir)
|
||||
$(Q)$(call rte_mkdir, $(DESTDIR)$(bindir))
|
||||
$(Q)tar -cf - -C $O --exclude 'app/*.map' \
|
||||
--exclude app/pmdinfogen \
|
||||
--exclude app/dpdk-pmdinfogen \
|
||||
--exclude 'app/cmdline*' --exclude app/test \
|
||||
--exclude app/testacl --exclude app/testpipeline app | \
|
||||
tar -xf - -C $(DESTDIR)$(bindir) --strip-components=1 \
|
||||
--keep-newer-files --warning=no-ignore-newer
|
||||
$(Q)$(call rte_mkdir, $(DESTDIR)$(datadir))
|
||||
$(Q)cp -a $(RTE_SDK)/tools $(DESTDIR)$(datadir)
|
||||
$(Q)$(call rte_symlink, $(DESTDIR)$(datadir)/tools/dpdk-setup.sh, \
|
||||
$(DESTDIR)$(datadir)/tools/setup.sh)
|
||||
$(Q)$(call rte_symlink, $(DESTDIR)$(datadir)/tools/dpdk-devbind.py, \
|
||||
$(DESTDIR)$(datadir)/tools/dpdk_nic_bind.py)
|
||||
$(Q)$(call rte_mkdir, $(DESTDIR)$(sbindir))
|
||||
$(Q)$(call rte_symlink, $(DESTDIR)$(datadir)/tools/dpdk_nic_bind.py, \
|
||||
$(DESTDIR)$(sbindir)/dpdk_nic_bind)
|
||||
$(Q)$(call rte_symlink, $(DESTDIR)$(datadir)/tools/pmdinfo.py, \
|
||||
$(DESTDIR)$(bindir)/dpdk_pmdinfo)
|
||||
$(Q)$(call rte_symlink, $(DESTDIR)$(datadir)/tools/dpdk-devbind.py, \
|
||||
$(DESTDIR)$(sbindir)/dpdk-devbind)
|
||||
$(Q)$(call rte_symlink, $(DESTDIR)$(datadir)/tools/dpdk-pmdinfo.py, \
|
||||
$(DESTDIR)$(bindir)/dpdk-pmdinfo)
|
||||
|
||||
install-kmod:
|
||||
ifneq ($(wildcard $O/kmod/*),)
|
||||
@ -146,7 +150,7 @@ install-sdk:
|
||||
$(Q)cp -a $(RTE_SDK)/scripts $(DESTDIR)$(sdkdir)
|
||||
$(Q)$(call rte_mkdir, $(DESTDIR)$(targetdir)/app)
|
||||
$(Q)cp -a $O/.config $(DESTDIR)$(targetdir)
|
||||
$(Q)cp -a $O/app/pmdinfogen $(DESTDIR)$(targetdir)/app
|
||||
$(Q)cp -a $O/app/dpdk-pmdinfogen $(DESTDIR)$(targetdir)/app
|
||||
$(Q)$(call rte_symlink, $(DESTDIR)$(includedir), $(DESTDIR)$(targetdir)/include)
|
||||
$(Q)$(call rte_symlink, $(DESTDIR)$(libdir), $(DESTDIR)$(targetdir)/lib)
|
||||
|
||||
|
@ -66,7 +66,7 @@ test fast_test perf_test:
|
||||
fi
|
||||
|
||||
# this is a special target to ease the pain of running coverage tests
|
||||
# this runs all the autotests, cmdline_test script and dpdk_proc_info
|
||||
# this runs all the autotests, cmdline_test script and dpdk-procinfo
|
||||
coverage:
|
||||
@mkdir -p $(AUTOTEST_DIR) ; \
|
||||
cd $(AUTOTEST_DIR) ; \
|
||||
@ -78,7 +78,7 @@ coverage:
|
||||
$(RTE_OUTPUT)/app/test \
|
||||
$(RTE_TARGET) \
|
||||
$(BLACKLIST) $(WHITELIST) ; \
|
||||
$(RTE_OUTPUT)/app/dpdk_proc_info --file-prefix=ring_perf -- -m; \
|
||||
$(RTE_OUTPUT)/app/dpdk-procinfo --file-prefix=ring_perf -- -m; \
|
||||
else \
|
||||
echo "No test found, please do a 'make build' first, or specify O=" ;\
|
||||
fi
|
||||
|
@ -1,6 +1,5 @@
|
||||
#!/usr/bin/env python
|
||||
# -------------------------------------------------------------------------
|
||||
# scripts/pmdinfo.py
|
||||
#
|
||||
# Utility to dump PMD_INFO_STRING support from an object file
|
||||
#
|
||||
@ -569,8 +568,7 @@ def main(stream=None):
|
||||
optparser = OptionParser(
|
||||
usage='usage: %prog [-hrtp] [-d <pci id file] <elf-file>',
|
||||
description="Dump pmd hardware support info",
|
||||
add_help_option=True,
|
||||
prog='pmdinfo.py')
|
||||
add_help_option=True)
|
||||
optparser.add_option('-r', '--raw',
|
||||
action='store_true', dest='raw_output',
|
||||
help='Dump raw json strings')
|
@ -32,7 +32,7 @@
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
#
|
||||
# Run with "source /path/to/setup.sh"
|
||||
# Run with "source /path/to/dpdk-setup.sh"
|
||||
#
|
||||
|
||||
#
|
||||
@ -422,13 +422,13 @@ grep_meminfo()
|
||||
}
|
||||
|
||||
#
|
||||
# Calls dpdk_nic_bind.py --status to show the NIC and what they
|
||||
# Calls dpdk-devbind.py --status to show the NIC and what they
|
||||
# are all bound to, in terms of drivers.
|
||||
#
|
||||
show_nics()
|
||||
{
|
||||
if [ -d /sys/module/vfio_pci -o -d /sys/module/igb_uio ]; then
|
||||
${RTE_SDK}/tools/dpdk_nic_bind.py --status
|
||||
${RTE_SDK}/tools/dpdk-devbind.py --status
|
||||
else
|
||||
echo "# Please load the 'igb_uio' or 'vfio-pci' kernel module before "
|
||||
echo "# querying or adjusting NIC device bindings"
|
||||
@ -436,16 +436,16 @@ show_nics()
|
||||
}
|
||||
|
||||
#
|
||||
# Uses dpdk_nic_bind.py to move devices to work with vfio-pci
|
||||
# Uses dpdk-devbind.py to move devices to work with vfio-pci
|
||||
#
|
||||
bind_nics_to_vfio()
|
||||
{
|
||||
if [ -d /sys/module/vfio_pci ]; then
|
||||
${RTE_SDK}/tools/dpdk_nic_bind.py --status
|
||||
${RTE_SDK}/tools/dpdk-devbind.py --status
|
||||
echo ""
|
||||
echo -n "Enter PCI address of device to bind to VFIO driver: "
|
||||
read PCI_PATH
|
||||
sudo ${RTE_SDK}/tools/dpdk_nic_bind.py -b vfio-pci $PCI_PATH &&
|
||||
sudo ${RTE_SDK}/tools/dpdk-devbind.py -b vfio-pci $PCI_PATH &&
|
||||
echo "OK"
|
||||
else
|
||||
echo "# Please load the 'vfio-pci' kernel module before querying or "
|
||||
@ -454,16 +454,16 @@ bind_nics_to_vfio()
|
||||
}
|
||||
|
||||
#
|
||||
# Uses dpdk_nic_bind.py to move devices to work with igb_uio
|
||||
# Uses dpdk-devbind.py to move devices to work with igb_uio
|
||||
#
|
||||
bind_nics_to_igb_uio()
|
||||
{
|
||||
if [ -d /sys/module/igb_uio ]; then
|
||||
${RTE_SDK}/tools/dpdk_nic_bind.py --status
|
||||
${RTE_SDK}/tools/dpdk-devbind.py --status
|
||||
echo ""
|
||||
echo -n "Enter PCI address of device to bind to IGB UIO driver: "
|
||||
read PCI_PATH
|
||||
sudo ${RTE_SDK}/tools/dpdk_nic_bind.py -b igb_uio $PCI_PATH && echo "OK"
|
||||
sudo ${RTE_SDK}/tools/dpdk-devbind.py -b igb_uio $PCI_PATH && echo "OK"
|
||||
else
|
||||
echo "# Please load the 'igb_uio' kernel module before querying or "
|
||||
echo "# adjusting NIC device bindings"
|
||||
@ -471,18 +471,18 @@ bind_nics_to_igb_uio()
|
||||
}
|
||||
|
||||
#
|
||||
# Uses dpdk_nic_bind.py to move devices to work with kernel drivers again
|
||||
# Uses dpdk-devbind.py to move devices to work with kernel drivers again
|
||||
#
|
||||
unbind_nics()
|
||||
{
|
||||
${RTE_SDK}/tools/dpdk_nic_bind.py --status
|
||||
${RTE_SDK}/tools/dpdk-devbind.py --status
|
||||
echo ""
|
||||
echo -n "Enter PCI address of device to unbind: "
|
||||
read PCI_PATH
|
||||
echo ""
|
||||
echo -n "Enter name of kernel driver to bind the device to: "
|
||||
read DRV
|
||||
sudo ${RTE_SDK}/tools/dpdk_nic_bind.py -b $DRV $PCI_PATH && echo "OK"
|
||||
sudo ${RTE_SDK}/tools/dpdk-devbind.py -b $DRV $PCI_PATH && echo "OK"
|
||||
}
|
||||
|
||||
#
|
Loading…
Reference in New Issue
Block a user