On Wed, Sep 24, 2025 at 8:51 AM Jason Wang <[email protected]> wrote: > > On Wed, Sep 24, 2025 at 4:23 AM Kommula Shiva Shankar > <[email protected]> wrote: > > > > virtio specification introduced support for outer network > > header offset broadcast. > > > > This patch implements the needed defines and virtio header > > parsing capabilities. > > > > Signed-off-by: Kommula Shiva Shankar <[email protected]> > > --- > > include/linux/virtio_net.h | 40 +++++++++++++++++++++++++++++++++ > > include/uapi/linux/virtio_net.h | 8 +++++++ > > 2 files changed, 48 insertions(+) > > > > diff --git a/include/linux/virtio_net.h b/include/linux/virtio_net.h > > index 20e0584db1dd..e6153e9106d3 100644 > > --- a/include/linux/virtio_net.h > > +++ b/include/linux/virtio_net.h > > @@ -374,6 +374,46 @@ static inline int > > virtio_net_handle_csum_offload(struct sk_buff *skb, > > return 0; > > } > > > > +static inline int > > +virtio_net_out_net_header_to_skb(struct sk_buff *skb, > > + struct > > virtio_net_hdr_v1_hash_tunnel_out_net_hdr *vhdr, > > + bool out_net_hdr_negotiated, > > + bool little_endian) > > +{ > > + unsigned int out_net_hdr_off; > > + > > + if (!out_net_hdr_negotiated) > > + return 0; > > + > > + if (vhdr->outer_nh_offset) { > > + out_net_hdr_off = __virtio16_to_cpu(little_endian, > > vhdr->outer_nh_offset); > > + skb_set_network_header(skb, out_net_hdr_off); > > + } > > + > > + return 0; > > +} > > + > > +static inline int > > +virtio_net_out_net_header_from_skb(const struct sk_buff *skb, > > + struct > > virtio_net_hdr_v1_hash_tunnel_out_net_hdr *vhdr, > > + bool out_net_hdr_negotiated, > > + bool little_endian) > > +{ > > + unsigned int out_net_hdr_off; > > + > > + if (!out_net_hdr_negotiated) { > > + vhdr->outer_nh_offset = 0; > > + return 0; > > + } > > + > > + out_net_hdr_off = skb_network_offset(skb); > > + if (out_net_hdr_off && skb->protocol == htons(ETH_P_IP)) > > + vhdr->outer_nh_offset = __cpu_to_virtio16(little_endian, > > + out_net_hdr_off); > > I'd expect this to work for IPV6 as well.
Or why it only works for IP/IPV6. > > Thanks Thanks
