ethdev: fix switching domain allocation
[dpdk.git] / app / test-pmd / testpmd.c
index 446da36..38dbb12 100644 (file)
@@ -502,6 +502,9 @@ static int all_ports_started(void);
 struct gso_status gso_ports[RTE_MAX_ETHPORTS];
 uint16_t gso_max_segment_size = RTE_ETHER_MAX_LEN - RTE_ETHER_CRC_LEN;
 
+/* Holds the registered mbuf dynamic flags names. */
+char dynf_names[64][RTE_MBUF_DYN_NAMESIZE];
+
 /*
  * Helper function to check if socket is already discovered.
  * If yes, return positive value. If not, return zero.
@@ -979,7 +982,7 @@ check_socket_id(const unsigned int socket_id)
 queueid_t
 get_allowed_max_nb_rxq(portid_t *pid)
 {
-       queueid_t allowed_max_rxq = MAX_QUEUE_ID;
+       queueid_t allowed_max_rxq = RTE_MAX_QUEUES_PER_PORT;
        bool max_rxq_valid = false;
        portid_t pi;
        struct rte_eth_dev_info dev_info;
@@ -1029,7 +1032,7 @@ check_nb_rxq(queueid_t rxq)
 queueid_t
 get_allowed_max_nb_txq(portid_t *pid)
 {
-       queueid_t allowed_max_txq = MAX_QUEUE_ID;
+       queueid_t allowed_max_txq = RTE_MAX_QUEUES_PER_PORT;
        bool max_txq_valid = false;
        portid_t pi;
        struct rte_eth_dev_info dev_info;
@@ -1079,7 +1082,7 @@ check_nb_txq(queueid_t txq)
 queueid_t
 get_allowed_max_nb_hairpinq(portid_t *pid)
 {
-       queueid_t allowed_max_hairpinq = MAX_QUEUE_ID;
+       queueid_t allowed_max_hairpinq = RTE_MAX_QUEUES_PER_PORT;
        portid_t pi;
        struct rte_eth_hairpin_cap cap;
 
@@ -2557,6 +2560,9 @@ detach_port_device(portid_t port_id)
 
        printf("Removing a device...\n");
 
+       if (port_id_is_invalid(port_id, ENABLED_WARN))
+               return;
+
        dev = rte_eth_devices[port_id].device;
        if (dev == NULL) {
                printf("Device already removed\n");
@@ -2616,6 +2622,7 @@ detach_device(char *identifier)
                if (ports[port_id].port_status != RTE_PORT_CLOSED) {
                        if (ports[port_id].port_status != RTE_PORT_STOPPED) {
                                printf("Port %u not stopped\n", port_id);
+                               rte_eth_iterator_cleanup(&iterator);
                                return;
                        }
 
@@ -3566,5 +3573,10 @@ main(int argc, char** argv)
                        return 1;
        }
 
-       return 0;
+       ret = rte_eal_cleanup();
+       if (ret != 0)
+               rte_exit(EXIT_FAILURE,
+                        "EAL cleanup failed: %s\n", strerror(-ret));
+
+       return EXIT_SUCCESS;
 }