git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
app/testpmd: disable Rx VLAN offloads by default
[dpdk.git]
/
doc
/
guides
/
sample_app_ug
/
kernel_nic_interface.rst
diff --git
a/doc/guides/sample_app_ug/kernel_nic_interface.rst
b/doc/guides/sample_app_ug/kernel_nic_interface.rst
index
c8fc10a
..
67f2140
100644
(file)
--- a/
doc/guides/sample_app_ug/kernel_nic_interface.rst
+++ b/
doc/guides/sample_app_ug/kernel_nic_interface.rst
@@
-77,35
+77,17
@@
The packet flow through the Kernel NIC Interface application is as shown in the
Kernel NIC Application Packet Flow
Kernel NIC Application Packet Flow
-
Compiling the Application
-------------------------
Compiling the Application
-------------------------
-Compile the application as follows:
-
-#. Go to the example directory:
-
- .. code-block:: console
+To compile the sample application see :doc:`compiling`.
- export RTE_SDK=/path/to/rte_sdk
- cd ${RTE_SDK}/examples/kni
+The application is located in the ``kni`` sub-directory.
-#. Set the target (a default target is used if not specified)
-
- .. note::
+.. note::
This application is intended as a linuxapp only.
This application is intended as a linuxapp only.
- .. code-block:: console
-
- export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#. Build the application:
-
- .. code-block:: console
-
- make
-
Loading the Kernel Module
-------------------------
Loading the Kernel Module
-------------------------
@@
-180,7
+162,7
@@
Where:
Refer to *DPDK Getting Started Guide* for general information on running applications and the Environment Abstraction Layer (EAL) options.
Refer to *DPDK Getting Started Guide* for general information on running applications and the Environment Abstraction Layer (EAL) options.
-The -c coremask parameter of the EAL options should include the lcores indicated by the lcore_rx and lcore_tx,
+The -c coremask
or -l corelist
parameter of the EAL options should include the lcores indicated by the lcore_rx and lcore_tx,
but does not need to include lcores indicated by lcore_kthread as they are used to pin the kernel thread on.
The -p PORTMASK parameter should include the ports indicated by the port in --config, neither more nor less.
but does not need to include lcores indicated by lcore_kthread as they are used to pin the kernel thread on.
The -p PORTMASK parameter should include the ports indicated by the port in --config, neither more nor less.
@@
-199,7
+181,7
@@
and one lcore of kernel thread for each port:
.. code-block:: console
.. code-block:: console
- ./build/kni -
c 0xf0 -n 4 -- -P -p 0x3
-config="(0,4,6,8),(1,5,7,9)"
+ ./build/kni -
l 4-7 -n 4 -- -P -p 0x3 -
-config="(0,4,6,8),(1,5,7,9)"
KNI Operations
--------------
KNI Operations
--------------
@@
-237,8
+219,7
@@
The following sections provide some explanation of code.
Initialization
~~~~~~~~~~~~~~
Initialization
~~~~~~~~~~~~~~
-Setup of mbuf pool, driver and queues is similar to the setup done in the L2 Forwarding sample application
-(see Chapter 9 "L2 Forwarding Sample Application (in Real and Virtualized Environments" for details).
+Setup of mbuf pool, driver and queues is similar to the setup done in the :doc:`l2_forward_real_virtual`..
In addition, one or more kernel NIC interfaces are allocated for each
of the configured ports according to the command line parameters.
In addition, one or more kernel NIC interfaces are allocated for each
of the configured ports according to the command line parameters.
@@
-247,7
+228,7
@@
The code for allocating the kernel NIC interfaces for a specific port is as foll
.. code-block:: c
static int
.. code-block:: c
static int
- kni_alloc(uint
8
_t port_id)
+ kni_alloc(uint
16
_t port_id)
{
uint8_t i;
struct rte_kni *kni;
{
uint8_t i;
struct rte_kni *kni;
@@
-265,11
+246,11
@@
The code for allocating the kernel NIC interfaces for a specific port is as foll
memset(&conf, 0, sizeof(conf));
if (params[port_id]->nb_lcore_k) {
memset(&conf, 0, sizeof(conf));
if (params[port_id]->nb_lcore_k) {
-
rte_
snprintf(conf.name, RTE_KNI_NAMESIZE, "vEth%u_%u", port_id, i);
+ snprintf(conf.name, RTE_KNI_NAMESIZE, "vEth%u_%u", port_id, i);
conf.core_id = params[port_id]->lcore_k[i];
conf.force_bind = 1;
} else
conf.core_id = params[port_id]->lcore_k[i];
conf.force_bind = 1;
} else
-
rte_
snprintf(conf.name, RTE_KNI_NAMESIZE, "vEth%u", port_id);
+ snprintf(conf.name, RTE_KNI_NAMESIZE, "vEth%u", port_id);
conf.group_id = (uint16_t)port_id;
conf.mbuf_size = MAX_PACKET_SZ;
conf.group_id = (uint16_t)port_id;
conf.mbuf_size = MAX_PACKET_SZ;
@@
-336,7
+317,7
@@
The code is as follows:
int i, j, nb_token;
char *str_fld[_NUM_FLD];
unsigned long int_fld[_NUM_FLD];
int i, j, nb_token;
char *str_fld[_NUM_FLD];
unsigned long int_fld[_NUM_FLD];
- uint
8
_t port_id, nb_kni_port_params = 0;
+ uint
16
_t port_id, nb_kni_port_params = 0;
memset(&kni_port_params_array, 0, sizeof(kni_port_params_array));
memset(&kni_port_params_array, 0, sizeof(kni_port_params_array));
@@
-352,7
+333,7
@@
The code is as follows:
goto fail;
}
goto fail;
}
-
rte_
snprintf(s, sizeof(s), "%.*s", size, p);
+ snprintf(s, sizeof(s), "%.*s", size, p);
nb_token = rte_strsplit(s, sizeof(s), str_fld, _NUM_FLD, ',');
if (nb_token <= FLD_LCORE_TX) {
nb_token = rte_strsplit(s, sizeof(s), str_fld, _NUM_FLD, ',');
if (nb_token <= FLD_LCORE_TX) {
@@
-425,7
+406,7
@@
to see if this lcore is reading from or writing to kernel NIC interfaces.
For the case that reads from a NIC port and writes to the kernel NIC interfaces,
the packet reception is the same as in L2 Forwarding sample application
For the case that reads from a NIC port and writes to the kernel NIC interfaces,
the packet reception is the same as in L2 Forwarding sample application
-(see
Section 9.4.6 "Receive, Process and Transmit Packets"
).
+(see
:ref:`l2_fwd_app_rx_tx_packets`
).
The packet transmission is done by sending mbufs into the kernel NIC interfaces by rte_kni_tx_burst().
The KNI library automatically frees the mbufs after the kernel successfully copied the mbufs.
The packet transmission is done by sending mbufs into the kernel NIC interfaces by rte_kni_tx_burst().
The KNI library automatically frees the mbufs after the kernel successfully copied the mbufs.
@@
-472,7
+453,7
@@
The KNI library automatically frees the mbufs after the kernel successfully copi
For the other case that reads from kernel NIC interfaces and writes to a physical NIC port, packets are retrieved by reading
mbufs from kernel NIC interfaces by `rte_kni_rx_burst()`.
The packet transmission is the same as in the L2 Forwarding sample application
For the other case that reads from kernel NIC interfaces and writes to a physical NIC port, packets are retrieved by reading
mbufs from kernel NIC interfaces by `rte_kni_rx_burst()`.
The packet transmission is the same as in the L2 Forwarding sample application
-(see
Section 9.4.6 "Receive, Process and Transmit Packet's"
).
+(see
:ref:`l2_fwd_app_rx_tx_packets`
).
.. code-block:: c
.. code-block:: c
@@
-533,7
+514,7
@@
Currently, setting a new MTU and configuring the network interface (up/ down) ar
/* Callback for request of changing MTU */
static int
/* Callback for request of changing MTU */
static int
- kni_change_mtu(uint
8
_t port_id, unsigned new_mtu)
+ kni_change_mtu(uint
16
_t port_id, unsigned new_mtu)
{
int ret;
struct rte_eth_conf conf;
{
int ret;
struct rte_eth_conf conf;
@@
-582,7
+563,7
@@
Currently, setting a new MTU and configuring the network interface (up/ down) ar
/* Callback for request of configuring network interface up/down */
static int
/* Callback for request of configuring network interface up/down */
static int
- kni_config_network_interface(uint
8
_t port_id, uint8_t if_up)
+ kni_config_network_interface(uint
16
_t port_id, uint8_t if_up)
{
int ret = 0;
{
int ret = 0;