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
net: add rte prefix to ether defines
[dpdk.git]
/
examples
/
flow_classify
/
flow_classify.c
diff --git
a/examples/flow_classify/flow_classify.c
b/examples/flow_classify/flow_classify.c
index
61cda86
..
dfb7db1
100644
(file)
--- a/
examples/flow_classify/flow_classify.c
+++ b/
examples/flow_classify/flow_classify.c
@@
-15,8
+15,8
@@
#include <rte_flow_classify.h>
#include <rte_table_acl.h>
#include <rte_flow_classify.h>
#include <rte_table_acl.h>
-#define RX_RING_SIZE 1
28
-#define TX_RING_SIZE
512
+#define RX_RING_SIZE 1
024
+#define TX_RING_SIZE
1024
#define NUM_MBUFS 8191
#define MBUF_CACHE_SIZE 250
#define NUM_MBUFS 8191
#define MBUF_CACHE_SIZE 250
@@
-60,7
+60,9
@@
static struct{
const char cb_port_delim[] = ":";
static const struct rte_eth_conf port_conf_default = {
const char cb_port_delim[] = ":";
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,
+ },
};
struct flow_classifier {
};
struct flow_classifier {
@@
-96,7
+98,7
@@
static struct rte_acl_field_def ipv4_defs[NUM_FIELDS_IPV4] = {
.size = sizeof(uint8_t),
.field_index = PROTO_FIELD_IPV4,
.input_index = PROTO_INPUT_IPV4,
.size = sizeof(uint8_t),
.field_index = PROTO_FIELD_IPV4,
.input_index = PROTO_INPUT_IPV4,
- .offset = sizeof(struct ether_hdr) +
+ .offset = sizeof(struct
rte_
ether_hdr) +
offsetof(struct ipv4_hdr, next_proto_id),
},
/* next input field (IPv4 source address) - 4 consecutive bytes. */
offsetof(struct ipv4_hdr, next_proto_id),
},
/* next input field (IPv4 source address) - 4 consecutive bytes. */
@@
-106,7
+108,7
@@
static struct rte_acl_field_def ipv4_defs[NUM_FIELDS_IPV4] = {
.size = sizeof(uint32_t),
.field_index = SRC_FIELD_IPV4,
.input_index = SRC_INPUT_IPV4,
.size = sizeof(uint32_t),
.field_index = SRC_FIELD_IPV4,
.input_index = SRC_INPUT_IPV4,
- .offset = sizeof(struct ether_hdr) +
+ .offset = sizeof(struct
rte_
ether_hdr) +
offsetof(struct ipv4_hdr, src_addr),
},
/* next input field (IPv4 destination address) - 4 consecutive bytes. */
offsetof(struct ipv4_hdr, src_addr),
},
/* next input field (IPv4 destination address) - 4 consecutive bytes. */
@@
-116,7
+118,7
@@
static struct rte_acl_field_def ipv4_defs[NUM_FIELDS_IPV4] = {
.size = sizeof(uint32_t),
.field_index = DST_FIELD_IPV4,
.input_index = DST_INPUT_IPV4,
.size = sizeof(uint32_t),
.field_index = DST_FIELD_IPV4,
.input_index = DST_INPUT_IPV4,
- .offset = sizeof(struct ether_hdr) +
+ .offset = sizeof(struct
rte_
ether_hdr) +
offsetof(struct ipv4_hdr, dst_addr),
},
/*
offsetof(struct ipv4_hdr, dst_addr),
},
/*
@@
-129,7
+131,7
@@
static struct rte_acl_field_def ipv4_defs[NUM_FIELDS_IPV4] = {
.size = sizeof(uint16_t),
.field_index = SRCP_FIELD_IPV4,
.input_index = SRCP_DESTP_INPUT_IPV4,
.size = sizeof(uint16_t),
.field_index = SRCP_FIELD_IPV4,
.input_index = SRCP_DESTP_INPUT_IPV4,
- .offset = sizeof(struct ether_hdr) +
+ .offset = sizeof(struct
rte_
ether_hdr) +
sizeof(struct ipv4_hdr) +
offsetof(struct tcp_hdr, src_port),
},
sizeof(struct ipv4_hdr) +
offsetof(struct tcp_hdr, src_port),
},
@@
-139,7
+141,7
@@
static struct rte_acl_field_def ipv4_defs[NUM_FIELDS_IPV4] = {
.size = sizeof(uint16_t),
.field_index = DSTP_FIELD_IPV4,
.input_index = SRCP_DESTP_INPUT_IPV4,
.size = sizeof(uint16_t),
.field_index = DSTP_FIELD_IPV4,
.input_index = SRCP_DESTP_INPUT_IPV4,
- .offset = sizeof(struct ether_hdr) +
+ .offset = sizeof(struct
rte_
ether_hdr) +
sizeof(struct ipv4_hdr) +
offsetof(struct tcp_hdr, dst_port),
},
sizeof(struct ipv4_hdr) +
offsetof(struct tcp_hdr, dst_port),
},
@@
-190,14
+192,21
@@
static inline int
port_init(uint8_t port, struct rte_mempool *mbuf_pool)
{
struct rte_eth_conf port_conf = port_conf_default;
port_init(uint8_t port, struct rte_mempool *mbuf_pool)
{
struct rte_eth_conf port_conf = port_conf_default;
- struct ether_addr addr;
+ struct
rte_
ether_addr addr;
const uint16_t rx_rings = 1, tx_rings = 1;
int retval;
uint16_t q;
const uint16_t rx_rings = 1, tx_rings = 1;
int retval;
uint16_t q;
+ struct rte_eth_dev_info dev_info;
+ struct rte_eth_txconf txconf;
- if (
port >= rte_eth_dev_count(
))
+ if (
!rte_eth_dev_is_valid_port(port
))
return -1;
return -1;
+ rte_eth_dev_info_get(port, &dev_info);
+ if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_MBUF_FAST_FREE)
+ port_conf.txmode.offloads |=
+ DEV_TX_OFFLOAD_MBUF_FAST_FREE;
+
/* 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)
@@
-211,10
+220,12
@@
port_init(uint8_t port, struct rte_mempool *mbuf_pool)
return retval;
}
return retval;
}
+ txconf = dev_info.default_txconf;
+ txconf.offloads = port_conf.txmode.offloads;
/* Allocate and set up 1 TX queue per Ethernet port. */
for (q = 0; q < tx_rings; q++) {
retval = rte_eth_tx_queue_setup(port, q, TX_RING_SIZE,
/* Allocate and set up 1 TX queue per Ethernet port. */
for (q = 0; q < tx_rings; q++) {
retval = rte_eth_tx_queue_setup(port, q, TX_RING_SIZE,
- rte_eth_dev_socket_id(port),
NULL
);
+ rte_eth_dev_socket_id(port),
&txconf
);
if (retval < 0)
return retval;
}
if (retval < 0)
return retval;
}
@@
-246,8
+257,7
@@
port_init(uint8_t port, struct rte_mempool *mbuf_pool)
static __attribute__((noreturn)) void
lcore_main(struct flow_classifier *cls_app)
{
static __attribute__((noreturn)) void
lcore_main(struct flow_classifier *cls_app)
{
- const uint8_t nb_ports = rte_eth_dev_count();
- uint8_t port;
+ uint16_t port;
int ret;
int i = 0;
int ret;
int i = 0;
@@
-262,7
+272,7
@@
lcore_main(struct flow_classifier *cls_app)
* Check that the port is on the same NUMA node as the polling thread
* for best performance.
*/
* 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()) {
printf("\n\n");
if (rte_eth_dev_socket_id(port) > 0 &&
rte_eth_dev_socket_id(port) != (int)rte_socket_id()) {
printf("\n\n");
@@
-281,7
+291,7
@@
lcore_main(struct flow_classifier *cls_app)
* on the paired port.
* The mapping is 0 -> 1, 1 -> 0, 2 -> 3, 3 -> 2, etc.
*/
* 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];
const uint16_t nb_rx = rte_eth_rx_burst(port, 0,
/* Get burst of RX packets, from first port of pair. */
struct rte_mbuf *bufs[BURST_SIZE];
const uint16_t nb_rx = rte_eth_rx_burst(port, 0,
@@
-740,8
+750,8
@@
int
main(int argc, char *argv[])
{
struct rte_mempool *mbuf_pool;
main(int argc, char *argv[])
{
struct rte_mempool *mbuf_pool;
- uint
8
_t nb_ports;
- uint
8
_t portid;
+ uint
16
_t nb_ports;
+ uint
16
_t portid;
int ret;
int socket_id;
struct rte_table_acl_params table_acl_params;
int ret;
int socket_id;
struct rte_table_acl_params table_acl_params;
@@
-764,7
+774,7
@@
main(int argc, char *argv[])
rte_exit(EXIT_FAILURE, "Invalid flow_classify parameters\n");
/* Check that there is an even number of ports to send/receive on. */
rte_exit(EXIT_FAILURE, "Invalid flow_classify parameters\n");
/* 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");
@@
-776,7
+786,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 %"PRIu8 "\n",
portid);
if (port_init(portid, mbuf_pool) != 0)
rte_exit(EXIT_FAILURE, "Cannot init port %"PRIu8 "\n",
portid);