On Thu, Oct 8, 2020 at 5:48 AM Xin Long <lucien.xin@xxxxxxxxx> wrote: > > For some protocol's gso, like SCTP, it's using GSO_BY_FRAGS for > gso_size. When using UDP to encapsulate its packet, it will > return error in udp6_ufo_fragment() as skb->len < gso_size, > and it will never go to the gso tunnel processing. > > So we should move this check after udp gso tunnel processing, > the same as udp4_ufo_fragment() does. While at it, also tidy > the variables up. Please don't mix a new feature and code cleanup. This patch changes almost every line of the function due to indentation changes. But the only relevant part is " mss = skb_shinfo(skb)->gso_size; if (unlikely(skb->len <= mss)) goto out; if (skb->encapsulation && skb_shinfo(skb)->gso_type & (SKB_GSO_UDP_TUNNEL|SKB_GSO_UDP_TUNNEL_CSUM)) segs = skb_udp_tunnel_segment(skb, features, true); else { /* irrelevant here */ } out: return segs; } " Is it a sufficient change to just skip the mss check if mss == GSO_BY_FRAGS?