{"push_id":1209038434,"size":1,"distinct_size":1,"ref":"refs/heads/6.0.1","head":"0306b2572a3dd5f8470c17e9d1444d44fe508a96","before":"258b11ae438b1bada4252d7fe48d8142f8cccab3","commits":[{"sha":"0306b2572a3dd5f8470c17e9d1444d44fe508a96","author":{"name":"Florian Westphal","email":"dbfaf6a80dfd937969ef4cfe4989863cfe354fce@strlen.de"},"message":"net: ip, ipv6: handle gso skbs in forwarding path\n\ncommit fe6cc55f3a9a053482a76f5a6b2257cee51b4663 upstream.\n\n[ use zero netdev_feature mask to avoid backport of\n  netif_skb_dev_features function ]\n\nMarcelo Ricardo Leitner reported problems when the forwarding link path\nhas a lower mtu than the incoming one if the inbound interface supports GRO.\n\nGiven:\nHost <mtu1500> R1 <mtu1200> R2\n\nHost sends tcp stream which is routed via R1 and R2.  R1 performs GRO.\n\nIn this case, the kernel will fail to send ICMP fragmentation needed\nmessages (or pkt too big for ipv6), as GSO packets currently bypass dstmtu\nchecks in forward path. Instead, Linux tries to send out packets exceeding\nthe mtu.\n\nWhen locking route MTU on Host (i.e., no ipv4 DF bit set), R1 does\nnot fragment the packets when forwarding, and again tries to send out\npackets exceeding R1-R2 link mtu.\n\nThis alters the forwarding dstmtu checks to take the individual gso\nsegment lengths into account.\n\nFor ipv6, we send out pkt too big error for gso if the individual\nsegments are too big.\n\nFor ipv4, we either send icmp fragmentation needed, or, if the DF bit\nis not set, perform software segmentation and let the output path\ncreate fragments when the packet is leaving the machine.\nIt is not 100% correct as the error message will contain the headers of\nthe GRO skb instead of the original/segmented one, but it seems to\nwork fine in my (limited) tests.\n\nEric Dumazet suggested to simply shrink mss via ->gso_size to avoid\nsofware segmentation.\n\nHowever it turns out that skb_segment() assumes skb nr_frags is related\nto mss size so we would BUG there.  I don't want to mess with it considering\nHerbert and Eric disagree on what the correct behavior should be.\n\nHannes Frederic Sowa notes that when we would shrink gso_size\nskb_segment would then also need to deal with the case where\nSKB_MAX_FRAGS would be exceeded.\n\nThis uses sofware segmentation in the forward path when we hit ipv4\nnon-DF packets and the outgoing link mtu is too small.  Its not perfect,\nbut given the lack of bug reports wrt. GRO fwd being broken this is a\nrare case anyway.  Also its not like this could not be improved later\nonce the dust settles.\n\nAcked-by: Herbert Xu <herbert@gondor.apana.org.au>\nReported-by: Marcelo Ricardo Leitner <mleitner@redhat.com>\nSigned-off-by: Florian Westphal <fw@strlen.de>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/dblockopp/G3_CooCoo_Kernel/commits/0306b2572a3dd5f8470c17e9d1444d44fe508a96"}]}
{"actor":{"display_login":"dblockopp"}}