app/test: rework command registration
[dpdk.git] / app / test / test_pmd_perf.c
index bad9503..e055aa0 100644 (file)
@@ -47,7 +47,6 @@
 #define NB_ETHPORTS_USED                (1)
 #define NB_SOCKETS                      (2)
 #define MEMPOOL_CACHE_SIZE 250
-#define MBUF_SIZE (2048 + sizeof(struct rte_mbuf) + RTE_PKTMBUF_HEADROOM)
 #define MAX_PKT_BURST                   (32)
 #define RTE_TEST_RX_DESC_DEFAULT        (128)
 #define RTE_TEST_TX_DESC_DEFAULT        (512)
@@ -193,7 +192,7 @@ check_all_ports_link_status(uint8_t port_num, uint32_t port_mask)
                                continue;
                        }
                        /* clear all_ports_up flag if any link down */
-                       if (link.link_status == 0) {
+                       if (link.link_status == ETH_LINK_DOWN) {
                                all_ports_up = 0;
                                break;
                        }
@@ -235,8 +234,7 @@ init_traffic(struct rte_mempool *mp,
 
        initialize_eth_header(&pkt_eth_hdr,
                (struct ether_addr *)src_mac,
-               (struct ether_addr *)dst_mac, 1, 0, 0);
-       pkt_eth_hdr.ether_type = rte_cpu_to_be_16(ETHER_TYPE_IPv4);
+               (struct ether_addr *)dst_mac, ETHER_TYPE_IPv4, 0, 0);
 
        pktlen = initialize_ipv4_header(&pkt_ipv4_hdr,
                                        IPV4_ADDR(10, 0, 0, 1),
@@ -290,12 +288,9 @@ init_mbufpool(unsigned nb_mbuf)
                if (mbufpool[socketid] == NULL) {
                        snprintf(s, sizeof(s), "mbuf_pool_%d", socketid);
                        mbufpool[socketid] =
-                               rte_mempool_create(s, nb_mbuf, MBUF_SIZE,
-                                       MEMPOOL_CACHE_SIZE,
-                                       sizeof(struct rte_pktmbuf_pool_private),
-                                       rte_pktmbuf_pool_init, NULL,
-                                       rte_pktmbuf_init, NULL,
-                                       socketid, 0);
+                               rte_pktmbuf_pool_create(s, nb_mbuf,
+                                       MEMPOOL_CACHE_SIZE, 0,
+                                       RTE_MBUF_DEFAULT_BUF_SIZE, socketid);
                        if (mbufpool[socketid] == NULL)
                                rte_exit(EXIT_FAILURE,
                                        "Cannot init mbuf pool on socket %d\n",
@@ -348,11 +343,8 @@ stats_display(uint8_t port_id)
        printf("  RX-packets: %-10"PRIu64" RX-missed: %-10"PRIu64" RX-bytes:  "
               "%-"PRIu64"\n",
               stats.ipackets, stats.imissed, stats.ibytes);
-       printf("  RX-badcrc:  %-10"PRIu64" RX-badlen: %-10"PRIu64" RX-errors: "
-              "%-"PRIu64"\n",
-              stats.ibadcrc, stats.ibadlen, stats.ierrors);
-       printf("  RX-nombuf:  %-10"PRIu64"\n",
-              stats.rx_nombuf);
+       printf("  RX-errors: %-10"PRIu64" RX-nombuf:  %-10"PRIu64"\n",
+              stats.ierrors, stats.rx_nombuf);
        printf("  TX-packets: %-10"PRIu64" TX-errors: %-10"PRIu64" TX-bytes:  "
               "%-"PRIu64"\n",
               stats.opackets, stats.oerrors, stats.obytes);
@@ -634,7 +626,10 @@ timeout:
 
        rte_free(pkts_burst);
 
-       return diff_tsc / total;
+       if (total > 0)
+               return diff_tsc / total;
+       else
+               return -1;
 }
 
 static int
@@ -681,8 +676,10 @@ exec_burst(uint32_t flags, int lcore)
 
        /* wait for polling finished */
        diff_tsc = rte_eal_wait_lcore(lcore);
-       if (diff_tsc < 0)
+       if (diff_tsc < 0) {
+               printf("exec_burst: Failed to measure cycles per packet\n");
                return -1;
+       }
 
        printf("Result: %d cycles per packet\n", diff_tsc);
 
@@ -712,9 +709,6 @@ test_pmd_perf(void)
                return -1;
        }
 
-       if (nb_ports > RTE_MAX_ETHPORTS)
-               nb_ports = RTE_MAX_ETHPORTS;
-
        nb_lcores = rte_lcore_count();
 
        memset(lcore_conf, 0, sizeof(lcore_conf));
@@ -819,7 +813,8 @@ test_pmd_perf(void)
                        return -1;
        } else if (sc_flag == SC_BURST_POLL_FIRST ||
                   sc_flag == SC_BURST_XMIT_FIRST)
-               exec_burst(sc_flag, slave_id);
+               if (exec_burst(sc_flag, slave_id) < 0)
+                       return -1;
 
        /* port tear down */
        for (portid = 0; portid < nb_ports; portid++) {
@@ -846,10 +841,10 @@ test_set_rxtx_conf(cmdline_fixed_string_t mode)
                port_conf.rxmode.enable_scatter = 0;
                return 0;
        } else if (!strcmp(mode, "scalar")) {
-               /* bulk alloc rx, simple tx */
-               tx_conf.txq_flags = 0xf01;
-               tx_conf.tx_rs_thresh = 128;
-               tx_conf.tx_free_thresh = 128;
+               /* bulk alloc rx, full-featured tx */
+               tx_conf.txq_flags = 0;
+               tx_conf.tx_rs_thresh = 32;
+               tx_conf.tx_free_thresh = 32;
                port_conf.rxmode.hw_ip_checksum = 1;
                port_conf.rxmode.enable_scatter = 0;
                return 0;
@@ -915,8 +910,4 @@ test_set_rxtx_sc(cmdline_fixed_string_t type)
        return -1;
 }
 
-static struct test_command pmd_perf_cmd = {
-       .command = "pmd_perf_autotest",
-       .callback = test_pmd_perf,
-};
-REGISTER_TEST_COMMAND(pmd_perf_cmd);
+REGISTER_TEST_COMMAND(pmd_perf_autotest, test_pmd_perf);