raw/ioat: fix ring space checks
authorBruce Richardson <bruce.richardson@intel.com>
Wed, 12 May 2021 14:49:59 +0000 (14:49 +0000)
committerThomas Monjalon <thomas@monjalon.net>
Wed, 12 May 2021 18:44:46 +0000 (20:44 +0200)
commitdbc9ae665b5c8d18e2b38ab9059ba7dfc4088dc4
treeaa3ad1bd1ce21c814afa2f2ed007bf1531c1b17a
parent37c0359bc550e0cf3938382553c7dbb4fb21567d
raw/ioat: fix ring space checks

When enqueuing a descriptor, when checking that there is at least one
slot free for the current descriptor and a later batch descriptor, we
need to test for both two free and one free, in case the last write
was a batch descriptor which is allowed to use the "spare" slot.

Similarly, when computing the free space in the ring to return to the
user, we need to take account of the same condition, so that we do not
return a "-1" ring space value, by blindly subtracting "2".

Fixes: 245efe544d8e ("raw/ioat: report status of completed jobs")

Reported-by: Jiayu Hu <jiayu.hu@intel.com>
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Kevin Laatz <kevin.laatz@intel.com>
drivers/raw/ioat/rte_idxd_rawdev_fns.h