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
doc: add GRE option flow item to feature list
[dpdk.git]
/
examples
/
l2fwd-cat
/
l2fwd-cat.c
diff --git
a/examples/l2fwd-cat/l2fwd-cat.c
b/examples/l2fwd-cat/l2fwd-cat.c
index
69339cc
..
6e16705
100644
(file)
--- a/
examples/l2fwd-cat/l2fwd-cat.c
+++ b/
examples/l2fwd-cat/l2fwd-cat.c
@@
-19,10
+19,6
@@
#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 = ETHER_MAX_LEN }
-};
-
/* l2fwd-cat.c: CAT enabled, basic DPDK skeleton forwarding example. */
/*
/* l2fwd-cat.c: CAT enabled, basic DPDK skeleton forwarding example. */
/*
@@
-32,16
+28,18
@@
static const struct rte_eth_conf port_conf_default = {
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;
int retval;
uint16_t q;
uint16_t nb_rxd = RX_RING_SIZE;
uint16_t nb_txd = TX_RING_SIZE;
const uint16_t rx_rings = 1, tx_rings = 1;
int retval;
uint16_t q;
uint16_t nb_rxd = RX_RING_SIZE;
uint16_t nb_txd = TX_RING_SIZE;
- if (
port >= rte_eth_dev_count(
))
+ if (
!rte_eth_dev_is_valid_port(port
))
return -1;
return -1;
+ memset(&port_conf, 0, sizeof(struct rte_eth_conf));
+
/* Configure the Ethernet device. */
retval = rte_eth_dev_configure(port, rx_rings, tx_rings, &port_conf);
if (retval != 0)
/* Configure the Ethernet device. */
retval = rte_eth_dev_configure(port, rx_rings, tx_rings, &port_conf);
if (retval != 0)
@@
-73,17
+71,19
@@
port_init(uint16_t port, struct rte_mempool *mbuf_pool)
return retval;
/* Display the port MAC address. */
return retval;
/* Display the port MAC address. */
- struct ether_addr addr;
- rte_eth_macaddr_get(port, &addr);
+ struct rte_ether_addr 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);
+ if (retval != 0)
+ return retval;
return 0;
}
return 0;
}
@@
-92,18
+92,17
@@
port_init(uint16_t port, struct rte_mempool *mbuf_pool)
* 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
+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++
)
- if (rte_eth_dev_socket_id(port) > 0 &&
+
RTE_ETH_FOREACH_DEV(port
)
+ 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 "
@@
-119,7
+118,7
@@
lcore_main(void)
* 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];
@@
-154,10
+153,11
@@
main(int argc, char *argv[])
unsigned nb_ports;
uint16_t portid;
unsigned nb_ports;
uint16_t portid;
- /* Initialize the Environment Abstraction Layer (EAL). */
+ /* Initialize 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;
@@
-166,15
+166,18
@@
main(int argc, char *argv[])
* Initialize the PQoS library and configure CAT.
* Please see l2fwd-cat documentation for more info.
*/
* Initialize the PQoS library and configure CAT.
* Please see l2fwd-cat documentation for more info.
*/
+
+ /* Initialize the PQoS. 8< */
ret = cat_init(argc, argv);
if (ret < 0)
rte_exit(EXIT_FAILURE, "PQOS: L3CA init failed!\n");
ret = cat_init(argc, argv);
if (ret < 0)
rte_exit(EXIT_FAILURE, "PQOS: L3CA init failed!\n");
+ /* >8 End of initialization of PQoS. */
argc -= ret;
argv += ret;
/* Check that there is an even number of ports to send/receive on. */
argc -= ret;
argv += ret;
/* Check that there is an even number of ports to send/receive on. */
- nb_ports = rte_eth_dev_count();
+ nb_ports = rte_eth_dev_count
_avail
();
if (nb_ports < 2 || (nb_ports & 1))
rte_exit(EXIT_FAILURE, "Error: number of ports must be even\n");
if (nb_ports < 2 || (nb_ports & 1))
rte_exit(EXIT_FAILURE, "Error: number of ports must be even\n");
@@
-186,7
+189,7
@@
main(int argc, char *argv[])
rte_exit(EXIT_FAILURE, "Cannot create mbuf pool\n");
/* Initialize all ports. */
rte_exit(EXIT_FAILURE, "Cannot create mbuf pool\n");
/* Initialize all ports. */
-
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 %"PRIu16 "\n",
portid);
if (port_init(portid, mbuf_pool) != 0)
rte_exit(EXIT_FAILURE, "Cannot init port %"PRIu16 "\n",
portid);
@@
-194,8
+197,11
@@
main(int argc, char *argv[])
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. */
lcore_main();
lcore_main();
+ /* clean up the EAL */
+ rte_eal_cleanup();
+
return 0;
}
return 0;
}