mbox series

[v7,0/7] reference implementation of RSS and hash report

Message ID 20200329150953.23812-1-yuri.benditovich@daynix.com
Headers show
Series reference implementation of RSS and hash report | expand

Message

Yuri Benditovich March 29, 2020, 3:09 p.m. UTC
Support for VIRTIO_NET_F_RSS and VIRTIO_NET_F_HASH_REPORT
features in QEMU for reference purpose.
Implements Toeplitz hash calculation for incoming
packets according to configuration provided by driver.
Uses calculated hash for decision on receive virtqueue
and/or reports the hash in the virtio header

Changes from v6:
Fixed a bug in patch 5 "reference implementation of hash report"
that caused the ASAN test to fail
was: n->rss_data.populate_hash = true;
fixed: n->rss_data.populate_hash = !!hash_report;

Yuri Benditovich (7):
  virtio-net: introduce RSS and hash report features
  virtio-net: implement RSS configuration command
  virtio-net: implement RX RSS processing
  tap: allow extended virtio header with hash info
  virtio-net: reference implementation of hash report
  vmstate.h: provide VMSTATE_VARRAY_UINT16_ALLOC macro
  virtio-net: add migration support for RSS and hash report

 hw/net/trace-events            |   3 +
 hw/net/virtio-net.c            | 448 +++++++++++++++++++++++++++++++--
 include/hw/virtio/virtio-net.h |  16 ++
 include/migration/vmstate.h    |  10 +
 net/tap.c                      |  11 +-
 5 files changed, 460 insertions(+), 28 deletions(-)

Comments

Michael S. Tsirkin March 31, 2020, 2:26 p.m. UTC | #1
On Sun, Mar 29, 2020 at 06:09:46PM +0300, Yuri Benditovich wrote:
> Support for VIRTIO_NET_F_RSS and VIRTIO_NET_F_HASH_REPORT
> features in QEMU for reference purpose.
> Implements Toeplitz hash calculation for incoming
> packets according to configuration provided by driver.
> Uses calculated hash for decision on receive virtqueue
> and/or reports the hash in the virtio header


Reviewed-by: Michael S. Tsirkin <mst@redhat.com>

Probably post 5.0 material.

> Changes from v6:
> Fixed a bug in patch 5 "reference implementation of hash report"
> that caused the ASAN test to fail
> was: n->rss_data.populate_hash = true;
> fixed: n->rss_data.populate_hash = !!hash_report;
> 
> Yuri Benditovich (7):
>   virtio-net: introduce RSS and hash report features
>   virtio-net: implement RSS configuration command
>   virtio-net: implement RX RSS processing
>   tap: allow extended virtio header with hash info
>   virtio-net: reference implementation of hash report
>   vmstate.h: provide VMSTATE_VARRAY_UINT16_ALLOC macro
>   virtio-net: add migration support for RSS and hash report
> 
>  hw/net/trace-events            |   3 +
>  hw/net/virtio-net.c            | 448 +++++++++++++++++++++++++++++++--
>  include/hw/virtio/virtio-net.h |  16 ++
>  include/migration/vmstate.h    |  10 +
>  net/tap.c                      |  11 +-
>  5 files changed, 460 insertions(+), 28 deletions(-)
> 
> -- 
> 2.17.1
Yuri Benditovich May 1, 2020, 4:01 a.m. UTC | #2
Michael/Jason,

As Linux headers was updated in qemu and now include RSC/RSS/Hash
definitions, please let me know what you prefer:
1. You apply this series as is, then I submit clean-up series that will
remove all the redundant defines from virtio-net.c
2. I post v8 of this series with cleanup of all the redundant defines and
also RSC ones
3. Something other

Thanks,
Yuri Benditovich

On Tue, Mar 31, 2020 at 5:26 PM Michael S. Tsirkin <mst@redhat.com> wrote:

> On Sun, Mar 29, 2020 at 06:09:46PM +0300, Yuri Benditovich wrote:
> > Support for VIRTIO_NET_F_RSS and VIRTIO_NET_F_HASH_REPORT
> > features in QEMU for reference purpose.
> > Implements Toeplitz hash calculation for incoming
> > packets according to configuration provided by driver.
> > Uses calculated hash for decision on receive virtqueue
> > and/or reports the hash in the virtio header
>
>
> Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
>
> Probably post 5.0 material.
>
> > Changes from v6:
> > Fixed a bug in patch 5 "reference implementation of hash report"
> > that caused the ASAN test to fail
> > was: n->rss_data.populate_hash = true;
> > fixed: n->rss_data.populate_hash = !!hash_report;
> >
> > Yuri Benditovich (7):
> >   virtio-net: introduce RSS and hash report features
> >   virtio-net: implement RSS configuration command
> >   virtio-net: implement RX RSS processing
> >   tap: allow extended virtio header with hash info
> >   virtio-net: reference implementation of hash report
> >   vmstate.h: provide VMSTATE_VARRAY_UINT16_ALLOC macro
> >   virtio-net: add migration support for RSS and hash report
> >
> >  hw/net/trace-events            |   3 +
> >  hw/net/virtio-net.c            | 448 +++++++++++++++++++++++++++++++--
> >  include/hw/virtio/virtio-net.h |  16 ++
> >  include/migration/vmstate.h    |  10 +
> >  net/tap.c                      |  11 +-
> >  5 files changed, 460 insertions(+), 28 deletions(-)
> >
> > --
> > 2.17.1
>
>
Michael S. Tsirkin May 1, 2020, 2:44 p.m. UTC | #3
We are in freeze so nothing's applied right now.
v8 which has all the bits will be a good step so we
are ready for after freeze.

On Fri, May 01, 2020 at 07:01:58AM +0300, Yuri Benditovich wrote:
> Michael/Jason,
> 
> As Linux headers was updated in qemu and now include RSC/RSS/Hash definitions,
> please let me know what you prefer:
> 1. You apply this series as is, then I submit clean-up series that will remove
> all the redundant defines from virtio-net.c
> 2. I post v8 of this series with cleanup of all the redundant defines and also
> RSC ones
> 3. Something other
> 
> Thanks,
> Yuri Benditovich
> 
> On Tue, Mar 31, 2020 at 5:26 PM Michael S. Tsirkin <mst@redhat.com> wrote:
> 
>     On Sun, Mar 29, 2020 at 06:09:46PM +0300, Yuri Benditovich wrote:
>     > Support for VIRTIO_NET_F_RSS and VIRTIO_NET_F_HASH_REPORT
>     > features in QEMU for reference purpose.
>     > Implements Toeplitz hash calculation for incoming
>     > packets according to configuration provided by driver.
>     > Uses calculated hash for decision on receive virtqueue
>     > and/or reports the hash in the virtio header
> 
> 
>     Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
> 
>     Probably post 5.0 material.
> 
>     > Changes from v6:
>     > Fixed a bug in patch 5 "reference implementation of hash report"
>     > that caused the ASAN test to fail
>     > was: n->rss_data.populate_hash = true;
>     > fixed: n->rss_data.populate_hash = !!hash_report;
>     >
>     > Yuri Benditovich (7):
>     >   virtio-net: introduce RSS and hash report features
>     >   virtio-net: implement RSS configuration command
>     >   virtio-net: implement RX RSS processing
>     >   tap: allow extended virtio header with hash info
>     >   virtio-net: reference implementation of hash report
>     >   vmstate.h: provide VMSTATE_VARRAY_UINT16_ALLOC macro
>     >   virtio-net: add migration support for RSS and hash report
>     >
>     >  hw/net/trace-events            |   3 +
>     >  hw/net/virtio-net.c            | 448 +++++++++++++++++++++++++++++++--
>     >  include/hw/virtio/virtio-net.h |  16 ++
>     >  include/migration/vmstate.h    |  10 +
>     >  net/tap.c                      |  11 +-
>     >  5 files changed, 460 insertions(+), 28 deletions(-)
>     >
>     > --
>     > 2.17.1
> 
>
Michael S. Tsirkin May 1, 2020, 4:40 p.m. UTC | #4
OK so now 5.0's out, I think it's easier if you just send v8,
but it's up to Jason.


On Fri, May 01, 2020 at 10:44:06AM -0400, Michael S. Tsirkin wrote:
> We are in freeze so nothing's applied right now.
> v8 which has all the bits will be a good step so we
> are ready for after freeze.
> 
> On Fri, May 01, 2020 at 07:01:58AM +0300, Yuri Benditovich wrote:
> > Michael/Jason,
> > 
> > As Linux headers was updated in qemu and now include RSC/RSS/Hash definitions,
> > please let me know what you prefer:
> > 1. You apply this series as is, then I submit clean-up series that will remove
> > all the redundant defines from virtio-net.c
> > 2. I post v8 of this series with cleanup of all the redundant defines and also
> > RSC ones
> > 3. Something other
> > 
> > Thanks,
> > Yuri Benditovich
> > 
> > On Tue, Mar 31, 2020 at 5:26 PM Michael S. Tsirkin <mst@redhat.com> wrote:
> > 
> >     On Sun, Mar 29, 2020 at 06:09:46PM +0300, Yuri Benditovich wrote:
> >     > Support for VIRTIO_NET_F_RSS and VIRTIO_NET_F_HASH_REPORT
> >     > features in QEMU for reference purpose.
> >     > Implements Toeplitz hash calculation for incoming
> >     > packets according to configuration provided by driver.
> >     > Uses calculated hash for decision on receive virtqueue
> >     > and/or reports the hash in the virtio header
> > 
> > 
> >     Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
> > 
> >     Probably post 5.0 material.
> > 
> >     > Changes from v6:
> >     > Fixed a bug in patch 5 "reference implementation of hash report"
> >     > that caused the ASAN test to fail
> >     > was: n->rss_data.populate_hash = true;
> >     > fixed: n->rss_data.populate_hash = !!hash_report;
> >     >
> >     > Yuri Benditovich (7):
> >     >   virtio-net: introduce RSS and hash report features
> >     >   virtio-net: implement RSS configuration command
> >     >   virtio-net: implement RX RSS processing
> >     >   tap: allow extended virtio header with hash info
> >     >   virtio-net: reference implementation of hash report
> >     >   vmstate.h: provide VMSTATE_VARRAY_UINT16_ALLOC macro
> >     >   virtio-net: add migration support for RSS and hash report
> >     >
> >     >  hw/net/trace-events            |   3 +
> >     >  hw/net/virtio-net.c            | 448 +++++++++++++++++++++++++++++++--
> >     >  include/hw/virtio/virtio-net.h |  16 ++
> >     >  include/migration/vmstate.h    |  10 +
> >     >  net/tap.c                      |  11 +-
> >     >  5 files changed, 460 insertions(+), 28 deletions(-)
> >     >
> >     > --
> >     > 2.17.1
> > 
> >
Michael S. Tsirkin May 1, 2020, 4:41 p.m. UTC | #5
On Sun, Mar 29, 2020 at 06:09:46PM +0300, Yuri Benditovich wrote:
> Support for VIRTIO_NET_F_RSS and VIRTIO_NET_F_HASH_REPORT
> features in QEMU for reference purpose.
> Implements Toeplitz hash calculation for incoming
> packets according to configuration provided by driver.
> Uses calculated hash for decision on receive virtqueue
> and/or reports the hash in the virtio header

Series:

Reviewed-by: Michael S. Tsirkin <mst@redhat.com>

to be queued through Jason's tree.

> Changes from v6:
> Fixed a bug in patch 5 "reference implementation of hash report"
> that caused the ASAN test to fail
> was: n->rss_data.populate_hash = true;
> fixed: n->rss_data.populate_hash = !!hash_report;
> 
> Yuri Benditovich (7):
>   virtio-net: introduce RSS and hash report features
>   virtio-net: implement RSS configuration command
>   virtio-net: implement RX RSS processing
>   tap: allow extended virtio header with hash info
>   virtio-net: reference implementation of hash report
>   vmstate.h: provide VMSTATE_VARRAY_UINT16_ALLOC macro
>   virtio-net: add migration support for RSS and hash report
> 
>  hw/net/trace-events            |   3 +
>  hw/net/virtio-net.c            | 448 +++++++++++++++++++++++++++++++--
>  include/hw/virtio/virtio-net.h |  16 ++
>  include/migration/vmstate.h    |  10 +
>  net/tap.c                      |  11 +-
>  5 files changed, 460 insertions(+), 28 deletions(-)
> 
> -- 
> 2.17.1
Jason Wang May 6, 2020, 5:37 a.m. UTC | #6
On 2020/5/1 下午12:01, Yuri Benditovich wrote:
> Michael/Jason,
>
> As Linux headers was updated in qemu and now include RSC/RSS/Hash 
> definitions, please let me know what you prefer:
> 1. You apply this series as is, then I submit clean-up series that 
> will remove all the redundant defines from virtio-net.c
> 2. I post v8 of this series with cleanup of all the redundant defines 
> and also RSC ones
> 3. Something other


Hi Yuri:

Though I've queued this series but consider we have new headers, I think 
it's better to post v8.

Thanks
Yuri Benditovich May 6, 2020, 8:08 a.m. UTC | #7
I'll send v8 soon

Thanks,
Yuri

On Wed, May 6, 2020 at 8:37 AM Jason Wang <jasowang@redhat.com> wrote:

>
> On 2020/5/1 下午12:01, Yuri Benditovich wrote:
> > Michael/Jason,
> >
> > As Linux headers was updated in qemu and now include RSC/RSS/Hash
> > definitions, please let me know what you prefer:
> > 1. You apply this series as is, then I submit clean-up series that
> > will remove all the redundant defines from virtio-net.c
> > 2. I post v8 of this series with cleanup of all the redundant defines
> > and also RSC ones
> > 3. Something other
>
>
> Hi Yuri:
>
> Though I've queued this series but consider we have new headers, I think
> it's better to post v8.
>
> Thanks
>
>