app/testpmd: check status of getting ethdev info
[dpdk.git] / app / test-pmd / util.c
index 18dfdca..009d226 100644 (file)
@@ -194,10 +194,15 @@ add_tx_md_callback(portid_t portid)
 {
        struct rte_eth_dev_info dev_info;
        uint16_t queue;
+       int ret;
 
        if (port_id_is_invalid(portid, ENABLED_WARN))
                return;
-       rte_eth_dev_info_get(portid, &dev_info);
+
+       ret = eth_dev_info_get_print_err(portid, &dev_info);
+       if (ret != 0)
+               return;
+
        for (queue = 0; queue < dev_info.nb_tx_queues; queue++)
                if (!ports[portid].tx_set_md_cb[queue])
                        ports[portid].tx_set_md_cb[queue] =
@@ -210,10 +215,15 @@ remove_tx_md_callback(portid_t portid)
 {
        struct rte_eth_dev_info dev_info;
        uint16_t queue;
+       int ret;
 
        if (port_id_is_invalid(portid, ENABLED_WARN))
                return;
-       rte_eth_dev_info_get(portid, &dev_info);
+
+       ret = eth_dev_info_get_print_err(portid, &dev_info);
+       if (ret != 0)
+               return;
+
        for (queue = 0; queue < dev_info.nb_tx_queues; queue++)
                if (ports[portid].tx_set_md_cb[queue]) {
                        rte_eth_remove_tx_callback(portid, queue,
@@ -221,3 +231,17 @@ remove_tx_md_callback(portid_t portid)
                        ports[portid].tx_set_md_cb[queue] = NULL;
                }
 }
+
+int
+eth_dev_info_get_print_err(uint16_t port_id,
+                                       struct rte_eth_dev_info *dev_info)
+{
+       int ret;
+
+       ret = rte_eth_dev_info_get(port_id, dev_info);
+       if (ret != 0)
+               printf("Error during getting device (port %u) info: %s\n",
+                               port_id, strerror(-ret));
+
+       return ret;
+}