Thread (41 messages) flat view 41 messages, 5 authors, 2023-10-20

Re: [RFC PATCH 1/7] net: skbuff: Add tun_vnet_hash flag

From: Akihiko Odaki <hidden>
Date: 2023-10-08 19:53:11
Also in: bpf, kvm, linux-kselftest, lkml

On 2023/10/09 3:39, Willem de Bruijn wrote:
On Sun, Oct 8, 2023 at 7:22 AM Akihiko Odaki [off-list ref] wrote:
quoted
tun_vnet_hash can use this flag to indicate it stored virtio-net hash
cache to cb.

Signed-off-by: Akihiko Odaki <redacted>
---
  include/linux/skbuff.h | 2 ++
  1 file changed, 2 insertions(+)
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 4174c4b82d13..e638f157c13c 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -837,6 +837,7 @@ typedef unsigned char *sk_buff_data_t;
   *     @truesize: Buffer size
   *     @users: User count - see {datagram,tcp}.c
   *     @extensions: allocated extensions, valid if active_extensions is nonzero
+ *     @tun_vnet_hash: tun stored virtio-net hash cache to cb
   */

  struct sk_buff {
@@ -989,6 +990,7 @@ struct sk_buff {
  #if IS_ENABLED(CONFIG_IP_SCTP)
         __u8                    csum_not_inet:1;
  #endif
+       __u8                    tun_vnet_hash:1;
sk_buff space is very limited.

No need to extend it, especially for code that stays within a single
subsystem (tun).

To a lesser extent the same point applies to the qdisc_skb_cb.
I had to extend sk_buff because it does not stay in tun but moves back 
and forth between qdisc and tun.

The new members of sk_buff and qdisc_skb_cb are stored by tun's 
ndo_select_queue(). The control will go back to qdisc after 
ndo_select_queue() function finishes. Eventually tun's ndo_start_xmit() 
will be called by qdisc and consumes the stored members. qdisc is 
required to keep the stored members intact.

tun_vnet_hash is a bit special. It is put into sk_buff because 
ndo_select_queue() is not always called and it may be left 
uninitialized. ndo_start_xmit() may read some garbage from cb's old user 
if it is put into cb.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help