/* to test capacity, we enqueue elements and check capacity is reduced
* by one each time - rebaselining the expected value after each burst
* as the capacity is only for a burst. We enqueue multiple bursts to
- * fill up half the ring, before emptying it again. We do this twice to
- * ensure that we get to test scenarios where we get ring wrap-around
+ * fill up half the ring, before emptying it again. We do this multiple
+ * times to ensure that we get to test scenarios where we get ring
+ * wrap-around and wrap-around of the ids returned (at UINT16_MAX).
*/
- for (iter = 0; iter < 2; iter++) {
+ for (iter = 0; iter < 2 * (((int)UINT16_MAX + 1) / ring_space); iter++) {
for (i = 0; i < (ring_space / (2 * CAP_TEST_BURST_SIZE)) + 1; i++) {
cap = rte_dma_burst_capacity(dev_id, vchan);
.nb_desc = TEST_RINGSIZE,
};
const int vchan = 0;
+ int ret;
- rte_dma_info_get(dev_id, &info);
+ ret = rte_dma_info_get(dev_id, &info);
+ if (ret != 0)
+ ERR_RETURN("Error with rte_dma_info_get()\n");
printf("\n### Test dmadev instance %u [%s]\n",
dev_id, info.dev_name);
if (rte_dma_vchan_setup(dev_id, vchan, &qconf) < 0)
ERR_RETURN("Error with queue configuration\n");
- rte_dma_info_get(dev_id, &info);
- if (info.nb_vchans != 1)
+ ret = rte_dma_info_get(dev_id, &info);
+ if (ret != 0 || info.nb_vchans != 1)
ERR_RETURN("Error, no configured queues reported on device id %u\n", dev_id);
if (rte_dma_start(dev_id) != 0)