net/virtio-user: restore callfds index for Rx interrupts

Message ID 20220704070428.2051264-1-yuanx.wang@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Maxime Coquelin
Headers
Series net/virtio-user: restore callfds index for Rx interrupts |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/github-robot: build success github build: passed
ci/iol-x86_64-compile-testing success Testing PASS
ci/iol-aarch64-unit-testing success Testing PASS
ci/iol-aarch64-compile-testing success Testing PASS
ci/iol-x86_64-unit-testing success Testing PASS
ci/iol-abi-testing success Testing PASS

Commit Message

Wang, YuanX July 4, 2022, 7:04 a.m. UTC
  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

David Marchand July 4, 2022, 7:42 a.m. UTC | #1
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>
  
Maxime Coquelin July 4, 2022, 8:31 a.m. UTC | #2
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
  
Thomas Monjalon July 5, 2022, 10:53 a.m. UTC | #3
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
  

Patch

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;
 	}