lib/vhost: don't clear interrupt counter for error case

`rte_vhost_vring_call` may return error, then we can
try to call it in next poll.

Change-Id: I8f6a591837225079e004c6f57f2d7b01063f87a1
Signed-off-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14342
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: GangCao <gang.cao@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Dong Yi <yidong0635@126.com>
Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
This commit is contained in:
Changpeng Liu 2022-09-05 09:53:23 +08:00 committed by Jim Harris
parent 75cc6fd62f
commit 9b74b4a3de

View File

@ -355,15 +355,14 @@ vhost_vq_used_signal(struct spdk_vhost_session *vsession,
return 0;
}
virtqueue->req_cnt += virtqueue->used_req_cnt;
virtqueue->used_req_cnt = 0;
SPDK_DEBUGLOG(vhost_ring,
"Queue %td - USED RING: sending IRQ: last used %"PRIu16"\n",
virtqueue - vsession->virtqueue, virtqueue->last_used_idx);
if (rte_vhost_vring_call(vsession->vid, virtqueue->vring_idx) == 0) {
/* interrupt signalled */
virtqueue->req_cnt += virtqueue->used_req_cnt;
virtqueue->used_req_cnt = 0;
return 1;
} else {
/* interrupt not signalled */