Branch: refs/heads/staging
  Home:   https://github.com/qemu/qemu
  Commit: 52a7ff526964e7810ec1ccc71efbdd60952dd20b
      
https://github.com/qemu/qemu/commit/52a7ff526964e7810ec1ccc71efbdd60952dd20b
  Author: Akihiko Odaki <[email protected]>
  Date:   2024-06-04 (Tue, 04 Jun 2024)

  Changed paths:
    M net/tap-bsd.c
    M net/tap-linux.c
    M net/tap-solaris.c
    M net/tap-stub.c
    M net/tap.c
    M net/tap_int.h

  Log Message:
  -----------
  tap: Remove tap_probe_vnet_hdr_len()

It was necessary since an Linux older than 2.6.35 may implement the
virtio-net header but may not allow to change its length. Remove it
since such an old Linux is no longer supported.

Signed-off-by: Akihiko Odaki <[email protected]>
Acked-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Jason Wang <[email protected]>


  Commit: 4b52d63249a508dd927222ffac1a868d38681fc5
      
https://github.com/qemu/qemu/commit/4b52d63249a508dd927222ffac1a868d38681fc5
  Author: Akihiko Odaki <[email protected]>
  Date:   2024-06-04 (Tue, 04 Jun 2024)

  Changed paths:
    M hw/net/e1000e.c
    M hw/net/igb.c
    M hw/net/net_tx_pkt.c
    M hw/net/virtio-net.c
    M hw/net/vmxnet3.c
    M include/net/net.h
    M net/dump.c
    M net/net.c
    M net/netmap.c
    M net/tap.c

  Log Message:
  -----------
  tap: Remove qemu_using_vnet_hdr()

Since qemu_set_vnet_hdr_len() is always called when
qemu_using_vnet_hdr() is called, we can merge them and save some code.

For consistency, express that the virtio-net header is not in use by
returning 0 with qemu_get_vnet_hdr_len() instead of having a dedicated
function, qemu_get_using_vnet_hdr().

Signed-off-by: Akihiko Odaki <[email protected]>
Signed-off-by: Jason Wang <[email protected]>


  Commit: a67753710d5fe6c0eef95229ff5fd9cafb78d862
      
https://github.com/qemu/qemu/commit/a67753710d5fe6c0eef95229ff5fd9cafb78d862
  Author: Akihiko Odaki <[email protected]>
  Date:   2024-06-04 (Tue, 04 Jun 2024)

  Changed paths:
    M net/net.c
    M net/tap.c

  Log Message:
  -----------
  net: Move virtio-net header length assertion

The virtio-net header length assertion should happen for any clients.

Signed-off-by: Akihiko Odaki <[email protected]>
Signed-off-by: Jason Wang <[email protected]>


  Commit: b9ad513e187669db8f5ac238028f6bf25a17c641
      
https://github.com/qemu/qemu/commit/b9ad513e187669db8f5ac238028f6bf25a17c641
  Author: Akihiko Odaki <[email protected]>
  Date:   2024-06-04 (Tue, 04 Jun 2024)

  Changed paths:
    M include/net/net.h
    M net/net.c
    M net/tap.c

  Log Message:
  -----------
  net: Remove receive_raw()

While netmap implements virtio-net header, it does not implement
receive_raw(). Instead of implementing receive_raw for netmap, add
virtio-net headers in the common code and use receive_iov()/receive()
instead. This also fixes the buffer size for the virtio-net header.

Fixes: fbbdbddec0 ("tap: allow extended virtio header with hash info")
Signed-off-by: Akihiko Odaki <[email protected]>
Signed-off-by: Jason Wang <[email protected]>


  Commit: 336a058b26bb5229070f1e10ba0f63ae35420adc
      
https://github.com/qemu/qemu/commit/336a058b26bb5229070f1e10ba0f63ae35420adc
  Author: Akihiko Odaki <[email protected]>
  Date:   2024-06-04 (Tue, 04 Jun 2024)

  Changed paths:
    M net/tap.c

  Log Message:
  -----------
  tap: Call tap_receive_iov() from tap_receive()

This will save duplicate logic found in both of tap_receive_iov() and
tap_receive().

Suggested-by: "Zhang, Chen" <[email protected]>
Signed-off-by: Akihiko Odaki <[email protected]>
Signed-off-by: Jason Wang <[email protected]>


  Commit: 77db537995be8bcab215a99bc9c1b51066b56557
      
https://github.com/qemu/qemu/commit/77db537995be8bcab215a99bc9c1b51066b56557
  Author: Akihiko Odaki <[email protected]>
  Date:   2024-06-04 (Tue, 04 Jun 2024)

  Changed paths:
    M net/tap.c

  Log Message:
  -----------
  tap: Shrink zeroed virtio-net header

tap prepends a zeroed virtio-net header when writing a packet to a
tap with virtio-net header enabled but not in use. This only happens
when s->host_vnet_hdr_len == sizeof(struct virtio_net_hdr).

Signed-off-by: Akihiko Odaki <[email protected]>
Signed-off-by: Jason Wang <[email protected]>


  Commit: 283be5966eb7ec18fda3e95c979be620dfb8c72a
      
https://github.com/qemu/qemu/commit/283be5966eb7ec18fda3e95c979be620dfb8c72a
  Author: Akihiko Odaki <[email protected]>
  Date:   2024-06-04 (Tue, 04 Jun 2024)

  Changed paths:
    M hw/net/virtio-net.c

  Log Message:
  -----------
  virtio-net: Do not propagate ebpf-rss-fds errors

Propagating ebpf-rss-fds errors has several problems.

First, it makes device realization fail and disables the fallback to the
conventional eBPF loading.

Second, it leaks memory by making device realization fail without
freeing memory already allocated.

Third, the convention is to set an error when a function returns false,
but virtio_net_load_ebpf_fds() and virtio_net_load_ebpf() returns false
without setting an error, which is confusing.

Remove the propagation to fix these problems.

Fixes: 0524ea0510a3 ("ebpf: Added eBPF initialization by fds.")
Signed-off-by: Akihiko Odaki <[email protected]>
Signed-off-by: Jason Wang <[email protected]>


  Commit: 8c49756825dab430b17648637735c2736d23f778
      
https://github.com/qemu/qemu/commit/8c49756825dab430b17648637735c2736d23f778
  Author: Akihiko Odaki <[email protected]>
  Date:   2024-06-04 (Tue, 04 Jun 2024)

  Changed paths:
    M hw/net/virtio-net.c

  Log Message:
  -----------
  virtio-net: Add only one queue pair when realizing

Multiqueue usage is not negotiated yet when realizing. If more than
one queue is added and the guest never requests to enable multiqueue,
the extra queues will not be deleted when unrealizing and leak.

Fixes: f9d6dbf0bf6e ("virtio-net: remove virtio queues if the guest doesn't 
support multiqueue")
Signed-off-by: Akihiko Odaki <[email protected]>
Signed-off-by: Jason Wang <[email protected]>


  Commit: ad57f700f469ba1b621274053973f76f8f97cf83
      
https://github.com/qemu/qemu/commit/ad57f700f469ba1b621274053973f76f8f97cf83
  Author: Akihiko Odaki <[email protected]>
  Date:   2024-06-04 (Tue, 04 Jun 2024)

  Changed paths:
    M hw/net/virtio-net.c

  Log Message:
  -----------
  virtio-net: Copy header only when necessary

The copied header is only used for byte swapping.

Signed-off-by: Akihiko Odaki <[email protected]>
Signed-off-by: Jason Wang <[email protected]>


  Commit: 942f420e5cef8cba5daffd6827e6e55e2d17de76
      
https://github.com/qemu/qemu/commit/942f420e5cef8cba5daffd6827e6e55e2d17de76
  Author: Akihiko Odaki <[email protected]>
  Date:   2024-06-04 (Tue, 04 Jun 2024)

  Changed paths:
    M hw/net/virtio-net.c

  Log Message:
  -----------
  virtio-net: Shrink header byte swapping buffer

Byte swapping is only performed for the part of header shared with the
legacy standard and the buffer only needs to cover it.

Signed-off-by: Akihiko Odaki <[email protected]>
Signed-off-by: Jason Wang <[email protected]>


  Commit: cef776c03a24576c5913f7e4427b133766531744
      
https://github.com/qemu/qemu/commit/cef776c03a24576c5913f7e4427b133766531744
  Author: Akihiko Odaki <[email protected]>
  Date:   2024-06-04 (Tue, 04 Jun 2024)

  Changed paths:
    M hw/net/virtio-net.c

  Log Message:
  -----------
  virtio-net: Disable RSS on reset

RSS is disabled by default.

Fixes: 590790297c ("virtio-net: implement RSS configuration command")
Signed-off-by: Akihiko Odaki <[email protected]>
Reviewed-by: Michael Tokarev <[email protected]>
Signed-off-by: Jason Wang <[email protected]>


  Commit: 0e07198ea3d899b0e7946b1a3d2a439d53415289
      
https://github.com/qemu/qemu/commit/0e07198ea3d899b0e7946b1a3d2a439d53415289
  Author: Akihiko Odaki <[email protected]>
  Date:   2024-06-04 (Tue, 04 Jun 2024)

  Changed paths:
    M hw/net/virtio-net.c

  Log Message:
  -----------
  virtio-net: Unify the logic to update NIC state for RSS

The code to attach or detach the eBPF program to RSS were duplicated so
unify them into one function to save some code.

Signed-off-by: Akihiko Odaki <[email protected]>
Signed-off-by: Jason Wang <[email protected]>


  Commit: 13d40aa88bdc3eed480a4a4156dc0b84e06d3da7
      
https://github.com/qemu/qemu/commit/13d40aa88bdc3eed480a4a4156dc0b84e06d3da7
  Author: Akihiko Odaki <[email protected]>
  Date:   2024-06-04 (Tue, 04 Jun 2024)

  Changed paths:
    M hw/net/virtio-net.c

  Log Message:
  -----------
  virtio-net: Always set populate_hash

The member is not cleared during reset so may have a stale value.

Signed-off-by: Akihiko Odaki <[email protected]>
Signed-off-by: Jason Wang <[email protected]>


  Commit: a4c960eedcd2c68ff784fb4d4cb8ddd5bff8814f
      
https://github.com/qemu/qemu/commit/a4c960eedcd2c68ff784fb4d4cb8ddd5bff8814f
  Author: Akihiko Odaki <[email protected]>
  Date:   2024-06-04 (Tue, 04 Jun 2024)

  Changed paths:
    M hw/net/virtio-net.c

  Log Message:
  -----------
  virtio-net: Do not write hashes to peer buffer

The peer buffer is qualified with const and not meant to be modified.

Signed-off-by: Akihiko Odaki <[email protected]>
Signed-off-by: Jason Wang <[email protected]>


  Commit: 72fa42cfca7060fab00c534e71fc850b194a4c6d
      
https://github.com/qemu/qemu/commit/72fa42cfca7060fab00c534e71fc850b194a4c6d
  Author: Akihiko Odaki <[email protected]>
  Date:   2024-06-04 (Tue, 04 Jun 2024)

  Changed paths:
    M ebpf/rss.bpf.skeleton.h
    M tools/ebpf/rss.bpf.c

  Log Message:
  -----------
  ebpf: Fix RSS error handling

calculate_rss_hash() was using hash value 0 to tell if it calculated
a hash, but the hash value may be 0 on a rare occasion. Have a
distinct bool value for correctness.

Fixes: f3fa412de2 ("ebpf: Added eBPF RSS program.")
Signed-off-by: Akihiko Odaki <[email protected]>
Signed-off-by: Jason Wang <[email protected]>


  Commit: 8dc8220e23a6d16415b6a0a46785224e8bc7edd1
      
https://github.com/qemu/qemu/commit/8dc8220e23a6d16415b6a0a46785224e8bc7edd1
  Author: Akihiko Odaki <[email protected]>
  Date:   2024-06-04 (Tue, 04 Jun 2024)

  Changed paths:
    M ebpf/rss.bpf.skeleton.h
    M tools/ebpf/rss.bpf.c

  Log Message:
  -----------
  ebpf: Return 0 when configuration fails

The kernel interprets the returned value as an unsigned 32-bit so -1
will mean queue 4294967295, which is awkward. Return 0 instead.

Signed-off-by: Akihiko Odaki <[email protected]>
Signed-off-by: Jason Wang <[email protected]>


  Commit: f5c69e7ab2507553d1a2780e41d924c32dec3c44
      
https://github.com/qemu/qemu/commit/f5c69e7ab2507553d1a2780e41d924c32dec3c44
  Author: Akihiko Odaki <[email protected]>
  Date:   2024-06-04 (Tue, 04 Jun 2024)

  Changed paths:
    M tools/ebpf/rss.bpf.c

  Log Message:
  -----------
  ebpf: Refactor tun_rss_steering_prog()

This saves branches and makes later BPF program changes easier.

Signed-off-by: Akihiko Odaki <[email protected]>
Signed-off-by: Jason Wang <[email protected]>


  Commit: 6832aa80a193d04aaf8e89a64e1825a158290057
      
https://github.com/qemu/qemu/commit/6832aa80a193d04aaf8e89a64e1825a158290057
  Author: Akihiko Odaki <[email protected]>
  Date:   2024-06-04 (Tue, 04 Jun 2024)

  Changed paths:
    M tools/ebpf/Makefile.ebpf

  Log Message:
  -----------
  ebpf: Add a separate target for skeleton

This generalizes the rule to generate the skeleton and allows to add
another.

Signed-off-by: Akihiko Odaki <[email protected]>
Signed-off-by: Jason Wang <[email protected]>


  Commit: 2c3e4e2de699cd4d9f6c71f30a22d8f125cd6164
      
https://github.com/qemu/qemu/commit/2c3e4e2de699cd4d9f6c71f30a22d8f125cd6164
  Author: Alexey Dobriyan <[email protected]>
  Date:   2024-06-04 (Tue, 04 Jun 2024)

  Changed paths:
    M hw/net/virtio-net.c

  Log Message:
  -----------
  virtio-net: drop too short packets early

Reproducer from https://gitlab.com/qemu-project/qemu/-/issues/1451
creates small packet (1 segment, len = 10 == n->guest_hdr_len),
then destroys queue.

"if (n->host_hdr_len != n->guest_hdr_len)" is triggered, if body creates
zero length/zero segment packet as there is nothing after guest header.

qemu_sendv_packet_async() tries to send it.

slirp discards it because it is smaller than Ethernet header,
but returns 0 because tx hooks are supposed to return total length of data.

0 is propagated upwards and is interpreted as "packet has been sent"
which is terrible because queue is being destroyed, nobody is waiting for TX
to complete and assert it triggered.

Fix is discard such empty packets instead of sending them.

Length 1 packets will go via different codepath:

        virtqueue_push(q->tx_vq, elem, 0);
        virtio_notify(vdev, q->tx_vq);
        g_free(elem);

and aren't problematic.

Signed-off-by: Alexey Dobriyan <[email protected]>
Signed-off-by: Jason Wang <[email protected]>


  Commit: dcab53611191f50cf4feabc1d8794d04afe53407
      
https://github.com/qemu/qemu/commit/dcab53611191f50cf4feabc1d8794d04afe53407
  Author: Andrew Melnychenko <[email protected]>
  Date:   2024-06-04 (Tue, 04 Jun 2024)

  Changed paths:
    M ebpf/ebpf_rss.c
    A ebpf/trace.h

  Log Message:
  -----------
  ebpf: Added traces back. Changed source set for eBPF to 'system'.

There was an issue with Qemu build with "--disable-system".
The traces could be generated and the build fails.
The traces were 'cut out' for previous patches, and overall,
the 'system' source set should be used like in pre-'eBPF blob' patches.

Signed-off-by: Andrew Melnychenko <[email protected]>
Signed-off-by: Jason Wang <[email protected]>


  Commit: 6e47f7cfcd78ed8e6f192cb0a4c61f209d0c2aaf
      
https://github.com/qemu/qemu/commit/6e47f7cfcd78ed8e6f192cb0a4c61f209d0c2aaf
  Author: Richard Henderson <[email protected]>
  Date:   2024-06-04 (Tue, 04 Jun 2024)

  Changed paths:
    M ebpf/ebpf_rss.c
    M ebpf/rss.bpf.skeleton.h
    A ebpf/trace.h
    M hw/net/e1000e.c
    M hw/net/igb.c
    M hw/net/net_tx_pkt.c
    M hw/net/virtio-net.c
    M hw/net/vmxnet3.c
    M include/net/net.h
    M net/dump.c
    M net/net.c
    M net/netmap.c
    M net/tap-bsd.c
    M net/tap-linux.c
    M net/tap-solaris.c
    M net/tap-stub.c
    M net/tap.c
    M net/tap_int.h
    M tools/ebpf/Makefile.ebpf
    M tools/ebpf/rss.bpf.c

  Log Message:
  -----------
  Merge tag 'net-pull-request' of https://github.com/jasowang/qemu into staging

# -----BEGIN PGP SIGNATURE-----
#
# iQEzBAABCAAdFiEEIV1G9IJGaJ7HfzVi7wSWWzmNYhEFAmZewo4ACgkQ7wSWWzmN
# YhHhxgf/ZaECxru4fP8wi34XdSG/PR+BF+W5M9gZIRGrHg3vIf3/LRTpZTDccbRN
# Qpwtypr9O6/AWG9Os80rn7alsmMDxN8PDDNLa9T3wf5pJUQSyQ87Yy0MiuTNPSKD
# HKYUIfIlbFCM5WUW4huMmg98gKTgnzZMqOoRyMFZitbkR59qCm+Exws4HtXvCH68
# 3k4lgvnFccmzO9iIzaOUIPs+Yf04Kw/FrY0Q/6nypvqbF2W80Md6w02JMQuTLwdF
# Guxeg/n6g0NLvCBbkjiM2VWfTaWJYbwFSwRTAMxM/geqh7qAgGsmD0N5lPlgqRDy
# uAy2GvFyrwzcD0lYqf0/fRK0Go0HPA==
# =J70K
# -----END PGP SIGNATURE-----
# gpg: Signature made Tue 04 Jun 2024 02:30:22 AM CDT
# gpg:                using RSA key 215D46F48246689EC77F3562EF04965B398D6211
# gpg: Good signature from "Jason Wang (Jason Wang on RedHat) 
<[email protected]>" [undefined]
# gpg: WARNING: This key is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: 215D 46F4 8246 689E C77F  3562 EF04 965B 398D 6211

* tag 'net-pull-request' of https://github.com/jasowang/qemu:
  ebpf: Added traces back. Changed source set for eBPF to 'system'.
  virtio-net: drop too short packets early
  ebpf: Add a separate target for skeleton
  ebpf: Refactor tun_rss_steering_prog()
  ebpf: Return 0 when configuration fails
  ebpf: Fix RSS error handling
  virtio-net: Do not write hashes to peer buffer
  virtio-net: Always set populate_hash
  virtio-net: Unify the logic to update NIC state for RSS
  virtio-net: Disable RSS on reset
  virtio-net: Shrink header byte swapping buffer
  virtio-net: Copy header only when necessary
  virtio-net: Add only one queue pair when realizing
  virtio-net: Do not propagate ebpf-rss-fds errors
  tap: Shrink zeroed virtio-net header
  tap: Call tap_receive_iov() from tap_receive()
  net: Remove receive_raw()
  net: Move virtio-net header length assertion
  tap: Remove qemu_using_vnet_hdr()
  tap: Remove tap_probe_vnet_hdr_len()

Signed-off-by: Richard Henderson <[email protected]>


Compare: https://github.com/qemu/qemu/compare/e2f48260ebe5...6e47f7cfcd78

To unsubscribe from these emails, change your notification settings at 
https://github.com/qemu/qemu/settings/notifications

Reply via email to