app/testpmd: register a specific log type
[dpdk.git] / app / test-pmd / testpmd.h
index e2d9e34..8c1922d 100644 (file)
@@ -35,6 +35,7 @@
 #define _TESTPMD_H_
 
 #include <rte_pci.h>
+#include <rte_bus_pci.h>
 #include <rte_gro.h>
 #include <rte_gso.h>
 
@@ -85,6 +86,12 @@ typedef uint16_t streamid_t;
 
 #define MAX_QUEUE_ID ((1 << (sizeof(queueid_t) * 8)) - 1)
 
+#if defined RTE_LIBRTE_PMD_SOFTNIC && defined RTE_LIBRTE_SCHED
+#define TM_MODE                        1
+#else
+#define TM_MODE                        0
+#endif
+
 enum {
        PORT_TOPOLOGY_PAIRED,
        PORT_TOPOLOGY_CHAINED,
@@ -164,6 +171,38 @@ struct port_flow {
        uint8_t data[]; /**< Storage for pattern/actions. */
 };
 
+#ifdef TM_MODE
+/**
+ * Soft port tm related parameters
+ */
+struct softnic_port_tm {
+       uint32_t default_hierarchy_enable; /**< def hierarchy enable flag */
+       uint32_t hierarchy_config;  /**< set to 1 if hierarchy configured */
+
+       uint32_t n_subports_per_port;  /**< Num of subport nodes per port */
+       uint32_t n_pipes_per_subport;  /**< Num of pipe nodes per subport */
+
+       uint64_t tm_pktfield0_slabpos;  /**< Pkt field position for subport */
+       uint64_t tm_pktfield0_slabmask; /**< Pkt field mask for the subport */
+       uint64_t tm_pktfield0_slabshr;
+       uint64_t tm_pktfield1_slabpos; /**< Pkt field position for the pipe */
+       uint64_t tm_pktfield1_slabmask; /**< Pkt field mask for the pipe */
+       uint64_t tm_pktfield1_slabshr;
+       uint64_t tm_pktfield2_slabpos; /**< Pkt field position table index */
+       uint64_t tm_pktfield2_slabmask; /**< Pkt field mask for tc table idx */
+       uint64_t tm_pktfield2_slabshr;
+       uint64_t tm_tc_table[64];  /**< TC translation table */
+};
+
+/**
+ * The data structure associate with softnic port
+ */
+struct softnic_port {
+       unsigned int tm_flag;   /**< set to 1 if tm feature is enabled */
+       struct softnic_port_tm tm;      /**< softnic port tm parameters */
+};
+#endif
+
 /**
  * The data structure associated with each port.
  */
@@ -197,6 +236,10 @@ 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. */
+#ifdef TM_MODE
+       unsigned int                    softnic_enable; /**< softnic flag */
+       struct softnic_port     softport;  /**< softnic port params */
+#endif
 };
 
 /**
@@ -257,6 +300,10 @@ extern struct fwd_engine rx_only_engine;
 extern struct fwd_engine tx_only_engine;
 extern struct fwd_engine csum_fwd_engine;
 extern struct fwd_engine icmp_echo_engine;
+#ifdef TM_MODE
+extern struct fwd_engine softnic_tm_engine;
+extern struct fwd_engine softnic_tm_bypass_engine;
+#endif
 #ifdef RTE_LIBRTE_IEEE1588
 extern struct fwd_engine ieee1588_fwd_engine;
 #endif
@@ -302,8 +349,11 @@ extern struct queue_stats_mappings *rx_queue_stats_mappings;
 extern uint16_t nb_tx_queue_stats_mappings;
 extern uint16_t nb_rx_queue_stats_mappings;
 
+extern uint8_t xstats_hide_zero; /**< Hide zero values for xstats display */
+
 /* globals used for configuration */
 extern uint16_t verbose_level; /**< Drives messages being displayed, if any. */
+extern int testpmd_logtype; /**< Log type for testpmd logs */
 extern uint8_t  interactive;
 extern uint8_t  auto_start;
 extern uint8_t  tx_first;
@@ -604,6 +654,8 @@ void tx_vlan_pvid_set(portid_t port_id, uint16_t vlan_id, int on);
 
 void set_qmap(portid_t port_id, uint8_t is_rx, uint16_t queue_id, uint8_t map_value);
 
+void set_xstats_hide_zero(uint8_t on_off);
+
 void set_verbose_level(uint16_t vb_level);
 void set_tx_pkt_segments(unsigned *seg_lengths, unsigned nb_segs);
 void show_tx_pkt_segments(void);
@@ -629,7 +681,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(uint8_t port_id);
+void detach_port(portid_t port_id);
 int all_ports_stopped(void);
 int port_is_started(portid_t port_id);
 void pmd_test_exit(void);
@@ -652,10 +704,6 @@ void port_rss_hash_conf_show(portid_t port_id, char rss_info[],
                             int show_rss_key);
 void port_rss_hash_key_update(portid_t port_id, char rss_type[],
                              uint8_t *hash_key, uint hash_key_len);
-void get_syn_filter(uint8_t port_id);
-void get_ethertype_filter(uint8_t port_id, uint16_t index);
-void get_2tuple_filter(uint8_t port_id, uint16_t index);
-void get_5tuple_filter(uint8_t port_id, uint16_t index);
 int rx_queue_id_is_invalid(queueid_t rxq_id);
 int tx_queue_id_is_invalid(queueid_t txq_id);
 void setup_gro(const char *onoff, portid_t port_id);
@@ -664,14 +712,16 @@ void show_gro(portid_t port_id);
 void setup_gso(const char *mode, portid_t port_id);
 
 /* Functions to manage the set of filtered Multicast MAC addresses */
-void mcast_addr_add(uint8_t port_id, struct ether_addr *mc_addr);
-void mcast_addr_remove(uint8_t port_id, struct ether_addr *mc_addr);
-void port_dcb_info_display(uint8_t port_id);
+void mcast_addr_add(portid_t port_id, struct ether_addr *mc_addr);
+void mcast_addr_remove(portid_t port_id, struct ether_addr *mc_addr);
+void port_dcb_info_display(portid_t port_id);
 
 uint8_t *open_ddp_package_file(const char *file_path, uint32_t *size);
 int save_ddp_package_file(const char *file_path, uint8_t *buf, uint32_t size);
 int close_ddp_package_file(uint8_t *buf);
 
+void port_queue_region_info_display(portid_t port_id, void *buf);
+
 enum print_warning {
        ENABLED_WARN = 0,
        DISABLED_WARN
@@ -698,4 +748,7 @@ int new_socket_id(unsigned int socket_id);
 #endif
 #endif /* __GCC__ */
 
+#define TESTPMD_LOG(level, fmt, args...) \
+       rte_log(RTE_LOG_ ## level, testpmd_logtype, "testpmd: " fmt, ## args)
+
 #endif /* _TESTPMD_H_ */