mbox

[PULL,00/10] Net patches

Message ID 1620458319-5670-1-git-send-email-jasowang@redhat.com
State New
Headers show

Pull-request

https://github.com/jasowang/qemu.git tags/net-pull-request

Message

Jason Wang May 8, 2021, 7:18 a.m. UTC
The following changes since commit d90f154867ec0ec22fd719164b88716e8fd48672:

  Merge remote-tracking branch 'remotes/dg-gitlab/tags/ppc-for-6.1-20210504' into staging (2021-05-05 20:29:14 +0100)

are available in the git repository at:

  https://github.com/jasowang/qemu.git tags/net-pull-request

for you to fetch changes up to 2bdeb0c2564c36b218ac73e21d7a6f6accb49091:

  tap-bsd: Remove special casing for older OpenBSD releases (2021-05-08 13:59:12 +0800)

----------------------------------------------------------------

----------------------------------------------------------------
Andrew Melnychenko (7):
      net/tap: Added TUNSETSTEERINGEBPF code.
      net: Added SetSteeringEBPF method for NetClientState.
      ebpf: Added eBPF RSS program.
      ebpf: Added eBPF RSS loader.
      virtio-net: Added eBPF RSS to virtio-net.
      docs: Added eBPF documentation.
      MAINTAINERS: Added eBPF maintainers information.

Brad Smith (1):
      tap-bsd: Remove special casing for older OpenBSD releases

Guenter Roeck (1):
      hw/net/imx_fec: return 0xffff when accessing non-existing PHY

Laurent Vivier (1):
      virtio-net: failover: add missing remove_migration_state_change_notifier()

 MAINTAINERS                    |   8 +
 configure                      |   8 +-
 docs/devel/ebpf_rss.rst        | 125 +++++++++
 docs/devel/index.rst           |   1 +
 ebpf/ebpf_rss-stub.c           |  40 +++
 ebpf/ebpf_rss.c                | 165 ++++++++++++
 ebpf/ebpf_rss.h                |  44 ++++
 ebpf/meson.build               |   1 +
 ebpf/rss.bpf.skeleton.h        | 431 +++++++++++++++++++++++++++++++
 ebpf/trace-events              |   4 +
 ebpf/trace.h                   |   1 +
 hw/net/imx_fec.c               |   8 +-
 hw/net/trace-events            |   2 +
 hw/net/vhost_net.c             |   3 +
 hw/net/virtio-net.c            | 116 ++++++++-
 include/hw/virtio/virtio-net.h |   4 +
 include/net/net.h              |   2 +
 meson.build                    |  23 ++
 meson_options.txt              |   2 +
 net/tap-bsd.c                  |  13 +-
 net/tap-linux.c                |  13 +
 net/tap-linux.h                |   1 +
 net/tap-solaris.c              |   5 +
 net/tap-stub.c                 |   5 +
 net/tap.c                      |   9 +
 net/tap_int.h                  |   1 +
 net/vhost-vdpa.c               |   2 +
 tools/ebpf/Makefile.ebpf       |  21 ++
 tools/ebpf/rss.bpf.c           | 569 +++++++++++++++++++++++++++++++++++++++++
 29 files changed, 1610 insertions(+), 17 deletions(-)
 create mode 100644 docs/devel/ebpf_rss.rst
 create mode 100644 ebpf/ebpf_rss-stub.c
 create mode 100644 ebpf/ebpf_rss.c
 create mode 100644 ebpf/ebpf_rss.h
 create mode 100644 ebpf/meson.build
 create mode 100644 ebpf/rss.bpf.skeleton.h
 create mode 100644 ebpf/trace-events
 create mode 100644 ebpf/trace.h
 create mode 100755 tools/ebpf/Makefile.ebpf
 create mode 100644 tools/ebpf/rss.bpf.c

Comments

no-reply@patchew.org May 8, 2021, 7:31 a.m. UTC | #1
Patchew URL: https://patchew.org/QEMU/1620458319-5670-1-git-send-email-jasowang@redhat.com/



Hi,

This series seems to have some coding style problems. See output below for
more information:

Type: series
Message-id: 1620458319-5670-1-git-send-email-jasowang@redhat.com
Subject: [PULL 00/10] Net patches

=== TEST SCRIPT BEGIN ===
#!/bin/bash
git rev-parse base > /dev/null || exit 0
git config --local diff.renamelimit 0
git config --local diff.renames True
git config --local diff.algorithm histogram
./scripts/checkpatch.pl --mailback base..
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
From https://github.com/patchew-project/qemu
 - [tag update]      patchew/1620402803-9237-1-git-send-email-jag.raman@oracle.com -> patchew/1620402803-9237-1-git-send-email-jag.raman@oracle.com
 * [new tag]         patchew/1620458319-5670-1-git-send-email-jasowang@redhat.com -> patchew/1620458319-5670-1-git-send-email-jasowang@redhat.com
Switched to a new branch 'test'
a34d81a tap-bsd: Remove special casing for older OpenBSD releases
4b987f4 virtio-net: failover: add missing remove_migration_state_change_notifier()
3dc299d hw/net/imx_fec: return 0xffff when accessing non-existing PHY
729e8df MAINTAINERS: Added eBPF maintainers information.
ab65d98 docs: Added eBPF documentation.
905729a virtio-net: Added eBPF RSS to virtio-net.
5a7d393 ebpf: Added eBPF RSS loader.
eae9462 ebpf: Added eBPF RSS program.
b6962be net: Added SetSteeringEBPF method for NetClientState.
1207c8e net/tap: Added TUNSETSTEERINGEBPF code.

=== OUTPUT BEGIN ===
1/10 Checking commit 1207c8e2a076 (net/tap: Added TUNSETSTEERINGEBPF code.)
2/10 Checking commit b6962be9ca91 (net: Added SetSteeringEBPF method for NetClientState.)
3/10 Checking commit eae94621a4b1 (ebpf: Added eBPF RSS program.)
Use of uninitialized value $acpi_testexpected in string eq at ./scripts/checkpatch.pl line 1529.
WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
#23: 
new file mode 100755

WARNING: line over 80 characters
#211: FILE: tools/ebpf/rss.bpf.c:157:
+ * According to https://www.iana.org/assignments/ipv6-parameters/ipv6-parameters.xhtml

WARNING: line over 80 characters
#214: FILE: tools/ebpf/rss.bpf.c:160:
+ * Need to choose reasonable amount of maximum extensions/options we may check to find

WARNING: line over 80 characters
#281: FILE: tools/ebpf/rss.bpf.c:227:
+                        *l4_offset + opt_offset + offsetof(struct ipv6_destopt_hao, addr),

total: 0 errors, 4 warnings, 590 lines checked

Patch 3/10 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
4/10 Checking commit 5a7d3933bfa3 (ebpf: Added eBPF RSS loader.)
Use of uninitialized value $acpi_testexpected in string eq at ./scripts/checkpatch.pl line 1529.
WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
#72: 
new file mode 100644

WARNING: architecture specific defines should be avoided
#354: FILE: ebpf/rss.bpf.skeleton.h:4:
+#ifndef __RSS_BPF_SKEL_H__

ERROR: code indent should never use tabs
#361: FILE: ebpf/rss.bpf.skeleton.h:11:
+^Istruct bpf_object_skeleton *skeleton;$

ERROR: code indent should never use tabs
#362: FILE: ebpf/rss.bpf.skeleton.h:12:
+^Istruct bpf_object *obj;$

ERROR: code indent should never use tabs
#363: FILE: ebpf/rss.bpf.skeleton.h:13:
+^Istruct {$

ERROR: code indent should never use tabs
#364: FILE: ebpf/rss.bpf.skeleton.h:14:
+^I^Istruct bpf_map *tap_rss_map_configurations;$

ERROR: code indent should never use tabs
#365: FILE: ebpf/rss.bpf.skeleton.h:15:
+^I^Istruct bpf_map *tap_rss_map_indirection_table;$

ERROR: code indent should never use tabs
#366: FILE: ebpf/rss.bpf.skeleton.h:16:
+^I^Istruct bpf_map *tap_rss_map_toeplitz_key;$

ERROR: code indent should never use tabs
#367: FILE: ebpf/rss.bpf.skeleton.h:17:
+^I} maps;$

ERROR: code indent should never use tabs
#368: FILE: ebpf/rss.bpf.skeleton.h:18:
+^Istruct {$

ERROR: code indent should never use tabs
#369: FILE: ebpf/rss.bpf.skeleton.h:19:
+^I^Istruct bpf_program *tun_rss_steering_prog;$

ERROR: code indent should never use tabs
#370: FILE: ebpf/rss.bpf.skeleton.h:20:
+^I} progs;$

ERROR: code indent should never use tabs
#371: FILE: ebpf/rss.bpf.skeleton.h:21:
+^Istruct {$

ERROR: code indent should never use tabs
#372: FILE: ebpf/rss.bpf.skeleton.h:22:
+^I^Istruct bpf_link *tun_rss_steering_prog;$

ERROR: code indent should never use tabs
#373: FILE: ebpf/rss.bpf.skeleton.h:23:
+^I} links;$

ERROR: code indent should never use tabs
#379: FILE: ebpf/rss.bpf.skeleton.h:29:
+^Iif (!obj)$

ERROR: braces {} are necessary for all arms of this statement
#379: FILE: ebpf/rss.bpf.skeleton.h:29:
+       if (!obj)
[...]

ERROR: code indent should never use tabs
#380: FILE: ebpf/rss.bpf.skeleton.h:30:
+^I^Ireturn;$

ERROR: code indent should never use tabs
#381: FILE: ebpf/rss.bpf.skeleton.h:31:
+^Iif (obj->skeleton)$

ERROR: braces {} are necessary for all arms of this statement
#381: FILE: ebpf/rss.bpf.skeleton.h:31:
+       if (obj->skeleton)
[...]

ERROR: code indent should never use tabs
#382: FILE: ebpf/rss.bpf.skeleton.h:32:
+^I^Ibpf_object__destroy_skeleton(obj->skeleton);$

ERROR: code indent should never use tabs
#383: FILE: ebpf/rss.bpf.skeleton.h:33:
+^Ifree(obj);$

ERROR: code indent should never use tabs
#392: FILE: ebpf/rss.bpf.skeleton.h:42:
+^Istruct rss_bpf *obj;$

ERROR: code indent should never use tabs
#394: FILE: ebpf/rss.bpf.skeleton.h:44:
+^Iobj = (struct rss_bpf *)calloc(1, sizeof(*obj));$

ERROR: code indent should never use tabs
#395: FILE: ebpf/rss.bpf.skeleton.h:45:
+^Iif (!obj)$

ERROR: braces {} are necessary for all arms of this statement
#395: FILE: ebpf/rss.bpf.skeleton.h:45:
+       if (!obj)
[...]

ERROR: code indent should never use tabs
#396: FILE: ebpf/rss.bpf.skeleton.h:46:
+^I^Ireturn NULL;$

ERROR: code indent should never use tabs
#397: FILE: ebpf/rss.bpf.skeleton.h:47:
+^Iif (rss_bpf__create_skeleton(obj))$

ERROR: braces {} are necessary for all arms of this statement
#397: FILE: ebpf/rss.bpf.skeleton.h:47:
+       if (rss_bpf__create_skeleton(obj))
[...]

ERROR: code indent should never use tabs
#398: FILE: ebpf/rss.bpf.skeleton.h:48:
+^I^Igoto err;$

ERROR: code indent should never use tabs
#399: FILE: ebpf/rss.bpf.skeleton.h:49:
+^Iif (bpf_object__open_skeleton(obj->skeleton, opts))$

ERROR: braces {} are necessary for all arms of this statement
#399: FILE: ebpf/rss.bpf.skeleton.h:49:
+       if (bpf_object__open_skeleton(obj->skeleton, opts))
[...]

ERROR: code indent should never use tabs
#400: FILE: ebpf/rss.bpf.skeleton.h:50:
+^I^Igoto err;$

ERROR: code indent should never use tabs
#402: FILE: ebpf/rss.bpf.skeleton.h:52:
+^Ireturn obj;$

ERROR: code indent should never use tabs
#404: FILE: ebpf/rss.bpf.skeleton.h:54:
+^Irss_bpf__destroy(obj);$

ERROR: code indent should never use tabs
#405: FILE: ebpf/rss.bpf.skeleton.h:55:
+^Ireturn NULL;$

ERROR: code indent should never use tabs
#411: FILE: ebpf/rss.bpf.skeleton.h:61:
+^Ireturn rss_bpf__open_opts(NULL);$

ERROR: code indent should never use tabs
#417: FILE: ebpf/rss.bpf.skeleton.h:67:
+^Ireturn bpf_object__load_skeleton(obj->skeleton);$

ERROR: code indent should never use tabs
#423: FILE: ebpf/rss.bpf.skeleton.h:73:
+^Istruct rss_bpf *obj;$

ERROR: code indent should never use tabs
#425: FILE: ebpf/rss.bpf.skeleton.h:75:
+^Iobj = rss_bpf__open();$

ERROR: code indent should never use tabs
#426: FILE: ebpf/rss.bpf.skeleton.h:76:
+^Iif (!obj)$

ERROR: braces {} are necessary for all arms of this statement
#426: FILE: ebpf/rss.bpf.skeleton.h:76:
+       if (!obj)
[...]

ERROR: code indent should never use tabs
#427: FILE: ebpf/rss.bpf.skeleton.h:77:
+^I^Ireturn NULL;$

ERROR: code indent should never use tabs
#428: FILE: ebpf/rss.bpf.skeleton.h:78:
+^Iif (rss_bpf__load(obj)) {$

ERROR: code indent should never use tabs
#429: FILE: ebpf/rss.bpf.skeleton.h:79:
+^I^Irss_bpf__destroy(obj);$

ERROR: code indent should never use tabs
#430: FILE: ebpf/rss.bpf.skeleton.h:80:
+^I^Ireturn NULL;$

ERROR: code indent should never use tabs
#431: FILE: ebpf/rss.bpf.skeleton.h:81:
+^I}$

ERROR: code indent should never use tabs
#432: FILE: ebpf/rss.bpf.skeleton.h:82:
+^Ireturn obj;$

ERROR: code indent should never use tabs
#438: FILE: ebpf/rss.bpf.skeleton.h:88:
+^Ireturn bpf_object__attach_skeleton(obj->skeleton);$

ERROR: code indent should never use tabs
#444: FILE: ebpf/rss.bpf.skeleton.h:94:
+^Ireturn bpf_object__detach_skeleton(obj->skeleton);$

ERROR: code indent should never use tabs
#450: FILE: ebpf/rss.bpf.skeleton.h:100:
+^Istruct bpf_object_skeleton *s;$

ERROR: code indent should never use tabs
#452: FILE: ebpf/rss.bpf.skeleton.h:102:
+^Is = (struct bpf_object_skeleton *)calloc(1, sizeof(*s));$

ERROR: code indent should never use tabs
#453: FILE: ebpf/rss.bpf.skeleton.h:103:
+^Iif (!s)$

ERROR: braces {} are necessary for all arms of this statement
#453: FILE: ebpf/rss.bpf.skeleton.h:103:
+       if (!s)
[...]

ERROR: code indent should never use tabs
#454: FILE: ebpf/rss.bpf.skeleton.h:104:
+^I^Ireturn -1;$

ERROR: code indent should never use tabs
#455: FILE: ebpf/rss.bpf.skeleton.h:105:
+^Iobj->skeleton = s;$

ERROR: code indent should never use tabs
#457: FILE: ebpf/rss.bpf.skeleton.h:107:
+^Is->sz = sizeof(*s);$

ERROR: code indent should never use tabs
#458: FILE: ebpf/rss.bpf.skeleton.h:108:
+^Is->name = "rss_bpf";$

ERROR: code indent should never use tabs
#459: FILE: ebpf/rss.bpf.skeleton.h:109:
+^Is->obj = &obj->obj;$

ERROR: code indent should never use tabs
#461: FILE: ebpf/rss.bpf.skeleton.h:111:
+^I/* maps */$

ERROR: code indent should never use tabs
#462: FILE: ebpf/rss.bpf.skeleton.h:112:
+^Is->map_cnt = 3;$

ERROR: code indent should never use tabs
#463: FILE: ebpf/rss.bpf.skeleton.h:113:
+^Is->map_skel_sz = sizeof(*s->maps);$

ERROR: code indent should never use tabs
#464: FILE: ebpf/rss.bpf.skeleton.h:114:
+^Is->maps = (struct bpf_map_skeleton *)calloc(s->map_cnt, s->map_skel_sz);$

ERROR: code indent should never use tabs
#465: FILE: ebpf/rss.bpf.skeleton.h:115:
+^Iif (!s->maps)$

ERROR: braces {} are necessary for all arms of this statement
#465: FILE: ebpf/rss.bpf.skeleton.h:115:
+       if (!s->maps)
[...]

ERROR: code indent should never use tabs
#466: FILE: ebpf/rss.bpf.skeleton.h:116:
+^I^Igoto err;$

ERROR: code indent should never use tabs
#468: FILE: ebpf/rss.bpf.skeleton.h:118:
+^Is->maps[0].name = "tap_rss_map_configurations";$

ERROR: code indent should never use tabs
#469: FILE: ebpf/rss.bpf.skeleton.h:119:
+^Is->maps[0].map = &obj->maps.tap_rss_map_configurations;$

ERROR: code indent should never use tabs
#471: FILE: ebpf/rss.bpf.skeleton.h:121:
+^Is->maps[1].name = "tap_rss_map_indirection_table";$

ERROR: code indent should never use tabs
#472: FILE: ebpf/rss.bpf.skeleton.h:122:
+^Is->maps[1].map = &obj->maps.tap_rss_map_indirection_table;$

ERROR: code indent should never use tabs
#474: FILE: ebpf/rss.bpf.skeleton.h:124:
+^Is->maps[2].name = "tap_rss_map_toeplitz_key";$

ERROR: code indent should never use tabs
#475: FILE: ebpf/rss.bpf.skeleton.h:125:
+^Is->maps[2].map = &obj->maps.tap_rss_map_toeplitz_key;$

ERROR: code indent should never use tabs
#477: FILE: ebpf/rss.bpf.skeleton.h:127:
+^I/* programs */$

ERROR: code indent should never use tabs
#478: FILE: ebpf/rss.bpf.skeleton.h:128:
+^Is->prog_cnt = 1;$

ERROR: code indent should never use tabs
#479: FILE: ebpf/rss.bpf.skeleton.h:129:
+^Is->prog_skel_sz = sizeof(*s->progs);$

WARNING: line over 80 characters
#480: FILE: ebpf/rss.bpf.skeleton.h:130:
+       s->progs = (struct bpf_prog_skeleton *)calloc(s->prog_cnt, s->prog_skel_sz);

ERROR: code indent should never use tabs
#480: FILE: ebpf/rss.bpf.skeleton.h:130:
+^Is->progs = (struct bpf_prog_skeleton *)calloc(s->prog_cnt, s->prog_skel_sz);$

ERROR: code indent should never use tabs
#481: FILE: ebpf/rss.bpf.skeleton.h:131:
+^Iif (!s->progs)$

ERROR: braces {} are necessary for all arms of this statement
#481: FILE: ebpf/rss.bpf.skeleton.h:131:
+       if (!s->progs)
[...]

ERROR: code indent should never use tabs
#482: FILE: ebpf/rss.bpf.skeleton.h:132:
+^I^Igoto err;$

ERROR: code indent should never use tabs
#484: FILE: ebpf/rss.bpf.skeleton.h:134:
+^Is->progs[0].name = "tun_rss_steering_prog";$

ERROR: code indent should never use tabs
#485: FILE: ebpf/rss.bpf.skeleton.h:135:
+^Is->progs[0].prog = &obj->progs.tun_rss_steering_prog;$

ERROR: code indent should never use tabs
#486: FILE: ebpf/rss.bpf.skeleton.h:136:
+^Is->progs[0].link = &obj->links.tun_rss_steering_prog;$

ERROR: code indent should never use tabs
#488: FILE: ebpf/rss.bpf.skeleton.h:138:
+^Is->data_sz = 8088;$

ERROR: code indent should never use tabs
#489: FILE: ebpf/rss.bpf.skeleton.h:139:
+^Is->data = (void *)"\$

ERROR: code indent should never use tabs
#775: FILE: ebpf/rss.bpf.skeleton.h:425:
+^Ireturn 0;$

ERROR: code indent should never use tabs
#777: FILE: ebpf/rss.bpf.skeleton.h:427:
+^Ibpf_object__destroy_skeleton(s);$

ERROR: code indent should never use tabs
#778: FILE: ebpf/rss.bpf.skeleton.h:428:
+^Ireturn -1;$

total: 85 errors, 3 warnings, 779 lines checked

Patch 4/10 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

5/10 Checking commit 905729afbb3f (virtio-net: Added eBPF RSS to virtio-net.)
WARNING: line over 80 characters
#186: FILE: hw/net/virtio-net.c:2868:
+                    warn_report("Can't post-load eBPF RSS - fallback to software RSS");

total: 0 errors, 1 warnings, 214 lines checked

Patch 5/10 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
6/10 Checking commit ab65d982d37d (docs: Added eBPF documentation.)
Use of uninitialized value $acpi_testexpected in string eq at ./scripts/checkpatch.pl line 1529.
WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
#17: 
new file mode 100644

total: 0 errors, 1 warnings, 129 lines checked

Patch 6/10 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
7/10 Checking commit 729e8df02f0b (MAINTAINERS: Added eBPF maintainers information.)
8/10 Checking commit 3dc299dfc4b7 (hw/net/imx_fec: return 0xffff when accessing non-existing PHY)
9/10 Checking commit 4b987f4d63d7 (virtio-net: failover: add missing remove_migration_state_change_notifier())
10/10 Checking commit a34d81aa5179 (tap-bsd: Remove special casing for older OpenBSD releases)
=== OUTPUT END ===

Test command exited with code: 1


The full log is available at
http://patchew.org/logs/1620458319-5670-1-git-send-email-jasowang@redhat.com/testing.checkpatch/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com
Jason Wang May 8, 2021, 7:59 a.m. UTC | #2
On Sat, May 8, 2021 at 3:31 PM <no-reply@patchew.org> wrote:
>
> Patchew URL: https://patchew.org/QEMU/1620458319-5670-1-git-send-email-jasowang@redhat.com/
>
>
>
> Hi,
>
> This series seems to have some coding style problems. See output below for
> more information:
>
> Type: series
> Message-id: 1620458319-5670-1-git-send-email-jasowang@redhat.com
> Subject: [PULL 00/10] Net patches
>
> === TEST SCRIPT BEGIN ===
> #!/bin/bash
> git rev-parse base > /dev/null || exit 0
> git config --local diff.renamelimit 0
> git config --local diff.renames True
> git config --local diff.algorithm histogram
> ./scripts/checkpatch.pl --mailback base..
> === TEST SCRIPT END ===
>
> Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
> From https://github.com/patchew-project/qemu
>  - [tag update]      patchew/1620402803-9237-1-git-send-email-jag.raman@oracle.com -> patchew/1620402803-9237-1-git-send-email-jag.raman@oracle.com
>  * [new tag]         patchew/1620458319-5670-1-git-send-email-jasowang@redhat.com -> patchew/1620458319-5670-1-git-send-email-jasowang@redhat.com
> Switched to a new branch 'test'
> a34d81a tap-bsd: Remove special casing for older OpenBSD releases
> 4b987f4 virtio-net: failover: add missing remove_migration_state_change_notifier()
> 3dc299d hw/net/imx_fec: return 0xffff when accessing non-existing PHY
> 729e8df MAINTAINERS: Added eBPF maintainers information.
> ab65d98 docs: Added eBPF documentation.
> 905729a virtio-net: Added eBPF RSS to virtio-net.
> 5a7d393 ebpf: Added eBPF RSS loader.
> eae9462 ebpf: Added eBPF RSS program.
> b6962be net: Added SetSteeringEBPF method for NetClientState.
> 1207c8e net/tap: Added TUNSETSTEERINGEBPF code.



Andrew, please fix those style issues except for the skeleton which is
generated by bpftool and I will send a new version of pull request.

>
> === OUTPUT BEGIN ===
> 1/10 Checking commit 1207c8e2a076 (net/tap: Added TUNSETSTEERINGEBPF code.)
> 2/10 Checking commit b6962be9ca91 (net: Added SetSteeringEBPF method for NetClientState.)
> 3/10 Checking commit eae94621a4b1 (ebpf: Added eBPF RSS program.)
> Use of uninitialized value $acpi_testexpected in string eq at ./scripts/checkpatch.pl line 1529.
> WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
> #23:
> new file mode 100755
>
> WARNING: line over 80 characters
> #211: FILE: tools/ebpf/rss.bpf.c:157:
> + * According to https://www.iana.org/assignments/ipv6-parameters/ipv6-parameters.xhtml
>
> WARNING: line over 80 characters
> #214: FILE: tools/ebpf/rss.bpf.c:160:
> + * Need to choose reasonable amount of maximum extensions/options we may check to find
>
> WARNING: line over 80 characters
> #281: FILE: tools/ebpf/rss.bpf.c:227:
> +                        *l4_offset + opt_offset + offsetof(struct ipv6_destopt_hao, addr),
>
> total: 0 errors, 4 warnings, 590 lines checked
>
> Patch 3/10 has style problems, please review.  If any of these errors
> are false positives report them to the maintainer, see
> CHECKPATCH in MAINTAINERS.
> 4/10 Checking commit 5a7d3933bfa3 (ebpf: Added eBPF RSS loader.)
> Use of uninitialized value $acpi_testexpected in string eq at ./scripts/checkpatch.pl line 1529.
> WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
> #72:
> new file mode 100644
>
> WARNING: architecture specific defines should be avoided
> #354: FILE: ebpf/rss.bpf.skeleton.h:4:
> +#ifndef __RSS_BPF_SKEL_H__
>
> ERROR: code indent should never use tabs
> #361: FILE: ebpf/rss.bpf.skeleton.h:11:
> +^Istruct bpf_object_skeleton *skeleton;$
>
> ERROR: code indent should never use tabs
> #362: FILE: ebpf/rss.bpf.skeleton.h:12:
> +^Istruct bpf_object *obj;$
>
> ERROR: code indent should never use tabs
> #363: FILE: ebpf/rss.bpf.skeleton.h:13:
> +^Istruct {$
>
> ERROR: code indent should never use tabs
> #364: FILE: ebpf/rss.bpf.skeleton.h:14:
> +^I^Istruct bpf_map *tap_rss_map_configurations;$
>
> ERROR: code indent should never use tabs
> #365: FILE: ebpf/rss.bpf.skeleton.h:15:
> +^I^Istruct bpf_map *tap_rss_map_indirection_table;$
>
> ERROR: code indent should never use tabs
> #366: FILE: ebpf/rss.bpf.skeleton.h:16:
> +^I^Istruct bpf_map *tap_rss_map_toeplitz_key;$
>
> ERROR: code indent should never use tabs
> #367: FILE: ebpf/rss.bpf.skeleton.h:17:
> +^I} maps;$
>
> ERROR: code indent should never use tabs
> #368: FILE: ebpf/rss.bpf.skeleton.h:18:
> +^Istruct {$
>
> ERROR: code indent should never use tabs
> #369: FILE: ebpf/rss.bpf.skeleton.h:19:
> +^I^Istruct bpf_program *tun_rss_steering_prog;$
>
> ERROR: code indent should never use tabs
> #370: FILE: ebpf/rss.bpf.skeleton.h:20:
> +^I} progs;$
>
> ERROR: code indent should never use tabs
> #371: FILE: ebpf/rss.bpf.skeleton.h:21:
> +^Istruct {$
>
> ERROR: code indent should never use tabs
> #372: FILE: ebpf/rss.bpf.skeleton.h:22:
> +^I^Istruct bpf_link *tun_rss_steering_prog;$
>
> ERROR: code indent should never use tabs
> #373: FILE: ebpf/rss.bpf.skeleton.h:23:
> +^I} links;$
>
> ERROR: code indent should never use tabs
> #379: FILE: ebpf/rss.bpf.skeleton.h:29:
> +^Iif (!obj)$
>
> ERROR: braces {} are necessary for all arms of this statement
> #379: FILE: ebpf/rss.bpf.skeleton.h:29:
> +       if (!obj)
> [...]
>
> ERROR: code indent should never use tabs
> #380: FILE: ebpf/rss.bpf.skeleton.h:30:
> +^I^Ireturn;$
>
> ERROR: code indent should never use tabs
> #381: FILE: ebpf/rss.bpf.skeleton.h:31:
> +^Iif (obj->skeleton)$
>
> ERROR: braces {} are necessary for all arms of this statement
> #381: FILE: ebpf/rss.bpf.skeleton.h:31:
> +       if (obj->skeleton)
> [...]
>
> ERROR: code indent should never use tabs
> #382: FILE: ebpf/rss.bpf.skeleton.h:32:
> +^I^Ibpf_object__destroy_skeleton(obj->skeleton);$
>
> ERROR: code indent should never use tabs
> #383: FILE: ebpf/rss.bpf.skeleton.h:33:
> +^Ifree(obj);$
>
> ERROR: code indent should never use tabs
> #392: FILE: ebpf/rss.bpf.skeleton.h:42:
> +^Istruct rss_bpf *obj;$
>
> ERROR: code indent should never use tabs
> #394: FILE: ebpf/rss.bpf.skeleton.h:44:
> +^Iobj = (struct rss_bpf *)calloc(1, sizeof(*obj));$
>
> ERROR: code indent should never use tabs
> #395: FILE: ebpf/rss.bpf.skeleton.h:45:
> +^Iif (!obj)$
>
> ERROR: braces {} are necessary for all arms of this statement
> #395: FILE: ebpf/rss.bpf.skeleton.h:45:
> +       if (!obj)
> [...]
>
> ERROR: code indent should never use tabs
> #396: FILE: ebpf/rss.bpf.skeleton.h:46:
> +^I^Ireturn NULL;$
>
> ERROR: code indent should never use tabs
> #397: FILE: ebpf/rss.bpf.skeleton.h:47:
> +^Iif (rss_bpf__create_skeleton(obj))$
>
> ERROR: braces {} are necessary for all arms of this statement
> #397: FILE: ebpf/rss.bpf.skeleton.h:47:
> +       if (rss_bpf__create_skeleton(obj))
> [...]
>
> ERROR: code indent should never use tabs
> #398: FILE: ebpf/rss.bpf.skeleton.h:48:
> +^I^Igoto err;$
>
> ERROR: code indent should never use tabs
> #399: FILE: ebpf/rss.bpf.skeleton.h:49:
> +^Iif (bpf_object__open_skeleton(obj->skeleton, opts))$
>
> ERROR: braces {} are necessary for all arms of this statement
> #399: FILE: ebpf/rss.bpf.skeleton.h:49:
> +       if (bpf_object__open_skeleton(obj->skeleton, opts))
> [...]
>
> ERROR: code indent should never use tabs
> #400: FILE: ebpf/rss.bpf.skeleton.h:50:
> +^I^Igoto err;$
>
> ERROR: code indent should never use tabs
> #402: FILE: ebpf/rss.bpf.skeleton.h:52:
> +^Ireturn obj;$
>
> ERROR: code indent should never use tabs
> #404: FILE: ebpf/rss.bpf.skeleton.h:54:
> +^Irss_bpf__destroy(obj);$
>
> ERROR: code indent should never use tabs
> #405: FILE: ebpf/rss.bpf.skeleton.h:55:
> +^Ireturn NULL;$
>
> ERROR: code indent should never use tabs
> #411: FILE: ebpf/rss.bpf.skeleton.h:61:
> +^Ireturn rss_bpf__open_opts(NULL);$
>
> ERROR: code indent should never use tabs
> #417: FILE: ebpf/rss.bpf.skeleton.h:67:
> +^Ireturn bpf_object__load_skeleton(obj->skeleton);$
>
> ERROR: code indent should never use tabs
> #423: FILE: ebpf/rss.bpf.skeleton.h:73:
> +^Istruct rss_bpf *obj;$
>
> ERROR: code indent should never use tabs
> #425: FILE: ebpf/rss.bpf.skeleton.h:75:
> +^Iobj = rss_bpf__open();$
>
> ERROR: code indent should never use tabs
> #426: FILE: ebpf/rss.bpf.skeleton.h:76:
> +^Iif (!obj)$
>
> ERROR: braces {} are necessary for all arms of this statement
> #426: FILE: ebpf/rss.bpf.skeleton.h:76:
> +       if (!obj)
> [...]
>
> ERROR: code indent should never use tabs
> #427: FILE: ebpf/rss.bpf.skeleton.h:77:
> +^I^Ireturn NULL;$
>
> ERROR: code indent should never use tabs
> #428: FILE: ebpf/rss.bpf.skeleton.h:78:
> +^Iif (rss_bpf__load(obj)) {$
>
> ERROR: code indent should never use tabs
> #429: FILE: ebpf/rss.bpf.skeleton.h:79:
> +^I^Irss_bpf__destroy(obj);$
>
> ERROR: code indent should never use tabs
> #430: FILE: ebpf/rss.bpf.skeleton.h:80:
> +^I^Ireturn NULL;$
>
> ERROR: code indent should never use tabs
> #431: FILE: ebpf/rss.bpf.skeleton.h:81:
> +^I}$
>
> ERROR: code indent should never use tabs
> #432: FILE: ebpf/rss.bpf.skeleton.h:82:
> +^Ireturn obj;$
>
> ERROR: code indent should never use tabs
> #438: FILE: ebpf/rss.bpf.skeleton.h:88:
> +^Ireturn bpf_object__attach_skeleton(obj->skeleton);$
>
> ERROR: code indent should never use tabs
> #444: FILE: ebpf/rss.bpf.skeleton.h:94:
> +^Ireturn bpf_object__detach_skeleton(obj->skeleton);$
>
> ERROR: code indent should never use tabs
> #450: FILE: ebpf/rss.bpf.skeleton.h:100:
> +^Istruct bpf_object_skeleton *s;$
>
> ERROR: code indent should never use tabs
> #452: FILE: ebpf/rss.bpf.skeleton.h:102:
> +^Is = (struct bpf_object_skeleton *)calloc(1, sizeof(*s));$
>
> ERROR: code indent should never use tabs
> #453: FILE: ebpf/rss.bpf.skeleton.h:103:
> +^Iif (!s)$
>
> ERROR: braces {} are necessary for all arms of this statement
> #453: FILE: ebpf/rss.bpf.skeleton.h:103:
> +       if (!s)
> [...]
>
> ERROR: code indent should never use tabs
> #454: FILE: ebpf/rss.bpf.skeleton.h:104:
> +^I^Ireturn -1;$
>
> ERROR: code indent should never use tabs
> #455: FILE: ebpf/rss.bpf.skeleton.h:105:
> +^Iobj->skeleton = s;$
>
> ERROR: code indent should never use tabs
> #457: FILE: ebpf/rss.bpf.skeleton.h:107:
> +^Is->sz = sizeof(*s);$
>
> ERROR: code indent should never use tabs
> #458: FILE: ebpf/rss.bpf.skeleton.h:108:
> +^Is->name = "rss_bpf";$
>
> ERROR: code indent should never use tabs
> #459: FILE: ebpf/rss.bpf.skeleton.h:109:
> +^Is->obj = &obj->obj;$
>
> ERROR: code indent should never use tabs
> #461: FILE: ebpf/rss.bpf.skeleton.h:111:
> +^I/* maps */$
>
> ERROR: code indent should never use tabs
> #462: FILE: ebpf/rss.bpf.skeleton.h:112:
> +^Is->map_cnt = 3;$
>
> ERROR: code indent should never use tabs
> #463: FILE: ebpf/rss.bpf.skeleton.h:113:
> +^Is->map_skel_sz = sizeof(*s->maps);$
>
> ERROR: code indent should never use tabs
> #464: FILE: ebpf/rss.bpf.skeleton.h:114:
> +^Is->maps = (struct bpf_map_skeleton *)calloc(s->map_cnt, s->map_skel_sz);$
>
> ERROR: code indent should never use tabs
> #465: FILE: ebpf/rss.bpf.skeleton.h:115:
> +^Iif (!s->maps)$
>
> ERROR: braces {} are necessary for all arms of this statement
> #465: FILE: ebpf/rss.bpf.skeleton.h:115:
> +       if (!s->maps)
> [...]
>
> ERROR: code indent should never use tabs
> #466: FILE: ebpf/rss.bpf.skeleton.h:116:
> +^I^Igoto err;$
>
> ERROR: code indent should never use tabs
> #468: FILE: ebpf/rss.bpf.skeleton.h:118:
> +^Is->maps[0].name = "tap_rss_map_configurations";$
>
> ERROR: code indent should never use tabs
> #469: FILE: ebpf/rss.bpf.skeleton.h:119:
> +^Is->maps[0].map = &obj->maps.tap_rss_map_configurations;$
>
> ERROR: code indent should never use tabs
> #471: FILE: ebpf/rss.bpf.skeleton.h:121:
> +^Is->maps[1].name = "tap_rss_map_indirection_table";$
>
> ERROR: code indent should never use tabs
> #472: FILE: ebpf/rss.bpf.skeleton.h:122:
> +^Is->maps[1].map = &obj->maps.tap_rss_map_indirection_table;$
>
> ERROR: code indent should never use tabs
> #474: FILE: ebpf/rss.bpf.skeleton.h:124:
> +^Is->maps[2].name = "tap_rss_map_toeplitz_key";$
>
> ERROR: code indent should never use tabs
> #475: FILE: ebpf/rss.bpf.skeleton.h:125:
> +^Is->maps[2].map = &obj->maps.tap_rss_map_toeplitz_key;$
>
> ERROR: code indent should never use tabs
> #477: FILE: ebpf/rss.bpf.skeleton.h:127:
> +^I/* programs */$
>
> ERROR: code indent should never use tabs
> #478: FILE: ebpf/rss.bpf.skeleton.h:128:
> +^Is->prog_cnt = 1;$
>
> ERROR: code indent should never use tabs
> #479: FILE: ebpf/rss.bpf.skeleton.h:129:
> +^Is->prog_skel_sz = sizeof(*s->progs);$
>
> WARNING: line over 80 characters
> #480: FILE: ebpf/rss.bpf.skeleton.h:130:
> +       s->progs = (struct bpf_prog_skeleton *)calloc(s->prog_cnt, s->prog_skel_sz);
>
> ERROR: code indent should never use tabs
> #480: FILE: ebpf/rss.bpf.skeleton.h:130:
> +^Is->progs = (struct bpf_prog_skeleton *)calloc(s->prog_cnt, s->prog_skel_sz);$
>
> ERROR: code indent should never use tabs
> #481: FILE: ebpf/rss.bpf.skeleton.h:131:
> +^Iif (!s->progs)$
>
> ERROR: braces {} are necessary for all arms of this statement
> #481: FILE: ebpf/rss.bpf.skeleton.h:131:
> +       if (!s->progs)
> [...]
>
> ERROR: code indent should never use tabs
> #482: FILE: ebpf/rss.bpf.skeleton.h:132:
> +^I^Igoto err;$
>
> ERROR: code indent should never use tabs
> #484: FILE: ebpf/rss.bpf.skeleton.h:134:
> +^Is->progs[0].name = "tun_rss_steering_prog";$
>
> ERROR: code indent should never use tabs
> #485: FILE: ebpf/rss.bpf.skeleton.h:135:
> +^Is->progs[0].prog = &obj->progs.tun_rss_steering_prog;$
>
> ERROR: code indent should never use tabs
> #486: FILE: ebpf/rss.bpf.skeleton.h:136:
> +^Is->progs[0].link = &obj->links.tun_rss_steering_prog;$
>
> ERROR: code indent should never use tabs
> #488: FILE: ebpf/rss.bpf.skeleton.h:138:
> +^Is->data_sz = 8088;$
>
> ERROR: code indent should never use tabs
> #489: FILE: ebpf/rss.bpf.skeleton.h:139:
> +^Is->data = (void *)"\$
>
> ERROR: code indent should never use tabs
> #775: FILE: ebpf/rss.bpf.skeleton.h:425:
> +^Ireturn 0;$
>
> ERROR: code indent should never use tabs
> #777: FILE: ebpf/rss.bpf.skeleton.h:427:
> +^Ibpf_object__destroy_skeleton(s);$
>
> ERROR: code indent should never use tabs
> #778: FILE: ebpf/rss.bpf.skeleton.h:428:
> +^Ireturn -1;$
>
> total: 85 errors, 3 warnings, 779 lines checked
>
> Patch 4/10 has style problems, please review.  If any of these errors
> are false positives report them to the maintainer, see
> CHECKPATCH in MAINTAINERS.
>
> 5/10 Checking commit 905729afbb3f (virtio-net: Added eBPF RSS to virtio-net.)
> WARNING: line over 80 characters
> #186: FILE: hw/net/virtio-net.c:2868:
> +                    warn_report("Can't post-load eBPF RSS - fallback to software RSS");
>
> total: 0 errors, 1 warnings, 214 lines checked
>
> Patch 5/10 has style problems, please review.  If any of these errors
> are false positives report them to the maintainer, see
> CHECKPATCH in MAINTAINERS.
> 6/10 Checking commit ab65d982d37d (docs: Added eBPF documentation.)
> Use of uninitialized value $acpi_testexpected in string eq at ./scripts/checkpatch.pl line 1529.
> WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
> #17:
> new file mode 100644
>
> total: 0 errors, 1 warnings, 129 lines checked
>
> Patch 6/10 has style problems, please review.  If any of these errors
> are false positives report them to the maintainer, see
> CHECKPATCH in MAINTAINERS.
> 7/10 Checking commit 729e8df02f0b (MAINTAINERS: Added eBPF maintainers information.)
> 8/10 Checking commit 3dc299dfc4b7 (hw/net/imx_fec: return 0xffff when accessing non-existing PHY)
> 9/10 Checking commit 4b987f4d63d7 (virtio-net: failover: add missing remove_migration_state_change_notifier())
> 10/10 Checking commit a34d81aa5179 (tap-bsd: Remove special casing for older OpenBSD releases)
> === OUTPUT END ===
>
> Test command exited with code: 1
>
>
> The full log is available at
> http://patchew.org/logs/1620458319-5670-1-git-send-email-jasowang@redhat.com/testing.checkpatch/?type=message.
> ---
> Email generated automatically by Patchew [https://patchew.org/].
> Please send your feedback to patchew-devel@redhat.com
Peter Maydell May 11, 2021, 8:20 p.m. UTC | #3
On Sat, 8 May 2021 at 08:18, Jason Wang <jasowang@redhat.com> wrote:
>
> The following changes since commit d90f154867ec0ec22fd719164b88716e8fd48672:
>
>   Merge remote-tracking branch 'remotes/dg-gitlab/tags/ppc-for-6.1-20210504' into staging (2021-05-05 20:29:14 +0100)
>
> are available in the git repository at:
>
>   https://github.com/jasowang/qemu.git tags/net-pull-request
>
> for you to fetch changes up to 2bdeb0c2564c36b218ac73e21d7a6f6accb49091:
>
>   tap-bsd: Remove special casing for older OpenBSD releases (2021-05-08 13:59:12 +0800)
>
> ----------------------------------------------------------------
>
> ---------------------------------------------------------------

This causes meson to emit a warning on one of my build machines:

Run-time dependency libkeyutils found: NO (tried pkgconfig)
Checking for function "gettid" : NO (cached)
Run-time dependency fuse3 found: NO (tried pkgconfig)
Found CMake: /usr/bin/cmake (2.8.12.2)
WARNING: The version of CMake /usr/bin/cmake is 2.8.12.2 but version
>=3.4 is required
Run-time dependency libbpf found: NO (tried pkgconfig and cmake)
Has header "linux/btrfs.h" : YES (cached)
Has header "libdrm/drm.h" : YES (cached)


We shouldn't be looking for cmake at all.

thanks
-- PMM
Jason Wang May 12, 2021, 2:53 a.m. UTC | #4
在 2021/5/12 上午4:20, Peter Maydell 写道:
> On Sat, 8 May 2021 at 08:18, Jason Wang <jasowang@redhat.com> wrote:
>> The following changes since commit d90f154867ec0ec22fd719164b88716e8fd48672:
>>
>>    Merge remote-tracking branch 'remotes/dg-gitlab/tags/ppc-for-6.1-20210504' into staging (2021-05-05 20:29:14 +0100)
>>
>> are available in the git repository at:
>>
>>    https://github.com/jasowang/qemu.git tags/net-pull-request
>>
>> for you to fetch changes up to 2bdeb0c2564c36b218ac73e21d7a6f6accb49091:
>>
>>    tap-bsd: Remove special casing for older OpenBSD releases (2021-05-08 13:59:12 +0800)
>>
>> ----------------------------------------------------------------
>>
>> ---------------------------------------------------------------
> This causes meson to emit a warning on one of my build machines:
>
> Run-time dependency libkeyutils found: NO (tried pkgconfig)
> Checking for function "gettid" : NO (cached)
> Run-time dependency fuse3 found: NO (tried pkgconfig)
> Found CMake: /usr/bin/cmake (2.8.12.2)
> WARNING: The version of CMake /usr/bin/cmake is 2.8.12.2 but version
>> =3.4 is required
> Run-time dependency libbpf found: NO (tried pkgconfig and cmake)
> Has header "linux/btrfs.h" : YES (cached)
> Has header "libdrm/drm.h" : YES (cached)
>
>
> We shouldn't be looking for cmake at all.
>
> thanks
> -- PMM


Right, the reason is method is not specified when detecting libbpf so 
meson may try cmake:

libbpf = dependency('libbpf', required: get_option('bpf'),)

Andrew, want to repost the series (with possible style warnings)?

Thanks