net/mlx5: fix VLAN push action validation
[dpdk.git] / examples / l3fwd / l3fwd.h
index e2399d7..ad39496 100644 (file)
@@ -1,5 +1,5 @@
 /* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2010-2016 Intel Corporation
+ * Copyright(c) 2010-2021 Intel Corporation
  */
 
 #ifndef __L3_FWD_H__
 
 #define RTE_LOGTYPE_L3FWD RTE_LOGTYPE_USER1
 
-#if !defined(NO_HASH_MULTI_LOOKUP) && defined(RTE_MACHINE_CPUFLAG_NEON)
+#if !defined(NO_HASH_MULTI_LOOKUP) && defined(__ARM_NEON)
 #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
 
+#define VECTOR_SIZE_DEFAULT   MAX_PKT_BURST
+#define VECTOR_TMO_NS_DEFAULT 1E6 /* 1ms */
 /*
  * Try to avoid TX buffering if we have at least MAX_TX_BURST packets to send.
  */
 /* 32-bit has less address-space for hugepage memory, limit to 1M entries */
 #define L3FWD_HASH_ENTRIES             (1024*1024*1)
 #endif
-#define HASH_ENTRY_NUMBER_DEFAULT      4
+#define HASH_ENTRY_NUMBER_DEFAULT      16
+
+struct parm_cfg {
+       const char *rule_ipv4_name;
+       const char *rule_ipv6_name;
+};
 
 struct mbuf_table {
        uint16_t len;
@@ -72,6 +86,10 @@ struct lcore_conf {
 
 extern volatile bool force_quit;
 
+/* RX and TX queue depths */
+extern uint16_t nb_rxd;
+extern uint16_t nb_txd;
+
 /* ethernet addresses of ports */
 extern uint64_t dest_eth_addr[RTE_MAX_ETHPORTS];
 extern struct rte_ether_addr ports_eth_addr[RTE_MAX_ETHPORTS];
@@ -87,6 +105,8 @@ extern xmm_t val_eth[RTE_MAX_ETHPORTS];
 
 extern struct lcore_conf lcore_conf[RTE_MAX_LCORE];
 
+extern struct parm_cfg parm_config;
+
 /* Send burst of packets on an output interface */
 static inline int
 send_burst(struct lcore_conf *qconf, uint16_t n, uint16_t port)
@@ -170,13 +190,19 @@ is_valid_ipv4_pkt(struct rte_ipv4_hdr *pkt, uint32_t link_len)
 }
 #endif /* DO_RFC_1812_CHECKS */
 
-/* Function pointers for LPM or EM functionality. */
+int
+init_mem(uint16_t portid, unsigned int nb_mbuf);
+
+/* Function pointers for LPM, EM or FIB functionality. */
 void
 setup_lpm(const int socketid);
 
 void
 setup_hash(const int socketid);
 
+void
+setup_fib(const int socketid);
+
 int
 em_check_ptype(int portid);
 
@@ -192,12 +218,67 @@ 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(__attribute__((unused)) void *dummy);
+lpm_main_loop(__rte_unused void *dummy);
 
-/* Return ipv4/ipv6 fwd lookup struct for LPM or EM. */
+int
+fib_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_event_main_loop_tx_d_vector(__rte_unused void *dummy);
+int
+lpm_event_main_loop_tx_d_burst_vector(__rte_unused void *dummy);
+int
+lpm_event_main_loop_tx_q_vector(__rte_unused void *dummy);
+int
+lpm_event_main_loop_tx_q_burst_vector(__rte_unused void *dummy);
+
+int
+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);
+int
+em_event_main_loop_tx_d_vector(__rte_unused void *dummy);
+int
+em_event_main_loop_tx_d_burst_vector(__rte_unused void *dummy);
+int
+em_event_main_loop_tx_q_vector(__rte_unused void *dummy);
+int
+em_event_main_loop_tx_q_burst_vector(__rte_unused void *dummy);
+
+int
+fib_event_main_loop_tx_d(__rte_unused void *dummy);
+int
+fib_event_main_loop_tx_d_burst(__rte_unused void *dummy);
+int
+fib_event_main_loop_tx_q(__rte_unused void *dummy);
+int
+fib_event_main_loop_tx_q_burst(__rte_unused void *dummy);
+int
+fib_event_main_loop_tx_d_vector(__rte_unused void *dummy);
+int
+fib_event_main_loop_tx_d_burst_vector(__rte_unused void *dummy);
+int
+fib_event_main_loop_tx_q_vector(__rte_unused void *dummy);
+int
+fib_event_main_loop_tx_q_burst_vector(__rte_unused void *dummy);
+
+
+/* Return ipv4/ipv6 fwd lookup struct for LPM, EM or FIB. */
 void *
 em_get_ipv4_l3fwd_lookup_struct(const int socketid);
 
@@ -210,4 +291,10 @@ lpm_get_ipv4_l3fwd_lookup_struct(const int socketid);
 void *
 lpm_get_ipv6_l3fwd_lookup_struct(const int socketid);
 
+void *
+fib_get_ipv4_l3fwd_lookup_struct(const int socketid);
+
+void *
+fib_get_ipv6_l3fwd_lookup_struct(const int socketid);
+
 #endif  /* __L3_FWD_H__ */