app/test: fix check for virtual ring device
authorOlivier Matz <olivier.matz@6wind.com>
Tue, 15 Mar 2016 12:25:29 +0000 (13:25 +0100)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Thu, 24 Mar 2016 20:12:45 +0000 (21:12 +0100)
This test expects that a vdev is instanciated on the command
line. If it's not the case, just skip this part.

Fixes: 4ea3801b3222 ("app/test: fix ring unit test")

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
app/test/test_pmd_ring.c

index 5568759..34fea09 100644 (file)
@@ -425,7 +425,7 @@ static int
 test_pmd_ring(void)
 {
        struct rte_ring *rxtx[NUM_RINGS];
-       int cmdl_port0 = 0;
+       int port, cmdl_port0 = -1;
        uint8_t nb_ports;
 
        nb_ports = rte_eth_dev_count();
@@ -501,8 +501,18 @@ test_pmd_ring(void)
        if (test_pmd_ring_pair_create_attach(rxtx_portd, rxtx_porte) < 0)
                return -1;
 
-       if (nb_ports > 0) {
-               /* test port 0 created with the --vdev=eth_ring0 command line option */
+       /* find a port created with the --vdev=eth_ring0 command line option */
+       for (port = 0; port < nb_ports; port++) {
+               struct rte_eth_dev_info dev_info;
+
+               rte_eth_dev_info_get(port, &dev_info);
+               if (!strcmp(dev_info.driver_name, "Rings PMD")) {
+                       printf("found a command line ring port=%d\n", port);
+                       cmdl_port0 = port;
+                       break;
+               }
+       }
+       if (cmdl_port0 != -1) {
                if (test_ethdev_configure_port(cmdl_port0) < 0)
                        return -1;
                if (test_send_basic_packets_port(cmdl_port0) < 0)