From: Abhimanyu Saini <absa...@amd.com>

The used/avail queue indexes are not bound by queue
size, because HW calculates descriptor entry index by
performing a simple modulo between queue index and queue_size.

So, do not check initial used and avail queue indexes
against queue size because it is possible for these
indexes to be greater than queue size in the
following cases:
1) The queue is created to be migrated into, or
2) The client issues a qstop/qstart after running datapath

Fixes: 4dda72dbdeab3 ("common/sfc_efx/base: add base virtio support for vDPA")

Signed-off-by: Abhimanyu Saini <absa...@amd.com>
---
v2:
* Fix checkpatch warnings
* Add a cover letter
v3:
* Restructure patchset

 drivers/common/sfc_efx/base/rhead_virtio.c | 12 +-----------
 1 file changed, 1 insertion(+), 11 deletions(-)

diff --git a/drivers/common/sfc_efx/base/rhead_virtio.c 
b/drivers/common/sfc_efx/base/rhead_virtio.c
index 335cb74..7f08717 100644
--- a/drivers/common/sfc_efx/base/rhead_virtio.c
+++ b/drivers/common/sfc_efx/base/rhead_virtio.c
@@ -47,14 +47,6 @@
                goto fail2;
        }
 
-       if (evvdp != NULL) {
-               if ((evvdp->evvd_vq_cidx > evvcp->evvc_vq_size) ||
-                   (evvdp->evvd_vq_pidx > evvcp->evvc_vq_size)) {
-                       rc = EINVAL;
-                       goto fail3;
-               }
-       }
-
        req.emr_cmd = MC_CMD_VIRTIO_INIT_QUEUE;
        req.emr_in_buf = payload;
        req.emr_in_length = MC_CMD_VIRTIO_INIT_QUEUE_REQ_LEN;
@@ -116,15 +108,13 @@
 
        if (req.emr_rc != 0) {
                rc = req.emr_rc;
-               goto fail4;
+               goto fail3;
        }
 
        evvp->evv_vi_index = vi_index;
 
        return (0);
 
-fail4:
-       EFSYS_PROBE(fail4);
 fail3:
        EFSYS_PROBE(fail3);
 fail2:
-- 
1.8.3.1

Reply via email to