[PATCH v2 0/4] VirtioNet RSS support.

Andrew Melnychenko posted 4 patches 2 years, 3 months ago
Failed in applying to current master (apply log)
docs/formatdomain.rst                         | 18 ++++++++
docs/schemas/domaincommon.rng                 | 10 +++++
src/conf/domain_conf.c                        | 31 ++++++++++++-
src/conf/domain_conf.h                        |  2 +
src/qemu/qemu_capabilities.c                  |  2 +
src/qemu/qemu_capabilities.h                  |  1 +
src/qemu/qemu_command.c                       |  2 +
src/qemu/qemu_validate.c                      | 14 ++++++
.../caps_5.1.0.x86_64.xml                     |  1 +
.../caps_5.2.0.aarch64.xml                    |  1 +
.../qemucapabilitiesdata/caps_5.2.0.ppc64.xml |  1 +
.../caps_5.2.0.riscv64.xml                    |  1 +
.../qemucapabilitiesdata/caps_5.2.0.s390x.xml |  1 +
.../caps_5.2.0.x86_64.xml                     |  1 +
.../caps_6.0.0.aarch64.xml                    |  1 +
.../qemucapabilitiesdata/caps_6.0.0.s390x.xml |  1 +
.../caps_6.0.0.x86_64.xml                     |  1 +
.../caps_6.1.0.x86_64.xml                     |  1 +
.../caps_6.2.0.aarch64.xml                    |  1 +
.../qemucapabilitiesdata/caps_6.2.0.ppc64.xml |  1 +
.../caps_6.2.0.x86_64.xml                     |  1 +
.../net-virtio-rss.x86_64-latest.args         | 43 +++++++++++++++++++
tests/qemuxml2argvdata/net-virtio-rss.xml     | 39 +++++++++++++++++
.../virtio-options.x86_64-latest.args         |  2 +-
tests/qemuxml2argvdata/virtio-options.xml     |  2 +-
tests/qemuxml2argvtest.c                      |  2 +
26 files changed, 178 insertions(+), 3 deletions(-)
create mode 100644 tests/qemuxml2argvdata/net-virtio-rss.x86_64-latest.args
create mode 100644 tests/qemuxml2argvdata/net-virtio-rss.xml
[PATCH v2 0/4] VirtioNet RSS support.
Posted by Andrew Melnychenko 2 years, 3 months ago
This series of patches add RSS property support for virtio-net-pci.

Virtio RSS effectively works with TAP devices, it requires additional
vectors for VirtioNet, queues for TAP device, and vCPU cores.
Example of device configuration:
```
<interface type="network">
  <mac address="52:54:00:c4:90:25"/>
  <source network="default"/>
  <model type="virtio"/>
  <driver name="qemu" queues="9" rss="on" rss_hash_report="off"/>
  <address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
</interface>
```

Capability "rss" enables RSS, "rss_hash_report" - enables hashes in vheader.
For now, "rss" property will trigger "in-qemu" RSS in most cases.
Current Qemu(6.2) supports eBPF RSS that may require additional capabilities.
In future, the helper will be provided. And this code is the base for VirtIO RSS.

Changes since v1:
 * refactored patches
 * changed docs and tests

Changes since RFC:
 * rebased and refactored
 * added tests
 * postponed the helper

Andrew Melnychenko (4):
  domain_conf: Added configs for RSS and Hash report.
  qemu_capabilities: Added capabilites for qemu's "rss" and "hash".
  qemu_command: Added "rss" and "hash" properties.
  test: Added xml2argv and xml2xml tests.

 docs/formatdomain.rst                         | 18 ++++++++
 docs/schemas/domaincommon.rng                 | 10 +++++
 src/conf/domain_conf.c                        | 31 ++++++++++++-
 src/conf/domain_conf.h                        |  2 +
 src/qemu/qemu_capabilities.c                  |  2 +
 src/qemu/qemu_capabilities.h                  |  1 +
 src/qemu/qemu_command.c                       |  2 +
 src/qemu/qemu_validate.c                      | 14 ++++++
 .../caps_5.1.0.x86_64.xml                     |  1 +
 .../caps_5.2.0.aarch64.xml                    |  1 +
 .../qemucapabilitiesdata/caps_5.2.0.ppc64.xml |  1 +
 .../caps_5.2.0.riscv64.xml                    |  1 +
 .../qemucapabilitiesdata/caps_5.2.0.s390x.xml |  1 +
 .../caps_5.2.0.x86_64.xml                     |  1 +
 .../caps_6.0.0.aarch64.xml                    |  1 +
 .../qemucapabilitiesdata/caps_6.0.0.s390x.xml |  1 +
 .../caps_6.0.0.x86_64.xml                     |  1 +
 .../caps_6.1.0.x86_64.xml                     |  1 +
 .../caps_6.2.0.aarch64.xml                    |  1 +
 .../qemucapabilitiesdata/caps_6.2.0.ppc64.xml |  1 +
 .../caps_6.2.0.x86_64.xml                     |  1 +
 .../net-virtio-rss.x86_64-latest.args         | 43 +++++++++++++++++++
 tests/qemuxml2argvdata/net-virtio-rss.xml     | 39 +++++++++++++++++
 .../virtio-options.x86_64-latest.args         |  2 +-
 tests/qemuxml2argvdata/virtio-options.xml     |  2 +-
 tests/qemuxml2argvtest.c                      |  2 +
 26 files changed, 178 insertions(+), 3 deletions(-)
 create mode 100644 tests/qemuxml2argvdata/net-virtio-rss.x86_64-latest.args
 create mode 100644 tests/qemuxml2argvdata/net-virtio-rss.xml

-- 
2.34.1

Re: [PATCH v2 0/4] VirtioNet RSS support.
Posted by Andrew Melnichenko 2 years, 3 months ago
Hi people!
Can you review new patches, please?

On Sun, Jan 9, 2022 at 11:07 PM Andrew Melnychenko <andrew@daynix.com> wrote:
>
> This series of patches add RSS property support for virtio-net-pci.
>
> Virtio RSS effectively works with TAP devices, it requires additional
> vectors for VirtioNet, queues for TAP device, and vCPU cores.
> Example of device configuration:
> ```
> <interface type="network">
>   <mac address="52:54:00:c4:90:25"/>
>   <source network="default"/>
>   <model type="virtio"/>
>   <driver name="qemu" queues="9" rss="on" rss_hash_report="off"/>
>   <address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
> </interface>
> ```
>
> Capability "rss" enables RSS, "rss_hash_report" - enables hashes in vheader.
> For now, "rss" property will trigger "in-qemu" RSS in most cases.
> Current Qemu(6.2) supports eBPF RSS that may require additional capabilities.
> In future, the helper will be provided. And this code is the base for VirtIO RSS.
>
> Changes since v1:
>  * refactored patches
>  * changed docs and tests
>
> Changes since RFC:
>  * rebased and refactored
>  * added tests
>  * postponed the helper
>
> Andrew Melnychenko (4):
>   domain_conf: Added configs for RSS and Hash report.
>   qemu_capabilities: Added capabilites for qemu's "rss" and "hash".
>   qemu_command: Added "rss" and "hash" properties.
>   test: Added xml2argv and xml2xml tests.
>
>  docs/formatdomain.rst                         | 18 ++++++++
>  docs/schemas/domaincommon.rng                 | 10 +++++
>  src/conf/domain_conf.c                        | 31 ++++++++++++-
>  src/conf/domain_conf.h                        |  2 +
>  src/qemu/qemu_capabilities.c                  |  2 +
>  src/qemu/qemu_capabilities.h                  |  1 +
>  src/qemu/qemu_command.c                       |  2 +
>  src/qemu/qemu_validate.c                      | 14 ++++++
>  .../caps_5.1.0.x86_64.xml                     |  1 +
>  .../caps_5.2.0.aarch64.xml                    |  1 +
>  .../qemucapabilitiesdata/caps_5.2.0.ppc64.xml |  1 +
>  .../caps_5.2.0.riscv64.xml                    |  1 +
>  .../qemucapabilitiesdata/caps_5.2.0.s390x.xml |  1 +
>  .../caps_5.2.0.x86_64.xml                     |  1 +
>  .../caps_6.0.0.aarch64.xml                    |  1 +
>  .../qemucapabilitiesdata/caps_6.0.0.s390x.xml |  1 +
>  .../caps_6.0.0.x86_64.xml                     |  1 +
>  .../caps_6.1.0.x86_64.xml                     |  1 +
>  .../caps_6.2.0.aarch64.xml                    |  1 +
>  .../qemucapabilitiesdata/caps_6.2.0.ppc64.xml |  1 +
>  .../caps_6.2.0.x86_64.xml                     |  1 +
>  .../net-virtio-rss.x86_64-latest.args         | 43 +++++++++++++++++++
>  tests/qemuxml2argvdata/net-virtio-rss.xml     | 39 +++++++++++++++++
>  .../virtio-options.x86_64-latest.args         |  2 +-
>  tests/qemuxml2argvdata/virtio-options.xml     |  2 +-
>  tests/qemuxml2argvtest.c                      |  2 +
>  26 files changed, 178 insertions(+), 3 deletions(-)
>  create mode 100644 tests/qemuxml2argvdata/net-virtio-rss.x86_64-latest.args
>  create mode 100644 tests/qemuxml2argvdata/net-virtio-rss.xml
>
> --
> 2.34.1
>

Re: [PATCH v2 0/4] VirtioNet RSS support.
Posted by Maxime Coquelin 2 years, 1 month ago
Hi,

On 1/18/22 14:03, andrew at daynix.com (Andrew Melnichenko) wrote:
> Hi people!
> Can you review new patches, please?

+1, I'm also interested in this feature as I am implementing it for
Vhost-user.

Thanks,
Maxime

> On Sun, Jan 9, 2022 at 11:07 PM Andrew Melnychenko <andrew at daynix.com> wrote:
>>
>> This series of patches add RSS property support for virtio-net-pci.
>>
>> Virtio RSS effectively works with TAP devices, it requires additional
>> vectors for VirtioNet, queues for TAP device, and vCPU cores.
>> Example of device configuration:
>> ```
>> <interface type="network">
>>    <mac address="52:54:00:c4:90:25"/>
>>    <source network="default"/>
>>    <model type="virtio"/>
>>    <driver name="qemu" queues="9" rss="on" rss_hash_report="off"/>
>>    <address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
>> </interface>
>> ```
>>
>> Capability "rss" enables RSS, "rss_hash_report" - enables hashes in vheader.
>> For now, "rss" property will trigger "in-qemu" RSS in most cases.
>> Current Qemu(6.2) supports eBPF RSS that may require additional capabilities.
>> In future, the helper will be provided. And this code is the base for VirtIO RSS.
>>
>> Changes since v1:
>>   * refactored patches
>>   * changed docs and tests
>>
>> Changes since RFC:
>>   * rebased and refactored
>>   * added tests
>>   * postponed the helper
>>
>> Andrew Melnychenko (4):
>>    domain_conf: Added configs for RSS and Hash report.
>>    qemu_capabilities: Added capabilites for qemu's "rss" and "hash".
>>    qemu_command: Added "rss" and "hash" properties.
>>    test: Added xml2argv and xml2xml tests.
>>
>>   docs/formatdomain.rst                         | 18 ++++++++
>>   docs/schemas/domaincommon.rng                 | 10 +++++
>>   src/conf/domain_conf.c                        | 31 ++++++++++++-
>>   src/conf/domain_conf.h                        |  2 +
>>   src/qemu/qemu_capabilities.c                  |  2 +
>>   src/qemu/qemu_capabilities.h                  |  1 +
>>   src/qemu/qemu_command.c                       |  2 +
>>   src/qemu/qemu_validate.c                      | 14 ++++++
>>   .../caps_5.1.0.x86_64.xml                     |  1 +
>>   .../caps_5.2.0.aarch64.xml                    |  1 +
>>   .../qemucapabilitiesdata/caps_5.2.0.ppc64.xml |  1 +
>>   .../caps_5.2.0.riscv64.xml                    |  1 +
>>   .../qemucapabilitiesdata/caps_5.2.0.s390x.xml |  1 +
>>   .../caps_5.2.0.x86_64.xml                     |  1 +
>>   .../caps_6.0.0.aarch64.xml                    |  1 +
>>   .../qemucapabilitiesdata/caps_6.0.0.s390x.xml |  1 +
>>   .../caps_6.0.0.x86_64.xml                     |  1 +
>>   .../caps_6.1.0.x86_64.xml                     |  1 +
>>   .../caps_6.2.0.aarch64.xml                    |  1 +
>>   .../qemucapabilitiesdata/caps_6.2.0.ppc64.xml |  1 +
>>   .../caps_6.2.0.x86_64.xml                     |  1 +
>>   .../net-virtio-rss.x86_64-latest.args         | 43 +++++++++++++++++++
>>   tests/qemuxml2argvdata/net-virtio-rss.xml     | 39 +++++++++++++++++
>>   .../virtio-options.x86_64-latest.args         |  2 +-
>>   tests/qemuxml2argvdata/virtio-options.xml     |  2 +-
>>   tests/qemuxml2argvtest.c                      |  2 +
>>   26 files changed, 178 insertions(+), 3 deletions(-)
>>   create mode 100644 tests/qemuxml2argvdata/net-virtio-rss.x86_64-latest.args
>>   create mode 100644 tests/qemuxml2argvdata/net-virtio-rss.xml
>>
>> --
>> 2.34.1
>>
> 
>
Re: [PATCH v2 0/4] VirtioNet RSS support.
Posted by Michal Prívozník 2 years ago
On 1/9/22 22:07, Andrew Melnychenko wrote:
> This series of patches add RSS property support for virtio-net-pci.
> 
> Virtio RSS effectively works with TAP devices, it requires additional
> vectors for VirtioNet, queues for TAP device, and vCPU cores.
> Example of device configuration:
> ```
> <interface type="network">
>   <mac address="52:54:00:c4:90:25"/>
>   <source network="default"/>
>   <model type="virtio"/>
>   <driver name="qemu" queues="9" rss="on" rss_hash_report="off"/>
>   <address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
> </interface>
> ```
> 
> Capability "rss" enables RSS, "rss_hash_report" - enables hashes in vheader.
> For now, "rss" property will trigger "in-qemu" RSS in most cases.
> Current Qemu(6.2) supports eBPF RSS that may require additional capabilities.
> In future, the helper will be provided. And this code is the base for VirtIO RSS.
> 
> Changes since v1:
>  * refactored patches
>  * changed docs and tests
> 
> Changes since RFC:
>  * rebased and refactored
>  * added tests
>  * postponed the helper
> 
> Andrew Melnychenko (4):
>   domain_conf: Added configs for RSS and Hash report.
>   qemu_capabilities: Added capabilites for qemu's "rss" and "hash".
>   qemu_command: Added "rss" and "hash" properties.
>   test: Added xml2argv and xml2xml tests.
> 
>  docs/formatdomain.rst                         | 18 ++++++++
>  docs/schemas/domaincommon.rng                 | 10 +++++
>  src/conf/domain_conf.c                        | 31 ++++++++++++-
>  src/conf/domain_conf.h                        |  2 +
>  src/qemu/qemu_capabilities.c                  |  2 +
>  src/qemu/qemu_capabilities.h                  |  1 +
>  src/qemu/qemu_command.c                       |  2 +
>  src/qemu/qemu_validate.c                      | 14 ++++++
>  .../caps_5.1.0.x86_64.xml                     |  1 +
>  .../caps_5.2.0.aarch64.xml                    |  1 +
>  .../qemucapabilitiesdata/caps_5.2.0.ppc64.xml |  1 +
>  .../caps_5.2.0.riscv64.xml                    |  1 +
>  .../qemucapabilitiesdata/caps_5.2.0.s390x.xml |  1 +
>  .../caps_5.2.0.x86_64.xml                     |  1 +
>  .../caps_6.0.0.aarch64.xml                    |  1 +
>  .../qemucapabilitiesdata/caps_6.0.0.s390x.xml |  1 +
>  .../caps_6.0.0.x86_64.xml                     |  1 +
>  .../caps_6.1.0.x86_64.xml                     |  1 +
>  .../caps_6.2.0.aarch64.xml                    |  1 +
>  .../qemucapabilitiesdata/caps_6.2.0.ppc64.xml |  1 +
>  .../caps_6.2.0.x86_64.xml                     |  1 +
>  .../net-virtio-rss.x86_64-latest.args         | 43 +++++++++++++++++++
>  tests/qemuxml2argvdata/net-virtio-rss.xml     | 39 +++++++++++++++++
>  .../virtio-options.x86_64-latest.args         |  2 +-
>  tests/qemuxml2argvdata/virtio-options.xml     |  2 +-
>  tests/qemuxml2argvtest.c                      |  2 +
>  26 files changed, 178 insertions(+), 3 deletions(-)
>  create mode 100644 tests/qemuxml2argvdata/net-virtio-rss.x86_64-latest.args
>  create mode 100644 tests/qemuxml2argvdata/net-virtio-rss.xml
> 

I've reworked patches a bit, adopted newer XML parsing, merged 3 and 4
together and pushed.

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>

Congratulations on your first libvirt contribution! And sorry for
delayed review.

Michal