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
test/crypto: add copy and set DSCP cases
[dpdk.git]
/
examples
/
skeleton
/
basicfwd.c
diff --git
a/examples/skeleton/basicfwd.c
b/examples/skeleton/basicfwd.c
index
171ebde
..
518cd72
100644
(file)
--- a/
examples/skeleton/basicfwd.c
+++ b/
examples/skeleton/basicfwd.c
@@
-17,22
+17,18
@@
#define MBUF_CACHE_SIZE 250
#define BURST_SIZE 32
#define MBUF_CACHE_SIZE 250
#define BURST_SIZE 32
-static const struct rte_eth_conf port_conf_default = {
- .rxmode = {
- .max_rx_pkt_len = RTE_ETHER_MAX_LEN,
- },
-};
-
/* basicfwd.c: Basic DPDK skeleton forwarding example. */
/*
* Initializes a given port using global settings and with the RX buffers
* coming from the mbuf_pool passed as a parameter.
*/
/* basicfwd.c: Basic DPDK skeleton forwarding example. */
/*
* Initializes a given port using global settings and with the RX buffers
* coming from the mbuf_pool passed as a parameter.
*/
+
+/* Main functional part of port initialization. 8< */
static inline int
port_init(uint16_t port, struct rte_mempool *mbuf_pool)
{
static inline int
port_init(uint16_t port, struct rte_mempool *mbuf_pool)
{
- struct rte_eth_conf port_conf
= port_conf_default
;
+ struct rte_eth_conf port_conf;
const uint16_t rx_rings = 1, tx_rings = 1;
uint16_t nb_rxd = RX_RING_SIZE;
uint16_t nb_txd = TX_RING_SIZE;
const uint16_t rx_rings = 1, tx_rings = 1;
uint16_t nb_rxd = RX_RING_SIZE;
uint16_t nb_txd = TX_RING_SIZE;
@@
-44,6
+40,8
@@
port_init(uint16_t port, struct rte_mempool *mbuf_pool)
if (!rte_eth_dev_is_valid_port(port))
return -1;
if (!rte_eth_dev_is_valid_port(port))
return -1;
+ memset(&port_conf, 0, sizeof(struct rte_eth_conf));
+
retval = rte_eth_dev_info_get(port, &dev_info);
if (retval != 0) {
printf("Error during getting device (port %u) info: %s\n",
retval = rte_eth_dev_info_get(port, &dev_info);
if (retval != 0) {
printf("Error during getting device (port %u) info: %s\n",
@@
-51,9
+49,9
@@
port_init(uint16_t port, struct rte_mempool *mbuf_pool)
return retval;
}
return retval;
}
- if (dev_info.tx_offload_capa &
DEV
_TX_OFFLOAD_MBUF_FAST_FREE)
+ if (dev_info.tx_offload_capa &
RTE_ETH
_TX_OFFLOAD_MBUF_FAST_FREE)
port_conf.txmode.offloads |=
port_conf.txmode.offloads |=
-
DEV
_TX_OFFLOAD_MBUF_FAST_FREE;
+
RTE_ETH
_TX_OFFLOAD_MBUF_FAST_FREE;
/* Configure the Ethernet device. */
retval = rte_eth_dev_configure(port, rx_rings, tx_rings, &port_conf);
/* Configure the Ethernet device. */
retval = rte_eth_dev_configure(port, rx_rings, tx_rings, &port_conf);
@@
-82,32
+80,39
@@
port_init(uint16_t port, struct rte_mempool *mbuf_pool)
return retval;
}
return retval;
}
- /* Start
the Ethernet port.
*/
+ /* Start
ing Ethernet port. 8<
*/
retval = rte_eth_dev_start(port);
retval = rte_eth_dev_start(port);
+ /* >8 End of starting of ethernet port. */
if (retval < 0)
return retval;
/* Display the port MAC address. */
struct rte_ether_addr addr;
if (retval < 0)
return retval;
/* Display the port MAC address. */
struct rte_ether_addr addr;
- rte_eth_macaddr_get(port, &addr);
+ retval = rte_eth_macaddr_get(port, &addr);
+ if (retval != 0)
+ return retval;
+
printf("Port %u MAC: %02" PRIx8 " %02" PRIx8 " %02" PRIx8
" %02" PRIx8 " %02" PRIx8 " %02" PRIx8 "\n",
printf("Port %u MAC: %02" PRIx8 " %02" PRIx8 " %02" PRIx8
" %02" PRIx8 " %02" PRIx8 " %02" PRIx8 "\n",
- port,
- addr.addr_bytes[0], addr.addr_bytes[1],
- addr.addr_bytes[2], addr.addr_bytes[3],
- addr.addr_bytes[4], addr.addr_bytes[5]);
+ port, RTE_ETHER_ADDR_BYTES(&addr));
/* Enable RX in promiscuous mode for the Ethernet device. */
/* Enable RX in promiscuous mode for the Ethernet device. */
- rte_eth_promiscuous_enable(port);
+ retval = rte_eth_promiscuous_enable(port);
+ /* End of setting RX port in promiscuous mode. */
+ if (retval != 0)
+ return retval;
return 0;
}
return 0;
}
+/* >8 End of main functional part of port initialization. */
/*
* The lcore main. This is the main thread that does the work, reading from
* an input port and writing to an output port.
*/
/*
* The lcore main. This is the main thread that does the work, reading from
* an input port and writing to an output port.
*/
-static __attribute__((noreturn)) void
+
+ /* Basic forwarding application lcore. 8< */
+static __rte_noreturn void
lcore_main(void)
{
uint16_t port;
lcore_main(void)
{
uint16_t port;
@@
-117,7
+122,7
@@
lcore_main(void)
* for best performance.
*/
RTE_ETH_FOREACH_DEV(port)
* for best performance.
*/
RTE_ETH_FOREACH_DEV(port)
- if (rte_eth_dev_socket_id(port) > 0 &&
+ if (rte_eth_dev_socket_id(port) >
=
0 &&
rte_eth_dev_socket_id(port) !=
(int)rte_socket_id())
printf("WARNING, port %u is on remote NUMA node to "
rte_eth_dev_socket_id(port) !=
(int)rte_socket_id())
printf("WARNING, port %u is on remote NUMA node to "
@@
-127,7
+132,7
@@
lcore_main(void)
printf("\nCore %u forwarding packets. [Ctrl+C to quit]\n",
rte_lcore_id());
printf("\nCore %u forwarding packets. [Ctrl+C to quit]\n",
rte_lcore_id());
- /*
Run until the application is quit or killed.
*/
+ /*
Main work of application loop. 8<
*/
for (;;) {
/*
* Receive packets on a port and forward them on the paired
for (;;) {
/*
* Receive packets on a port and forward them on the paired
@@
-155,7
+160,9
@@
lcore_main(void)
}
}
}
}
}
}
+ /* >8 End of loop. */
}
}
+/* >8 End Basic forwarding application lcore. */
/*
* The main function, which does initialization and calls the per-lcore
/*
* The main function, which does initialization and calls the per-lcore
@@
-168,10
+175,11
@@
main(int argc, char *argv[])
unsigned nb_ports;
uint16_t portid;
unsigned nb_ports;
uint16_t portid;
- /* Initializ
e the Environment Abstraction Layer (EAL).
*/
+ /* Initializ
ion the Environment Abstraction Layer (EAL). 8<
*/
int ret = rte_eal_init(argc, argv);
if (ret < 0)
rte_exit(EXIT_FAILURE, "Error with EAL initialization\n");
int ret = rte_eal_init(argc, argv);
if (ret < 0)
rte_exit(EXIT_FAILURE, "Error with EAL initialization\n");
+ /* >8 End of initialization the Environment Abstraction Layer (EAL). */
argc -= ret;
argv += ret;
argc -= ret;
argv += ret;
@@
-182,23
+190,31
@@
main(int argc, char *argv[])
rte_exit(EXIT_FAILURE, "Error: number of ports must be even\n");
/* Creates a new mempool in memory to hold the mbufs. */
rte_exit(EXIT_FAILURE, "Error: number of ports must be even\n");
/* Creates a new mempool in memory to hold the mbufs. */
+
+ /* Allocates mempool to hold the mbufs. 8< */
mbuf_pool = rte_pktmbuf_pool_create("MBUF_POOL", NUM_MBUFS * nb_ports,
MBUF_CACHE_SIZE, 0, RTE_MBUF_DEFAULT_BUF_SIZE, rte_socket_id());
mbuf_pool = rte_pktmbuf_pool_create("MBUF_POOL", NUM_MBUFS * nb_ports,
MBUF_CACHE_SIZE, 0, RTE_MBUF_DEFAULT_BUF_SIZE, rte_socket_id());
+ /* >8 End of allocating mempool to hold mbuf. */
if (mbuf_pool == NULL)
rte_exit(EXIT_FAILURE, "Cannot create mbuf pool\n");
if (mbuf_pool == NULL)
rte_exit(EXIT_FAILURE, "Cannot create mbuf pool\n");
- /* Initializ
e all ports.
*/
+ /* Initializ
ing all ports. 8<
*/
RTE_ETH_FOREACH_DEV(portid)
if (port_init(portid, mbuf_pool) != 0)
rte_exit(EXIT_FAILURE, "Cannot init port %"PRIu16 "\n",
portid);
RTE_ETH_FOREACH_DEV(portid)
if (port_init(portid, mbuf_pool) != 0)
rte_exit(EXIT_FAILURE, "Cannot init port %"PRIu16 "\n",
portid);
+ /* >8 End of initializing all ports. */
if (rte_lcore_count() > 1)
printf("\nWARNING: Too many lcores enabled. Only 1 used.\n");
if (rte_lcore_count() > 1)
printf("\nWARNING: Too many lcores enabled. Only 1 used.\n");
- /* Call lcore_main on the ma
ster core only.
*/
+ /* Call lcore_main on the ma
in core only. Called on single lcore. 8<
*/
lcore_main();
lcore_main();
+ /* >8 End of called on single lcore. */
+
+ /* clean up the EAL */
+ rte_eal_cleanup();
return 0;
}
return 0;
}