Message ID | 1721d45800a333a46c2cdde0fd25eb6f02f49ecf.1631007211.git.lorenzo@kernel.org |
---|---|
State | Superseded |
Headers | show |
Series | [v13,bpf-next,01/18] net: skbuff: add size metadata to skb_shared_info for xdp | expand |
On 07/09/2021 14.35, Lorenzo Bianconi wrote: > Introduce xdp_frags_tsize field in skb_shared_info data structure > to store xdp_buff/xdp_frame truesize (xdp_frags_tsize will be used > in xdp multi-buff support). In order to not increase skb_shared_info > size we will use a hole due to skb_shared_info alignment. > Introduce xdp_frags_size field in skb_shared_info data structure > reusing gso_type field in order to store xdp_buff/xdp_frame paged size. > xdp_frags_size will be used in xdp multi-buff support. > > Acked-by: John Fastabend <john.fastabend@gmail.com> > Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> > --- > include/linux/skbuff.h | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h > index 6bdb0db3e825..1abeba7ef82e 100644 > --- a/include/linux/skbuff.h > +++ b/include/linux/skbuff.h > @@ -522,13 +522,17 @@ struct skb_shared_info { > unsigned short gso_segs; > struct sk_buff *frag_list; > struct skb_shared_hwtstamps hwtstamps; > - unsigned int gso_type; > + union { > + unsigned int gso_type; > + unsigned int xdp_frags_size; > + }; > u32 tskey; > > /* > * Warning : all fields before dataref are cleared in __alloc_skb() > */ > atomic_t dataref; > + unsigned int xdp_frags_tsize; I wonder if we could call this variable: xdp_frags_truesize. As while reviewing patches I had to focus my eyes extra hard to tell the variables xdp_frags_size and xdp_frags_tsize from each-other. --Jesper
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 6bdb0db3e825..1abeba7ef82e 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -522,13 +522,17 @@ struct skb_shared_info { unsigned short gso_segs; struct sk_buff *frag_list; struct skb_shared_hwtstamps hwtstamps; - unsigned int gso_type; + union { + unsigned int gso_type; + unsigned int xdp_frags_size; + }; u32 tskey; /* * Warning : all fields before dataref are cleared in __alloc_skb() */ atomic_t dataref; + unsigned int xdp_frags_tsize; /* Intermediate layers must ensure that destructor_arg * remains valid until skb destructor */