mbox series

[v4,0/2] net/virtio-user: add packed vq support

Message ID 20190111093929.10162-1-jfreimann@redhat.com (mailing list archive)
Headers
Series net/virtio-user: add packed vq support |

Message

Jens Freimann Jan. 11, 2019, 9:39 a.m. UTC
  Patch 1 fixes a bug in virtio_pq_send_command(). When we wait for
a descriptor to be marked as used we need to consider that the ring
might have wrapped and use the previous wrap counter.

Patch 2 reverts the patch to error out when cq is used with packed vq and
add support for packed virtqueues in control virtqueue code.

v3->v4:
 * it's enough to add to add packed vq feature bit to
   unsupported_features if packed_vq=0, no need to explicitly add
   it to device_features (Tiwei) 

v2->v3:
 * squash revert patch into patch 2
 * add new patch 1 to fix a bug in driver code
 * fix wrap handling code in virtio_user_handle_cq_packed
 * in v2 I was using wrap counters and indexes from shared virtqueue,
   fixed this and added wrap counters and used index to virtio_user code
 * tested wrap around of ring

v1->v2:
 * split into two patches
 * handle ring wrap correctly
 * add to unsupported_features when packed_vq is 0

Jens Freimann (2):
  net/virtio: check head desc with correct wrap counter
  net/virtio-user: ctrl vq support for packed

 drivers/net/virtio/virtio_ethdev.c            |  11 +-
 .../net/virtio/virtio_user/virtio_user_dev.c  | 102 ++++++++++++++++--
 .../net/virtio/virtio_user/virtio_user_dev.h  |  15 ++-
 drivers/net/virtio/virtio_user_ethdev.c       |  56 +++++++++-
 drivers/net/virtio/virtqueue.h                |  10 +-
 5 files changed, 171 insertions(+), 23 deletions(-)
  

Comments

Maxime Coquelin Jan. 11, 2019, 10:05 a.m. UTC | #1
On 1/11/19 10:39 AM, Jens Freimann wrote:
> Patch 1 fixes a bug in virtio_pq_send_command(). When we wait for
> a descriptor to be marked as used we need to consider that the ring
> might have wrapped and use the previous wrap counter.
> 
> Patch 2 reverts the patch to error out when cq is used with packed vq and
> add support for packed virtqueues in control virtqueue code.
> 
> v3->v4:
>   * it's enough to add to add packed vq feature bit to
>     unsupported_features if packed_vq=0, no need to explicitly add
>     it to device_features (Tiwei)
> 
> v2->v3:
>   * squash revert patch into patch 2
>   * add new patch 1 to fix a bug in driver code
>   * fix wrap handling code in virtio_user_handle_cq_packed
>   * in v2 I was using wrap counters and indexes from shared virtqueue,
>     fixed this and added wrap counters and used index to virtio_user code
>   * tested wrap around of ring
> 
> v1->v2:
>   * split into two patches
>   * handle ring wrap correctly
>   * add to unsupported_features when packed_vq is 0
> 
> Jens Freimann (2):
>    net/virtio: check head desc with correct wrap counter
>    net/virtio-user: ctrl vq support for packed
> 
>   drivers/net/virtio/virtio_ethdev.c            |  11 +-
>   .../net/virtio/virtio_user/virtio_user_dev.c  | 102 ++++++++++++++++--
>   .../net/virtio/virtio_user/virtio_user_dev.h  |  15 ++-
>   drivers/net/virtio/virtio_user_ethdev.c       |  56 +++++++++-
>   drivers/net/virtio/virtqueue.h                |  10 +-
>   5 files changed, 171 insertions(+), 23 deletions(-)
> 

Applied to dpdk-next-virtio/master.

Thanks,
Maxime
  
Tiwei Bie Jan. 11, 2019, 1:56 p.m. UTC | #2
On Fri, Jan 11, 2019 at 10:39:27AM +0100, Jens Freimann wrote:
> Patch 1 fixes a bug in virtio_pq_send_command(). When we wait for
> a descriptor to be marked as used we need to consider that the ring
> might have wrapped and use the previous wrap counter.
> 
> Patch 2 reverts the patch to error out when cq is used with packed vq and
> add support for packed virtqueues in control virtqueue code.
> 
> v3->v4:
>  * it's enough to add to add packed vq feature bit to
>    unsupported_features if packed_vq=0, no need to explicitly add
>    it to device_features (Tiwei) 

Sorry for not making myself clear previously. Just to make
it clear to avoid more confusion: we shouldn't add it to
device_features by ourselves because vhost backend may not
support it. Otherwise, it's possible that the upper layer
in virtio driver will see virtio-user's .get_features()
report this feature while vhost backend doesn't support it.

Thanks for the new version.

> 
> v2->v3:
>  * squash revert patch into patch 2
>  * add new patch 1 to fix a bug in driver code
>  * fix wrap handling code in virtio_user_handle_cq_packed
>  * in v2 I was using wrap counters and indexes from shared virtqueue,
>    fixed this and added wrap counters and used index to virtio_user code
>  * tested wrap around of ring
> 
> v1->v2:
>  * split into two patches
>  * handle ring wrap correctly
>  * add to unsupported_features when packed_vq is 0
> 
> Jens Freimann (2):
>   net/virtio: check head desc with correct wrap counter
>   net/virtio-user: ctrl vq support for packed
> 
>  drivers/net/virtio/virtio_ethdev.c            |  11 +-
>  .../net/virtio/virtio_user/virtio_user_dev.c  | 102 ++++++++++++++++--
>  .../net/virtio/virtio_user/virtio_user_dev.h  |  15 ++-
>  drivers/net/virtio/virtio_user_ethdev.c       |  56 +++++++++-
>  drivers/net/virtio/virtqueue.h                |  10 +-
>  5 files changed, 171 insertions(+), 23 deletions(-)
> 
> -- 
> 2.17.2
>