On Sat, Oct 3, 2020 at 12:04 PM Marcelo Ricardo Leitner <marcelo.leitner@xxxxxxxxx> wrote: > > On Tue, Sep 29, 2020 at 09:48:55PM +0800, Xin Long wrote: > > This patch fixes two things: > > > > When skb->ip_summed == CHECKSUM_PARTIAL, skb_checksum_help() should be > > called do the checksum, instead of gso_make_checksum(), which is used > > to do the checksum for current proto after calling skb_segment(), not > > after the inner proto's gso_segment(). > > > > When offload_csum is disabled, the hardware will not do the checksum > > for the current proto, udp. So instead of calling gso_make_checksum(), > > it should calculate checksum for udp itself. > > Gotta say, this is odd. It is really flipping the two around. What > about other users of this function, did you test them too? Not yet, I couldn't found other cases to trigger this. But I think gso_make_checksum() is not correct to be used here, as it's trying to calculate the checksum for inner protocol instead of UDP's. It should be skb_checksum_help(), like on the xmit path. > > It makes sense to be, but would be nice if someone else could review > this. Fix the mail of Tom Herbert, and he is the right person to review this.