{"push_id":1212625622,"size":1,"distinct_size":1,"ref":"refs/heads/6.0.1","head":"a69c1b31af6f7b0bfad6868e31a21e1b7e0795fe","before":"a39255f26410623a3bec24c4a9408de0241c6396","commits":[{"sha":"a69c1b31af6f7b0bfad6868e31a21e1b7e0795fe","author":{"name":"Eric Dumazet","email":"b3d77ad2db30f558882cc0c038be5a3cf96611f9@google.com"},"message":"inetpeer: get rid of ip_id_count\n\n[ Upstream commit 73f156a6e8c1074ac6327e0abd1169e95eb66463 ]\n\nIdeally, we would need to generate IP ID using a per destination IP\ngenerator.\n\nlinux kernels used inet_peer cache for this purpose, but this had a huge\ncost on servers disabling MTU discovery.\n\n1) each inet_peer struct consumes 192 bytes\n\n2) inetpeer cache uses a binary tree of inet_peer structs,\n   with a nominal size of ~66000 elements under load.\n\n3) lookups in this tree are hitting a lot of cache lines, as tree depth\n   is about 20.\n\n4) If server deals with many tcp flows, we have a high probability of\n   not finding the inet_peer, allocating a fresh one, inserting it in\n   the tree with same initial ip_id_count, (cf secure_ip_id())\n\n5) We garbage collect inet_peer aggressively.\n\nIP ID generation do not have to be 'perfect'\n\nGoal is trying to avoid duplicates in a short period of time,\nso that reassembly units have a chance to complete reassembly of\nfragments belonging to one message before receiving other fragments\nwith a recycled ID.\n\nWe simply use an array of generators, and a Jenkin hash using the dst IP\nas a key.\n\nipv6_select_ident() is put back into net/ipv6/ip6_output.c where it\nbelongs (it is only used from this file)\n\nsecure_ip_id() and secure_ipv6_id() no longer are needed.\n\nRename ip_select_ident_more() to ip_select_ident_segs() to avoid\nunnecessary decrement/increment of the number of segments.\n\nSigned-off-by: Eric Dumazet <edumazet@google.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>\n\nConflicts:\n\tinclude/net/inetpeer.h\n\tinclude/net/ipv6.h\n\tnet/ipv4/ip_output.c\n\tnet/ipv6/ip6_output.c","distinct":true,"url":"https://api.github.com/repos/dblockopp/G3_CooCoo_Kernel/commits/a69c1b31af6f7b0bfad6868e31a21e1b7e0795fe"}]}
{"actor":{"display_login":"dblockopp"}}