raw/ioat: fix initial ring size check
authorCiara Power <ciara.power@intel.com>
Thu, 10 Oct 2019 12:36:03 +0000 (13:36 +0100)
committerDavid Marchand <david.marchand@redhat.com>
Sun, 27 Oct 2019 13:19:19 +0000 (14:19 +0100)
When running the ioat_rawdev_autotest, the ring size was initially required
to be 0. This prevented the test being run multiple times, as the ring size
is modified to a non-zero value when running the first test.

A global variable is now used to track the expected ring size, and is used
in the initial value check.  This enables the test to be run more than
once.

Fixes: 849470d522ed ("raw/ioat: add configure, start and stop functions")
Cc: stable@dpdk.org
Reported-by: Yinan Wang <yinan.wang@intel.com>
Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
drivers/raw/ioat/ioat_rawdev_test.c

index 6aad794..e99f97e 100644 (file)
@@ -11,6 +11,7 @@
 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 int
 test_enqueue_copies(int dev_id)
@@ -148,9 +149,9 @@ ioat_rawdev_test(uint16_t dev_id)
        unsigned int i;
 
        rte_rawdev_info_get(dev_id, &info);
-       if (p.ring_size != 0) {
-               printf("Error, initial ring size is non-zero (%d)\n",
-                               (int)p.ring_size);
+       if (p.ring_size != expected_ring_size) {
+               printf("Error, initial ring size is not as expected (Actual: %d, Expected: %d)\n",
+                               (int)p.ring_size, expected_ring_size);
                return -1;
        }
 
@@ -165,6 +166,7 @@ ioat_rawdev_test(uint16_t dev_id)
                                IOAT_TEST_RINGSIZE, (int)p.ring_size);
                return -1;
        }
+       expected_ring_size = p.ring_size;
 
        if (rte_rawdev_start(dev_id) != 0) {
                printf("Error with rte_rawdev_start()\n");