X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=examples%2Fl3fwd%2Fl3fwd.h;h=67055431f78a3df42748ce38a4a5975858fdc210;hb=35a7fe80c29446eab49ffd7e81a4f610fd1f98ce;hp=c962deac39be5633867a3a24468dbd124646f766;hpb=3998e2a07220844d3f3c17f76a781ced3efe0de0;p=dpdk.git diff --git a/examples/l3fwd/l3fwd.h b/examples/l3fwd/l3fwd.h index c962deac39..67055431f7 100644 --- a/examples/l3fwd/l3fwd.h +++ b/examples/l3fwd/l3fwd.h @@ -5,6 +5,7 @@ #ifndef __L3_FWD_H__ #define __L3_FWD_H__ +#include #include #define DO_RFC_1812_CHECKS @@ -15,9 +16,16 @@ #define NO_HASH_MULTI_LOOKUP 1 #endif +/* + * Configurable number of RX/TX ring descriptors + */ +#define RTE_TEST_RX_DESC_DEFAULT 1024 +#define RTE_TEST_TX_DESC_DEFAULT 1024 + #define MAX_PKT_BURST 32 #define BURST_TX_DRAIN_US 100 /* TX drain every ~100us */ +#define MEMPOOL_CACHE_SIZE 256 #define MAX_RX_QUEUE_PER_LCORE 16 /* @@ -73,7 +81,7 @@ extern volatile bool force_quit; /* ethernet addresses of ports */ extern uint64_t dest_eth_addr[RTE_MAX_ETHPORTS]; -extern struct ether_addr ports_eth_addr[RTE_MAX_ETHPORTS]; +extern struct rte_ether_addr ports_eth_addr[RTE_MAX_ETHPORTS]; /* mask of enabled ports */ extern uint32_t enabled_port_mask; @@ -130,14 +138,14 @@ send_single_packet(struct lcore_conf *qconf, #ifdef DO_RFC_1812_CHECKS static inline int -is_valid_ipv4_pkt(struct ipv4_hdr *pkt, uint32_t link_len) +is_valid_ipv4_pkt(struct rte_ipv4_hdr *pkt, uint32_t link_len) { /* From http://www.rfc-editor.org/rfc/rfc1812.txt section 5.2.2 */ /* * 1. The packet length reported by the Link Layer must be large * enough to hold the minimum length legal IP datagram (20 bytes). */ - if (link_len < sizeof(struct ipv4_hdr)) + if (link_len < sizeof(struct rte_ipv4_hdr)) return -1; /* 2. The IP checksum must be correct. */ @@ -162,13 +170,16 @@ is_valid_ipv4_pkt(struct ipv4_hdr *pkt, uint32_t link_len) * datagram header, whose length is specified in the IP header length * field. */ - if (rte_cpu_to_be_16(pkt->total_length) < sizeof(struct ipv4_hdr)) + if (rte_cpu_to_be_16(pkt->total_length) < sizeof(struct rte_ipv4_hdr)) return -5; return 0; } #endif /* DO_RFC_1812_CHECKS */ +int +init_mem(uint16_t portid, unsigned int nb_mbuf); + /* Function pointers for LPM or EM functionality. */ void setup_lpm(const int socketid); @@ -191,10 +202,29 @@ lpm_cb_parse_ptype(uint16_t port, uint16_t queue, struct rte_mbuf *pkts[], uint16_t nb_pkts, uint16_t max_pkts, void *user_param); int -em_main_loop(__attribute__((unused)) void *dummy); +em_main_loop(__rte_unused void *dummy); + +int +lpm_main_loop(__rte_unused void *dummy); + +int +lpm_event_main_loop_tx_d(__rte_unused void *dummy); +int +lpm_event_main_loop_tx_d_burst(__rte_unused void *dummy); +int +lpm_event_main_loop_tx_q(__rte_unused void *dummy); +int +lpm_event_main_loop_tx_q_burst(__rte_unused void *dummy); int -lpm_main_loop(__attribute__((unused)) void *dummy); +em_event_main_loop_tx_d(__rte_unused void *dummy); +int +em_event_main_loop_tx_d_burst(__rte_unused void *dummy); +int +em_event_main_loop_tx_q(__rte_unused void *dummy); +int +em_event_main_loop_tx_q_burst(__rte_unused void *dummy); + /* Return ipv4/ipv6 fwd lookup struct for LPM or EM. */ void *