X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=app%2Ftest-pmd%2Ftestpmd.h;h=3ff11e6442c508dd51035737d9063539ccc9559a;hb=0bfe8460413d1b9b23e583f6e7e8d64d03d79742;hp=121b75646c5b767d1a2356a6c68a714fa251889c;hpb=3c156061b938822d45ed48534d3ffc3655b6207f;p=dpdk.git diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h index 121b75646c..3ff11e6442 100644 --- a/app/test-pmd/testpmd.h +++ b/app/test-pmd/testpmd.h @@ -5,6 +5,8 @@ #ifndef _TESTPMD_H_ #define _TESTPMD_H_ +#include + #include #include #include @@ -179,6 +181,7 @@ struct rte_port { uint8_t tx_queue_stats_mapping_enabled; uint8_t rx_queue_stats_mapping_enabled; volatile uint16_t port_status; /**< port started or not */ + uint8_t need_setup; /**< port just attached */ uint8_t need_reconfig; /**< need reconfiguring port or not */ uint8_t need_reconfig_queues; /**< need reconfiguring queues or not */ uint8_t rss_flag; /**< enable rss or not */ @@ -191,9 +194,14 @@ struct rte_port { uint32_t mc_addr_nb; /**< nb. of addr. in mc_addr_pool */ uint8_t slave_flag; /**< bonding slave port */ struct port_flow *flow_list; /**< Associated flows. */ + const struct rte_eth_rxtx_callback *rx_dump_cb[MAX_QUEUE_ID+1]; + const struct rte_eth_rxtx_callback *tx_dump_cb[MAX_QUEUE_ID+1]; #ifdef SOFTNIC struct softnic_port softport; /**< softnic params */ #endif + /**< metadata value to insert in Tx packets. */ + rte_be32_t tx_metadata; + const struct rte_eth_rxtx_callback *tx_set_md_cb[MAX_QUEUE_ID+1]; }; /** @@ -324,6 +332,7 @@ extern uint8_t lsc_interrupt; /**< disabled by "--no-lsc-interrupt" parameter */ extern uint8_t rmv_interrupt; /**< disabled by "--no-rmv-interrupt" parameter */ extern uint32_t event_print_mask; /**< set by "--print-event xxxx" and "--mask-event xxxx parameters */ +extern bool setup_on_probe_event; /**< disabled by port setup-on iterator */ extern uint8_t hot_plug; /**< enable by "--hot-plug" parameter */ extern int do_mlockall; /**< set by "--mlockall" or "--no-mlockall" parameter */ @@ -507,6 +516,68 @@ struct nvgre_encap_conf { }; struct nvgre_encap_conf nvgre_encap_conf; +/* L2 encap parameters. */ +struct l2_encap_conf { + uint32_t select_ipv4:1; + uint32_t select_vlan:1; + rte_be16_t vlan_tci; + uint8_t eth_src[ETHER_ADDR_LEN]; + uint8_t eth_dst[ETHER_ADDR_LEN]; +}; +struct l2_encap_conf l2_encap_conf; + +/* L2 decap parameters. */ +struct l2_decap_conf { + uint32_t select_vlan:1; +}; +struct l2_decap_conf l2_decap_conf; + +/* MPLSoGRE encap parameters. */ +struct mplsogre_encap_conf { + uint32_t select_ipv4:1; + uint32_t select_vlan:1; + uint8_t label[3]; + rte_be32_t ipv4_src; + rte_be32_t ipv4_dst; + uint8_t ipv6_src[16]; + uint8_t ipv6_dst[16]; + rte_be16_t vlan_tci; + uint8_t eth_src[ETHER_ADDR_LEN]; + uint8_t eth_dst[ETHER_ADDR_LEN]; +}; +struct mplsogre_encap_conf mplsogre_encap_conf; + +/* MPLSoGRE decap parameters. */ +struct mplsogre_decap_conf { + uint32_t select_ipv4:1; + uint32_t select_vlan:1; +}; +struct mplsogre_decap_conf mplsogre_decap_conf; + +/* MPLSoUDP encap parameters. */ +struct mplsoudp_encap_conf { + uint32_t select_ipv4:1; + uint32_t select_vlan:1; + uint8_t label[3]; + rte_be16_t udp_src; + rte_be16_t udp_dst; + rte_be32_t ipv4_src; + rte_be32_t ipv4_dst; + uint8_t ipv6_src[16]; + uint8_t ipv6_dst[16]; + rte_be16_t vlan_tci; + uint8_t eth_src[ETHER_ADDR_LEN]; + uint8_t eth_dst[ETHER_ADDR_LEN]; +}; +struct mplsoudp_encap_conf mplsoudp_encap_conf; + +/* MPLSoUDP decap parameters. */ +struct mplsoudp_decap_conf { + uint32_t select_ipv4:1; + uint32_t select_vlan:1; +}; +struct mplsoudp_decap_conf mplsoudp_decap_conf; + static inline unsigned int lcore_num(void) { @@ -710,7 +781,7 @@ void stop_port(portid_t pid); void close_port(portid_t pid); void reset_port(portid_t pid); void attach_port(char *identifier); -void detach_port(portid_t port_id); +void detach_port_device(portid_t port_id); int all_ports_stopped(void); int port_is_stopped(portid_t port_id); int port_is_started(portid_t port_id); @@ -764,6 +835,25 @@ int check_nb_rxq(queueid_t rxq); queueid_t get_allowed_max_nb_txq(portid_t *pid); int check_nb_txq(queueid_t txq); +uint16_t dump_rx_pkts(uint16_t port_id, uint16_t queue, struct rte_mbuf *pkts[], + uint16_t nb_pkts, __rte_unused uint16_t max_pkts, + __rte_unused void *user_param); + +uint16_t dump_tx_pkts(uint16_t port_id, uint16_t queue, struct rte_mbuf *pkts[], + uint16_t nb_pkts, __rte_unused void *user_param); + +void add_rx_dump_callbacks(portid_t portid); +void remove_rx_dump_callbacks(portid_t portid); +void add_tx_dump_callbacks(portid_t portid); +void remove_tx_dump_callbacks(portid_t portid); +void configure_rxtx_dump_callbacks(uint16_t verbose); + +uint16_t tx_pkt_set_md(uint16_t port_id, __rte_unused uint16_t queue, + struct rte_mbuf *pkts[], uint16_t nb_pkts, + __rte_unused void *user_param); +void add_tx_md_callback(portid_t portid); +void remove_tx_md_callback(portid_t portid); + /* * Work-around of a compilation error with ICC on invocations of the * rte_be_to_cpu_16() function.