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
hash: implement RCU resources reclamation
[dpdk.git]
/
doc
/
guides
/
sample_app_ug
/
skeleton.rst
diff --git
a/doc/guides/sample_app_ug/skeleton.rst
b/doc/guides/sample_app_ug/skeleton.rst
index
0503584
..
263d8de
100644
(file)
--- a/
doc/guides/sample_app_ug/skeleton.rst
+++ b/
doc/guides/sample_app_ug/skeleton.rst
@@
-21,11
+21,11
@@
The application is located in the ``skeleton`` sub-directory.
Running the Application
-----------------------
Running the Application
-----------------------
-To run the example in a ``linux
app
`` environment:
+To run the example in a ``linux`` environment:
.. code-block:: console
.. code-block:: console
- ./
build/basicfwd
-l 1 -n 4
+ ./
<build_dir>/examples/dpdk-skeleton
-l 1 -n 4
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.
@@
-81,7
+81,7
@@
The ``main()`` function also initializes all the ports using the user defined
.. code-block:: c
.. code-block:: c
-
for (portid = 0; portid < nb_ports; portid++
) {
+
RTE_ETH_FOREACH_DEV(portid
) {
if (port_init(portid, mbuf_pool) != 0) {
rte_exit(EXIT_FAILURE,
"Cannot init port %" PRIu8 "\n", portid);
if (port_init(portid, mbuf_pool) != 0) {
rte_exit(EXIT_FAILURE,
"Cannot init port %" PRIu8 "\n", portid);
@@
-115,11
+115,11
@@
Forwarding application is shown below:
{
struct rte_eth_conf port_conf = port_conf_default;
const uint16_t rx_rings = 1, tx_rings = 1;
{
struct rte_eth_conf port_conf = port_conf_default;
const uint16_t rx_rings = 1, tx_rings = 1;
- struct ether_addr addr;
+ struct
rte_
ether_addr addr;
int retval;
uint16_t q;
int retval;
uint16_t q;
- if (
port >= rte_eth_dev_count(
))
+ if (
!rte_eth_dev_is_valid_port(port
))
return -1;
/* Configure the Ethernet device. */
return -1;
/* Configure the Ethernet device. */
@@
-149,7
+149,9
@@
Forwarding application is shown below:
return retval;
/* Enable RX in promiscuous mode for the Ethernet device. */
return retval;
/* Enable RX in promiscuous mode for the Ethernet device. */
- rte_eth_promiscuous_enable(port);
+ retval = rte_eth_promiscuous_enable(port);
+ if (retval != 0)
+ return retval;
return 0;
}
return 0;
}
@@
-160,7
+162,7
@@
The Ethernet ports are configured with default settings using the
.. code-block:: c
static const struct rte_eth_conf port_conf_default = {
.. code-block:: c
static const struct rte_eth_conf port_conf_default = {
- .rxmode = { .max_rx_pkt_len = ETHER_MAX_LEN }
+ .rxmode = { .max_rx_pkt_len =
RTE_
ETHER_MAX_LEN }
};
For this example the ports are set up with 1 RX and 1 TX queue using the
};
For this example the ports are set up with 1 RX and 1 TX queue using the
@@
-177,7
+179,7
@@
Finally the RX port is set in promiscuous mode:
.. code-block:: c
.. code-block:: c
- rte_eth_promiscuous_enable(port);
+ r
etval = r
te_eth_promiscuous_enable(port);
The Lcores Main
The Lcores Main
@@
-189,17
+191,16
@@
looks like the following:
.. code-block:: c
.. code-block:: c
- static __
attribute__((noreturn))
void
+ static __
rte_noreturn
void
lcore_main(void)
{
lcore_main(void)
{
- const uint16_t nb_ports = rte_eth_dev_count();
uint16_t port;
/*
* Check that the port is on the same NUMA node as the polling thread
* for best performance.
*/
uint16_t port;
/*
* Check that the port is on the same NUMA node as the polling thread
* for best performance.
*/
-
for (port = 0; port < nb_ports; port++
)
+
RTE_ETH_FOREACH_DEV(port
)
if (rte_eth_dev_socket_id(port) > 0 &&
rte_eth_dev_socket_id(port) !=
(int)rte_socket_id())
if (rte_eth_dev_socket_id(port) > 0 &&
rte_eth_dev_socket_id(port) !=
(int)rte_socket_id())
@@
-216,7
+217,7
@@
looks like the following:
* Receive packets on a port and forward them on the paired
* port. The mapping is 0 -> 1, 1 -> 0, 2 -> 3, 3 -> 2, etc.
*/
* Receive packets on a port and forward them on the paired
* port. The mapping is 0 -> 1, 1 -> 0, 2 -> 3, 3 -> 2, etc.
*/
-
for (port = 0; port < nb_ports; port++
) {
+
RTE_ETH_FOREACH_DEV(port
) {
/* Get burst of RX packets, from first port of pair. */
struct rte_mbuf *bufs[BURST_SIZE];
/* Get burst of RX packets, from first port of pair. */
struct rte_mbuf *bufs[BURST_SIZE];
@@
-246,7
+247,7
@@
The main work of the application is done within the loop:
.. code-block:: c
for (;;) {
.. code-block:: c
for (;;) {
-
for (port = 0; port < nb_ports; port++
) {
+
RTE_ETH_FOREACH_DEV(port
) {
/* Get burst of RX packets, from first port of pair. */
struct rte_mbuf *bufs[BURST_SIZE];
/* Get burst of RX packets, from first port of pair. */
struct rte_mbuf *bufs[BURST_SIZE];