From f6e896640a4482c8fd7fc35e11939cd9724bc0ab Mon Sep 17 00:00:00 2001 From: Bruce Richardson Date: Wed, 12 May 2021 14:50:00 +0000 Subject: [PATCH] raw/ioat: remove special case for no status reporting The special fast-path for returning completed descriptors without reporting status or user-handles returns the number of completed ring slots used, rather than the number of actual user-submitted jobs. This means that the counts returned are too high, as the batch descriptor slots would be included in the total. Therefore remove this special case, and use the normal status-processing path so that the returned count is correct in all cases. Fixes: 245efe544d8e ("raw/ioat: report status of completed jobs") Reported-by: Jiayu Hu Signed-off-by: Bruce Richardson Acked-by: Kevin Laatz --- drivers/raw/ioat/rte_idxd_rawdev_fns.h | 9 --------- 1 file changed, 9 deletions(-) diff --git a/drivers/raw/ioat/rte_idxd_rawdev_fns.h b/drivers/raw/ioat/rte_idxd_rawdev_fns.h index 0eea5368de..57548609e3 100644 --- a/drivers/raw/ioat/rte_idxd_rawdev_fns.h +++ b/drivers/raw/ioat/rte_idxd_rawdev_fns.h @@ -343,14 +343,6 @@ __idxd_completed_ops(int dev_id, uint8_t max_ops, uint32_t *status, uint8_t *num idxd->batch_idx_read = 0; } - if (idxd->cfg.hdls_disable && status == NULL) { - n = (idxd->hdls_avail < idxd->hdls_read) ? - (idxd->hdls_avail + idxd->desc_ring_mask + 1 - idxd->hdls_read) : - (idxd->hdls_avail - idxd->hdls_read); - idxd->hdls_read = idxd->hdls_avail; - goto out; - } - n = 0; h_idx = idxd->hdls_read; while (h_idx != idxd->hdls_avail) { @@ -386,7 +378,6 @@ __idxd_completed_ops(int dev_id, uint8_t max_ops, uint32_t *status, uint8_t *num } idxd->hdls_read = h_idx; -out: idxd->xstats.completed += n; return n; } -- 2.20.1