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
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
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
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
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
在 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
© 2016 - 2026 Red Hat, Inc.