net/i40e: use write combining store for tail updates
[dpdk.git] / examples / ntb / ntb_fwd.c
index edce77e..139da54 100644 (file)
@@ -19,6 +19,7 @@
 #include <rte_lcore.h>
 #include <rte_cycles.h>
 #include <rte_pmd_ntb.h>
+#include <rte_mbuf_pool_ops.h>
 
 /* Per-port statistics struct */
 struct ntb_port_statistics {
@@ -108,9 +109,9 @@ struct cmd_help_result {
 };
 
 static void
-cmd_help_parsed(__attribute__((unused)) void *parsed_result,
+cmd_help_parsed(__rte_unused void *parsed_result,
                struct cmdline *cl,
-               __attribute__((unused)) void *data)
+               __rte_unused void *data)
 {
        cmdline_printf(
                cl,
@@ -153,9 +154,9 @@ struct cmd_quit_result {
 };
 
 static void
-cmd_quit_parsed(__attribute__((unused)) void *parsed_result,
+cmd_quit_parsed(__rte_unused void *parsed_result,
                struct cmdline *cl,
-               __attribute__((unused)) void *data)
+               __rte_unused void *data)
 {
        struct ntb_fwd_lcore_conf *conf;
        uint32_t lcore_id;
@@ -208,8 +209,8 @@ struct cmd_sendfile_result {
 
 static void
 cmd_sendfile_parsed(void *parsed_result,
-                   __attribute__((unused)) struct cmdline *cl,
-                   __attribute__((unused)) void *data)
+                   __rte_unused struct cmdline *cl,
+                   __rte_unused void *data)
 {
        struct cmd_sendfile_result *res = parsed_result;
        struct rte_rawdev_buf *pkts_send[NTB_MAX_PKT_BURST];
@@ -728,6 +729,7 @@ start_pkt_fwd(void)
        struct rte_eth_link eth_link;
        uint32_t lcore_id;
        int ret, i;
+       char link_status_text[RTE_ETH_LINK_MAX_STR_LEN];
 
        ret = ntb_fwd_config_setup();
        if (ret < 0) {
@@ -746,11 +748,11 @@ start_pkt_fwd(void)
                                return;
                        }
                        if (eth_link.link_status) {
-                               printf("Eth%u Link Up. Speed %u Mbps - %s\n",
-                                       eth_port_id, eth_link.link_speed,
-                                       (eth_link.link_duplex ==
-                                        ETH_LINK_FULL_DUPLEX) ?
-                                       ("full-duplex") : ("half-duplex"));
+                               rte_eth_link_to_str(link_status_text,
+                                       sizeof(link_status_text),
+                                       &eth_link);
+                               printf("Eth%u %s\n", eth_port_id,
+                                      link_status_text);
                                break;
                        }
                }
@@ -792,9 +794,9 @@ struct cmd_start_result {
 };
 
 static void
-cmd_start_parsed(__attribute__((unused)) void *parsed_result,
-                           __attribute__((unused)) struct cmdline *cl,
-                           __attribute__((unused)) void *data)
+cmd_start_parsed(__rte_unused void *parsed_result,
+                           __rte_unused struct cmdline *cl,
+                           __rte_unused void *data)
 {
        start_pkt_fwd();
 }
@@ -818,9 +820,9 @@ struct cmd_stop_result {
 };
 
 static void
-cmd_stop_parsed(__attribute__((unused)) void *parsed_result,
-               __attribute__((unused)) struct cmdline *cl,
-               __attribute__((unused)) void *data)
+cmd_stop_parsed(__rte_unused void *parsed_result,
+               __rte_unused struct cmdline *cl,
+               __rte_unused void *data)
 {
        struct ntb_fwd_lcore_conf *conf;
        uint32_t lcore_id;
@@ -982,8 +984,8 @@ struct cmd_stats_result {
 
 static void
 cmd_stats_parsed(void *parsed_result,
-                __attribute__((unused)) struct cmdline *cl,
-                __attribute__((unused)) void *data)
+                __rte_unused struct cmdline *cl,
+                __rte_unused void *data)
 {
        struct cmd_stats_result *res = parsed_result;
        if (!strcmp(res->show, "clear"))
@@ -1020,9 +1022,9 @@ struct cmd_set_fwd_mode_result {
 };
 
 static void
-cmd_set_fwd_mode_parsed(__attribute__((unused)) void *parsed_result,
-                       __attribute__((unused)) struct cmdline *cl,
-                       __attribute__((unused)) void *data)
+cmd_set_fwd_mode_parsed(__rte_unused void *parsed_result,
+                       __rte_unused struct cmdline *cl,
+                       __rte_unused void *data)
 {
        struct cmd_set_fwd_mode_result *res = parsed_result;
        int i;
@@ -1256,6 +1258,12 @@ ntb_mbuf_pool_create(uint16_t mbuf_seg_size, uint32_t nb_mbuf,
        if (mp == NULL)
                return NULL;
 
+       if (rte_mempool_set_ops_byname(mp, rte_mbuf_best_mempool_ops(), NULL)) {
+               printf("error setting mempool handler\n");
+               goto fail;
+       }
+
+       memset(&mbp_priv, 0, sizeof(mbp_priv));
        mbp_priv.mbuf_data_room_size = mbuf_seg_size;
        mbp_priv.mbuf_priv_size = 0;
        rte_pktmbuf_pool_init(mp, &mbp_priv);
@@ -1312,7 +1320,7 @@ ntb_mbuf_pool_create(uint16_t mbuf_seg_size, uint32_t nb_mbuf,
                                        mz->len - ntb_info.ntb_hdr_size,
                                        ntb_mempool_mz_free,
                                        (void *)(uintptr_t)mz);
-               if (ret < 0) {
+               if (ret <= 0) {
                        rte_memzone_free(mz);
                        rte_mempool_free(mp);
                        return NULL;
@@ -1382,7 +1390,7 @@ main(int argc, char **argv)
        rte_rawdev_set_attr(dev_id, NTB_QUEUE_NUM_NAME, num_queues);
        printf("Set queue number as %u.\n", num_queues);
        ntb_rawdev_info.dev_private = (rte_rawdev_obj_t)(&ntb_info);
-       rte_rawdev_info_get(dev_id, &ntb_rawdev_info);
+       rte_rawdev_info_get(dev_id, &ntb_rawdev_info, sizeof(ntb_info));
 
        nb_mbuf = nb_desc * num_queues * 2 * 2 + rte_lcore_count() *
                  MEMPOOL_CACHE_SIZE;
@@ -1394,7 +1402,7 @@ main(int argc, char **argv)
        ntb_conf.num_queues = num_queues;
        ntb_conf.queue_size = nb_desc;
        ntb_rawdev_conf.dev_private = (rte_rawdev_obj_t)(&ntb_conf);
-       ret = rte_rawdev_configure(dev_id, &ntb_rawdev_conf);
+       ret = rte_rawdev_configure(dev_id, &ntb_rawdev_conf, sizeof(ntb_conf));
        if (ret)
                rte_exit(EXIT_FAILURE, "Can't config ntb dev: err=%d, "
                        "port=%u\n", ret, dev_id);
@@ -1404,7 +1412,8 @@ main(int argc, char **argv)
        ntb_q_conf.rx_mp = mbuf_pool;
        for (i = 0; i < num_queues; i++) {
                /* Setup rawdev queue */
-               ret = rte_rawdev_queue_setup(dev_id, i, &ntb_q_conf);
+               ret = rte_rawdev_queue_setup(dev_id, i, &ntb_q_conf,
+                               sizeof(ntb_q_conf));
                if (ret < 0)
                        rte_exit(EXIT_FAILURE,
                                "Failed to setup ntb queue %u.\n", i);