net/virtio-user: restore callfds index for Rx interrupts
Checks
Commit Message
The callfds[] array stores eventfds sequentially for Rx and Tx vq.
Fixes: d61138d4f0e2 ("drivers: remove direct access to interrupt handle")
Cc: stable@dpdk.org
Signed-off-by: Yuan Wang <yuanx.wang@intel.com>
---
drivers/net/virtio/virtio_user/virtio_user_dev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Comments
On Mon, Jul 4, 2022 at 9:11 AM Yuan Wang <yuanx.wang@intel.com> wrote:
>
> The callfds[] array stores eventfds sequentially for Rx and Tx vq.
>
> Fixes: d61138d4f0e2 ("drivers: remove direct access to interrupt handle")
> Cc: stable@dpdk.org
>
> Signed-off-by: Yuan Wang <yuanx.wang@intel.com>
Good catch...
This is what I had fixed in 848e93d9001e ("net/virtio-user: fix Rx
interrupts with multi-queue").
I suppose the issue has been reintroduced when rebasing Harman series.
> ---
> drivers/net/virtio/virtio_user/virtio_user_dev.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.c b/drivers/net/virtio/virtio_user/virtio_user_dev.c
> index 35aa76b1ff..f9cada05e4 100644
> --- a/drivers/net/virtio/virtio_user/virtio_user_dev.c
> +++ b/drivers/net/virtio/virtio_user/virtio_user_dev.c
> @@ -417,7 +417,7 @@ virtio_user_fill_intr_handle(struct virtio_user_dev *dev)
>
> for (i = 0; i < dev->max_queue_pairs; ++i) {
> if (rte_intr_efds_index_set(eth_dev->intr_handle, i,
> - dev->callfds[i]))
> + dev->callfds[2 * i + VTNET_SQ_RQ_QUEUE_IDX]))
> return -rte_errno;
> }
Reviewed-by: David Marchand <david.marchand@redhat.com>
On 7/4/22 09:04, Yuan Wang wrote:
> The callfds[] array stores eventfds sequentially for Rx and Tx vq.
>
> Fixes: d61138d4f0e2 ("drivers: remove direct access to interrupt handle")
> Cc: stable@dpdk.org
>
> Signed-off-by: Yuan Wang <yuanx.wang@intel.com>
> ---
> drivers/net/virtio/virtio_user/virtio_user_dev.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.c b/drivers/net/virtio/virtio_user/virtio_user_dev.c
> index 35aa76b1ff..f9cada05e4 100644
> --- a/drivers/net/virtio/virtio_user/virtio_user_dev.c
> +++ b/drivers/net/virtio/virtio_user/virtio_user_dev.c
> @@ -417,7 +417,7 @@ virtio_user_fill_intr_handle(struct virtio_user_dev *dev)
>
> for (i = 0; i < dev->max_queue_pairs; ++i) {
> if (rte_intr_efds_index_set(eth_dev->intr_handle, i,
> - dev->callfds[i]))
> + dev->callfds[2 * i + VTNET_SQ_RQ_QUEUE_IDX]))
> return -rte_errno;
> }
>
Thanks Yuan, good catch!
Applied to dpdk-next-virtio/main.
Maxime
04/07/2022 09:42, David Marchand:
> On Mon, Jul 4, 2022 at 9:11 AM Yuan Wang <yuanx.wang@intel.com> wrote:
> >
> > The callfds[] array stores eventfds sequentially for Rx and Tx vq.
> >
> > Fixes: d61138d4f0e2 ("drivers: remove direct access to interrupt handle")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Yuan Wang <yuanx.wang@intel.com>
>
> Good catch...
>
> This is what I had fixed in 848e93d9001e ("net/virtio-user: fix Rx
> interrupts with multi-queue").
> I suppose the issue has been reintroduced when rebasing Harman series.
Then we can re-use your commit title which better convey what is fixed
from a user perspective:
net/virtio-user: fix Rx interrupts with multi-queue
@@ -417,7 +417,7 @@ virtio_user_fill_intr_handle(struct virtio_user_dev *dev)
for (i = 0; i < dev->max_queue_pairs; ++i) {
if (rte_intr_efds_index_set(eth_dev->intr_handle, i,
- dev->callfds[i]))
+ dev->callfds[2 * i + VTNET_SQ_RQ_QUEUE_IDX]))
return -rte_errno;
}