net/axgbe: support IEEE 1588 PTP
[dpdk.git] / app / test-pmd / testpmd.c
index 92e00cf..fb286b8 100644 (file)
@@ -179,6 +179,7 @@ struct fwd_engine * fwd_engines[] = {
        &csum_fwd_engine,
        &icmp_echo_engine,
        &noisy_vnf_engine,
+       &five_tuple_swap_fwd_engine,
 #ifdef RTE_LIBRTE_IEEE1588
        &ieee1588_fwd_engine,
 #endif
@@ -220,6 +221,12 @@ enum tx_pkt_split tx_pkt_split = TX_PKT_SPLIT_OFF;
 uint8_t txonly_multi_flow;
 /**< Whether multiple flows are generated in TXONLY mode. */
 
+uint32_t tx_pkt_times_inter;
+/**< Timings for send scheduling in TXONLY mode, time between bursts. */
+
+uint32_t tx_pkt_times_intra;
+/**< Timings for send scheduling in TXONLY mode, time between packets. */
+
 uint16_t nb_pkt_per_burst = DEF_PKT_BURST; /**< Number of packets per burst. */
 uint16_t mb_mempool_cache = DEF_MBUF_CACHE; /**< Size of mbuf mempool cache. */
 
@@ -468,6 +475,16 @@ uint16_t nb_rx_queue_stats_mappings = 0;
  */
 uint8_t xstats_hide_zero;
 
+/*
+ * Measure of CPU cycles disabled by default
+ */
+uint8_t record_core_cycles;
+
+/*
+ * Display of RX and TX bursts disabled by default
+ */
+uint8_t record_burst_stats;
+
 unsigned int num_sockets = 0;
 unsigned int socket_ids[RTE_MAX_NUMA_NODES];
 
@@ -1672,7 +1689,6 @@ init_fwd_streams(void)
        return 0;
 }
 
-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS
 static void
 pkt_burst_stats_display(const char *rx_tx, struct pkt_burst_stats *pbs)
 {
@@ -1739,7 +1755,6 @@ pkt_burst_stats_display(const char *rx_tx, struct pkt_burst_stats *pbs)
                sburstp += burst_percent[i];
        }
 }
-#endif /* RTE_TEST_PMD_RECORD_BURST_STATS */
 
 static void
 fwd_stream_stats_display(streamid_t stream_id)
@@ -1770,10 +1785,10 @@ fwd_stream_stats_display(streamid_t stream_id)
                printf("\n");
        }
 
-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS
-       pkt_burst_stats_display("RX", &fs->rx_burst_stats);
-       pkt_burst_stats_display("TX", &fs->tx_burst_stats);
-#endif
+       if (record_burst_stats) {
+               pkt_burst_stats_display("RX", &fs->rx_burst_stats);
+               pkt_burst_stats_display("TX", &fs->tx_burst_stats);
+       }
 }
 
 void
@@ -1793,9 +1808,7 @@ fwd_stats_display(void)
        uint64_t total_tx_dropped = 0;
        uint64_t total_rx_nombuf = 0;
        struct rte_eth_stats stats;
-#ifdef RTE_TEST_PMD_RECORD_CORE_CYCLES
        uint64_t fwd_cycles = 0;
-#endif
        uint64_t total_recv = 0;
        uint64_t total_xmit = 0;
        struct rte_port *port;
@@ -1823,9 +1836,8 @@ fwd_stats_display(void)
                ports_stats[fs->rx_port].rx_bad_outer_l4_csum +=
                                fs->rx_bad_outer_l4_csum;
 
-#ifdef RTE_TEST_PMD_RECORD_CORE_CYCLES
-               fwd_cycles += fs->core_cycles;
-#endif
+               if (record_core_cycles)
+                       fwd_cycles += fs->core_cycles;
        }
        for (i = 0; i < cur_fwd_config.nb_fwd_ports; i++) {
                uint8_t j;
@@ -1906,14 +1918,14 @@ fwd_stats_display(void)
                               stats.opackets + ports_stats[pt_id].tx_dropped);
                }
 
-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS
-               if (ports_stats[pt_id].rx_stream)
-                       pkt_burst_stats_display("RX",
-                               &ports_stats[pt_id].rx_stream->rx_burst_stats);
-               if (ports_stats[pt_id].tx_stream)
-                       pkt_burst_stats_display("TX",
-                               &ports_stats[pt_id].tx_stream->tx_burst_stats);
-#endif
+               if (record_burst_stats) {
+                       if (ports_stats[pt_id].rx_stream)
+                               pkt_burst_stats_display("RX",
+                                       &ports_stats[pt_id].rx_stream->rx_burst_stats);
+                       if (ports_stats[pt_id].tx_stream)
+                               pkt_burst_stats_display("TX",
+                                       &ports_stats[pt_id].tx_stream->tx_burst_stats);
+               }
 
                if (port->rx_queue_stats_mapping_enabled) {
                        printf("\n");
@@ -1954,24 +1966,24 @@ fwd_stats_display(void)
        printf("  %s++++++++++++++++++++++++++++++++++++++++++++++"
               "%s\n",
               acc_stats_border, acc_stats_border);
-#ifdef RTE_TEST_PMD_RECORD_CORE_CYCLES
+       if (record_core_cycles) {
 #define CYC_PER_MHZ 1E6
-       if (total_recv > 0 || total_xmit > 0) {
-               uint64_t total_pkts = 0;
-               if (strcmp(cur_fwd_eng->fwd_mode_name, "txonly") == 0 ||
-                   strcmp(cur_fwd_eng->fwd_mode_name, "flowgen") == 0)
-                       total_pkts = total_xmit;
-               else
-                       total_pkts = total_recv;
+               if (total_recv > 0 || total_xmit > 0) {
+                       uint64_t total_pkts = 0;
+                       if (strcmp(cur_fwd_eng->fwd_mode_name, "txonly") == 0 ||
+                           strcmp(cur_fwd_eng->fwd_mode_name, "flowgen") == 0)
+                               total_pkts = total_xmit;
+                       else
+                               total_pkts = total_recv;
 
-               printf("\n  CPU cycles/packet=%.2F (total cycles="
-                      "%"PRIu64" / total %s packets=%"PRIu64") at %"PRIu64
-                      " MHz Clock\n",
-                      (double) fwd_cycles / total_pkts,
-                      fwd_cycles, cur_fwd_eng->fwd_mode_name, total_pkts,
-                      (uint64_t)(rte_get_tsc_hz() / CYC_PER_MHZ));
+                       printf("\n  CPU cycles/packet=%.2F (total cycles="
+                              "%"PRIu64" / total %s packets=%"PRIu64") at %"PRIu64
+                              " MHz Clock\n",
+                              (double) fwd_cycles / total_pkts,
+                              fwd_cycles, cur_fwd_eng->fwd_mode_name, total_pkts,
+                              (uint64_t)(rte_get_tsc_hz() / CYC_PER_MHZ));
+               }
        }
-#endif
 }
 
 void
@@ -1995,13 +2007,9 @@ fwd_stats_reset(void)
                fs->rx_bad_l4_csum = 0;
                fs->rx_bad_outer_l4_csum = 0;
 
-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS
                memset(&fs->rx_burst_stats, 0, sizeof(fs->rx_burst_stats));
                memset(&fs->tx_burst_stats, 0, sizeof(fs->tx_burst_stats));
-#endif
-#ifdef RTE_TEST_PMD_RECORD_CORE_CYCLES
                fs->core_cycles = 0;
-#endif
        }
 }