.. BSD LICENSE
- Copyright 2015 CESNET
+ Copyright 2015 - 2016 CESNET
All rights reserved.
Redistribution and use in source and binary forms, with or without
SZEDATA2 poll mode driver library
=================================
-The SZEDATA2 poll mode driver library implements support for cards from COMBO
-family (**COMBO-80G**, **COMBO-100G**).
-The SZEDATA2 PMD is virtual PMD which uses interface provided by libsze2
-library to communicate with COMBO cards over sze2 layer.
+The SZEDATA2 poll mode driver library implements support for the Netcope
+FPGA Boards (**NFB-***), FPGA-based programmable NICs.
+The SZEDATA2 PMD uses interface provided by the libsze2 library to communicate
+with the NFB cards over the sze2 layer.
-More information about family of
-`COMBO cards <https://www.liberouter.org/technologies/cards/>`_
+More information about the
+`NFB cards <http://www.netcope.com/en/products/fpga-boards>`_
and used technology
-(`NetCOPE platform <https://www.liberouter.org/technologies/netcope/>`_) can be
-found on the `Liberouter website <https://www.liberouter.org/>`_.
+(`Netcope Development Kit <http://www.netcope.com/en/products/fpga-development-kit>`_)
+can be found on the `Netcope Technologies website <http://www.netcope.com/>`_.
.. note::
It can be enabled by setting ``CONFIG_RTE_LIBRTE_PMD_SZEDATA2=y``
and recompiling.
-Prerequisities
---------------
+.. note::
+
+ Currently the driver is supported only on x86_64 architectures.
+ Only x86_64 versions of the external libraries are provided.
+
+Prerequisites
+-------------
This PMD requires kernel modules which are responsible for initialization and
allocation of resources needed for sze2 layer function.
* szedata2_cv3
Kernel modules manage initialization of hardware, allocation and
- sharing of resources for user space applications:
+ sharing of resources for user space applications.
Information about getting the dependencies can be found `here
-<https://www.liberouter.org/technologies/netcope/access-to-libsze2-library/>`_.
+<http://www.netcope.com/en/company/community-support/dpdk-libsze2>`_.
+Configuration
+-------------
-Using the SZEDATA2 PMD
-----------------------
+These configuration options can be modified before compilation in the
+``.config`` file:
-SZEDATA2 PMD can be created by passing ``--vdev=`` option to EAL in the
-following format:
+* ``CONFIG_RTE_LIBRTE_PMD_SZEDATA2`` default value: **n**
-.. code-block:: console
+ Value **y** enables compilation of szedata2 PMD.
+
+* ``CONFIG_RTE_LIBRTE_PMD_SZEDATA2_AS`` default value: **0**
+
+ This option defines type of firmware address space and must be set
+ according to the used card and mode.
+ Currently supported values are:
- --vdev 'DEVICE,dev_path=PATH,rx_ifaces=RX_MASK,tx_ifaces=TX_MASK'
+ * **0** - for cards (modes):
-``DEVICE`` and options ``dev_path``, ``rx_ifaces``, ``tx_ifaces`` are mandatory
-and must be separated by commas.
+ * NFB-100G1 (100G1)
-* ``DEVICE``: contains prefix ``eth_szedata2`` followed by numbers or letters,
- must be unique for each virtual device
+ * **1** - for cards (modes):
-* ``dev_path``: Defines path to szedata2 device.
- Value is valid path to szedata2 device. Example:
+ * NFB-100G2Q (100G1)
- .. code-block:: console
+ * **2** - for cards (modes):
- dev_path=/dev/szedataII0
+ * NFB-40G2 (40G2)
+ * NFB-100G2C (100G2)
+ * NFB-100G2Q (40G2)
-* ``rx_ifaces``: Defines which receive channels will be used.
- For each channel is created one queue. Value is mask for selecting which
- receive channels are required. Example:
+ * **3** - for cards (modes):
- .. code-block:: console
+ * NFB-40G2 (10G8)
+ * NFB-100G2Q (10G8)
- rx_ifaces=0x3
+ * **4** - for cards (modes):
-* ``tx_ifaces``: Defines which transmit channels will be used.
- For each channel is created one queue. Value is mask for selecting which
- transmit channels are required. Example:
+ * NFB-100G1 (10G10)
- .. code-block:: console
+ * **5** - for experimental firmwares and future use
- tx_ifaces=0x3
+Using the SZEDATA2 PMD
+----------------------
+
+From DPDK version 16.04 the type of SZEDATA2 PMD is changed to PMD_PDEV.
+SZEDATA2 device is automatically recognized during EAL initialization.
+No special command line options are needed.
+
+Kernel modules have to be loaded before running the DPDK application.
Example of usage
----------------
.. code-block:: console
- $RTE_TARGET/app/testpmd -c 0xf -n 2 \
- --vdev 'eth_szedata20,dev_path=/dev/szedataII0,rx_ifaces=0x3,tx_ifaces=0x3' \
- -- --port-topology=chained --rxq=2 --txq=2 --nb-cores=2
+ $RTE_TARGET/app/testpmd -l 0-3 -n 2 \
+ -- --port-topology=chained --rxq=2 --txq=2 --nb-cores=2 -i -a
+
+Example output:
+
+.. code-block:: console
+
+ [...]
+ EAL: PCI device 0000:06:00.0 on NUMA socket -1
+ EAL: probe driver: 1b26:c1c1 rte_szedata2_pmd
+ PMD: Initializing szedata2 device (0000:06:00.0)
+ PMD: SZEDATA2 path: /dev/szedataII0
+ PMD: Available DMA channels RX: 8 TX: 8
+ PMD: resource0 phys_addr = 0xe8000000 len = 134217728 virt addr = 7f48f8000000
+ PMD: szedata2 device (0000:06:00.0) successfully initialized
+ Interactive-mode selected
+ Auto-start selected
+ Configuring Port 0 (socket 0)
+ Port 0: 00:11:17:00:00:00
+ Checking link statuses...
+ Port 0 Link Up - speed 10000 Mbps - full-duplex
+ Done
+ Start automatic packet forwarding
+ io packet forwarding - CRC stripping disabled - packets/burst=32
+ nb forwarding cores=2 - nb forwarding ports=1
+ RX queues=2 - RX desc=128 - RX free threshold=0
+ RX threshold registers: pthresh=0 hthresh=0 wthresh=0
+ TX queues=2 - TX desc=512 - TX free threshold=0
+ TX threshold registers: pthresh=0 hthresh=0 wthresh=0
+ TX RS bit threshold=0 - TXQ flags=0x0
+ testpmd>