-.. BSD LICENSE
- Copyright(c) 2016 Intel Corporation. All rights reserved.
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
- * Neither the name of Intel Corporation nor the names of its
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
+.. SPDX-License-Identifier: BSD-3-Clause
+ Copyright(c) 2016 Intel Corporation.
L2 Forwarding Sample Application with Cache Allocation Technology (CAT)
=======================================================================
Compiling the Application
-------------------------
+.. note::
-Requires ``libpqos`` from Intel's
-`intel-cmt-cat software package <https://github.com/01org/intel-cmt-cat>`_
-hosted on GitHub repository. For installation notes, please see ``README`` file.
-
-GIT:
+ Requires ``libpqos`` from Intel's
+ `intel-cmt-cat software package <https://github.com/01org/intel-cmt-cat>`_
+ hosted on GitHub repository. For installation notes, please see ``README`` file.
-* https://github.com/01org/intel-cmt-cat
+ GIT:
-To compile the application export the path to PQoS lib
-and the DPDK source tree and go to the example directory:
+ * https://github.com/01org/intel-cmt-cat
-.. code-block:: console
- export PQOS_INSTALL_PATH=/path/to/libpqos
- export RTE_SDK=/path/to/rte_sdk
+#. To compile the application export the path to PQoS lib
+ and the DPDK source tree and go to the example directory:
- cd ${RTE_SDK}/examples/l2fwd-cat
+ .. code-block:: console
-Set the target, for example:
+ export PQOS_INSTALL_PATH=/path/to/libpqos
-.. code-block:: console
- export RTE_TARGET=x86_64-native-linuxapp-gcc
+To compile the sample application see :doc:`compiling`.
-See the *DPDK Getting Started* Guide for possible ``RTE_TARGET`` values.
-
-Build the application as follows:
-
-.. code-block:: console
-
- make
+The application is located in the ``l2fwd-cat`` sub-directory.
Running the Application
-----------------------
-To run the example in a ``linuxapp`` environment and enable CAT on cpus 0-2:
+To run the example in a ``linux`` environment and enable CAT on cpus 0-2:
.. code-block:: console
- ./build/l2fwd-cat -c 2 -n 4 -- --l3ca="0x3@(0-2)"
+ ./<build_dir>/examples/dpdk-l2fwd-cat -l 1 -n 4 -- --l3ca="0x3@(0-2)"
or to enable CAT and CDP on cpus 1,3:
.. code-block:: console
- ./build/l2fwd-cat -c 2 -n 4 -- --l3ca="(0x00C00,0x00300)@(1,3)"
+ ./<build_dir>/examples/dpdk-l2fwd-cat -l 1 -n 4 -- --l3ca="(0x00C00,0x00300)@(1,3)"
If CDP is not supported it will fail with following error message:
``argc`` and ``argv`` arguments are provided to the ``rte_eal_init()``
function. The value returned is the number of parsed arguments:
-.. code-block:: c
-
- int ret = rte_eal_init(argc, argv);
- if (ret < 0)
- rte_exit(EXIT_FAILURE, "Error with EAL initialization\n");
+.. literalinclude:: ../../../examples/l2fwd-cat/l2fwd-cat.c
+ :language: c
+ :start-after: Initialize the Environment Abstraction Layer (EAL). 8<
+ :end-before: >8 End of initializion the Environment Abstraction Layer (EAL).
+ :dedent: 1
The next task is to initialize the PQoS library and configure CAT. The
``argc`` and ``argv`` arguments are provided to the ``cat_init()``
function. The value returned is the number of parsed arguments:
-.. code-block:: c
-
- int ret = cat_init(argc, argv);
- if (ret < 0)
- rte_exit(EXIT_FAILURE, "PQOS: L3CA init failed!\n");
+.. literalinclude:: ../../../examples/l2fwd-cat/l2fwd-cat.c
+ :language: c
+ :start-after: Initialize the PQoS. 8<
+ :end-before: >8 End of initialization of PQoS.
+ :dedent: 1
``cat_init()`` is a wrapper function which parses the command, validates
the requested parameters and configures CAT accordingly.
``atexit(...)`` is used to register ``cat_exit(...)`` to be called on
a clean exit. ``cat_exit(...)`` performs a simple CAT clean-up, by associating
-COS 0 to all involved CPUs via ``pqos_l3ca_assoc_set(...)`` calls.
\ No newline at end of file
+COS 0 to all involved CPUs via ``pqos_l3ca_assoc_set(...)`` calls.