raw/ioat: support multiple devices being tested
authorBruce Richardson <bruce.richardson@intel.com>
Thu, 10 Sep 2020 16:47:14 +0000 (17:47 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Tue, 6 Oct 2020 07:26:15 +0000 (09:26 +0200)
The current selftest function uses a single global variable to track state
which implies that only a single instance can have the selftest function
called on it. Change this to an array to allow multiple instances to be
tested.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: Kevin Laatz <kevin.laatz@intel.com>
drivers/raw/ioat/ioat_rawdev_test.c

index c463a82..e5b50ae 100644 (file)
@@ -8,10 +8,13 @@
 #include "rte_rawdev.h"
 #include "rte_ioat_rawdev.h"
 
+#define MAX_SUPPORTED_RAWDEVS 64
+#define TEST_SKIPPED 77
+
 int ioat_rawdev_test(uint16_t dev_id); /* pre-define to keep compiler happy */
 
 static struct rte_mempool *pool;
-static unsigned short expected_ring_size;
+static unsigned short expected_ring_size[MAX_SUPPORTED_RAWDEVS];
 
 static int
 test_enqueue_copies(int dev_id)
@@ -148,10 +151,16 @@ ioat_rawdev_test(uint16_t dev_id)
        unsigned int nb_xstats;
        unsigned int i;
 
+       if (dev_id >= MAX_SUPPORTED_RAWDEVS) {
+               printf("Skipping test. Cannot test rawdevs with id's greater than %d\n",
+                               MAX_SUPPORTED_RAWDEVS);
+               return TEST_SKIPPED;
+       }
+
        rte_rawdev_info_get(dev_id, &info, sizeof(p));
-       if (p.ring_size != expected_ring_size) {
+       if (p.ring_size != expected_ring_size[dev_id]) {
                printf("Error, initial ring size is not as expected (Actual: %d, Expected: %d)\n",
-                               (int)p.ring_size, expected_ring_size);
+                               (int)p.ring_size, expected_ring_size[dev_id]);
                return -1;
        }
 
@@ -166,7 +175,7 @@ ioat_rawdev_test(uint16_t dev_id)
                                IOAT_TEST_RINGSIZE, (int)p.ring_size);
                return -1;
        }
-       expected_ring_size = p.ring_size;
+       expected_ring_size[dev_id] = p.ring_size;
 
        if (rte_rawdev_start(dev_id) != 0) {
                printf("Error with rte_rawdev_start()\n");