From: Jakub Kicinski <k...@kernel.org> Date: Mon, 9 Nov 2020 15:29:13 -0800
> On Thu, 05 Nov 2020 21:29:01 +0000 Alexander Lobakin wrote: >> Similar to commit fda55eca5a33f >> ("net: introduce skb_transport_header_was_set()"), avoid resetting >> transport offsets that were already set by GRO layer. This not only >> mirrors the behavior of __netif_receive_skb_core(), but also makes >> sense when it comes to UDP GSO fraglists forwarding: transport offset >> of such skbs is set only once by GRO receive callback and remains >> untouched and correct up to the xmitting driver in 1:1 case, but >> becomes junk after untagging in ingress VLAN case and breaks UDP >> GSO offload. This does not happen after this change, and all types >> of forwarding of UDP GSO fraglists work as expected. >> >> Signed-off-by: Alexander Lobakin <aloba...@pm.me> >> --- >> net/core/skbuff.c | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/net/core/skbuff.c b/net/core/skbuff.c >> index c5e6c0b83a92..39c13b9cf79d 100644 >> --- a/net/core/skbuff.c >> +++ b/net/core/skbuff.c >> @@ -5441,9 +5441,11 @@ struct sk_buff *skb_vlan_untag(struct sk_buff *skb) >> goto err_free; >> >> skb_reset_network_header(skb); >> - skb_reset_transport_header(skb); >> skb_reset_mac_len(skb); >> >> + if (!skb_transport_header_was_set(skb)) >> + skb_reset_transport_header(skb); >> + > > Patch looks fine, thanks, but I don't understand why you decided to > move the reset? It's not like it's not in order of headers, either. > Let's keep the series of resets identical to __netif_receive_skb_core(), > shall we? Pure cosmetics, but yeah, let's keep. Will submit v2 in just a minute. >> return skb; >> >> err_free: Thanks, Al