)]}'
{
  "log": [
    {
      "commit": "f7e56a76acf642d21a8e7bd587e270ae7addc4db",
      "tree": "8b0f96fd78a2c24e217b26e092004edcbc9261c2",
      "parents": [
        "4ffa8fcd1732b5bb8cf961aa0e678953e637303d"
      ],
      "author": {
        "name": "stephen hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Sun Dec 29 11:39:51 2013 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Dec 29 16:34:24 2013 -0500"
      },
      "message": "tcp: make local functions static\n\nThe following are only used in one file:\n  tcp_connect_init\n  tcp_set_rto\n\nSigned-off-by: Stephen Hemminger \u003cstephen@networkplumber.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d4589926d7a9a4b88e650bb9154bab71e8d2a7dd",
      "tree": "692b45bcf6e29af4f1a33f996aef054756574bee",
      "parents": [
        "477bb93320cec7ae74d5ccfad4f2bfa0b28fbe90"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Fri Dec 13 13:51:23 2013 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Dec 17 15:15:25 2013 -0500"
      },
      "message": "tcp: refine TSO splits\n\nWhile investigating performance problems on small RPC workloads,\nI noticed linux TCP stack was always splitting the last TSO skb\ninto two parts (skbs). One being a multiple of MSS, and a small one\nwith the Push flag. This split is done even if TCP_NODELAY is set,\nor if no small packet is in flight.\n\nExample with request/response of 4K/4K\n\nIP A \u003e B: . ack 68432 win 2783 \u003cnop,nop,timestamp 6524593 6525001\u003e\nIP A \u003e B: . 65537:68433(2896) ack 69632 win 2783 \u003cnop,nop,timestamp 6524593 6525001\u003e\nIP A \u003e B: P 68433:69633(1200) ack 69632 win 2783 \u003cnop,nop,timestamp 6524593 6525001\u003e\nIP B \u003e A: . ack 68433 win 2768 \u003cnop,nop,timestamp 6525001 6524593\u003e\nIP B \u003e A: . 69632:72528(2896) ack 69633 win 2768 \u003cnop,nop,timestamp 6525001 6524593\u003e\nIP B \u003e A: P 72528:73728(1200) ack 69633 win 2768 \u003cnop,nop,timestamp 6525001 6524593\u003e\nIP A \u003e B: . ack 72528 win 2783 \u003cnop,nop,timestamp 6524593 6525001\u003e\nIP A \u003e B: . 69633:72529(2896) ack 73728 win 2783 \u003cnop,nop,timestamp 6524593 6525001\u003e\nIP A \u003e B: P 72529:73729(1200) ack 73728 win 2783 \u003cnop,nop,timestamp 6524593 6525001\u003e\n\nWe can avoid this split by including the Nagle tests at the right place.\n\nNote : If some NIC had trouble sending TSO packets with a partial\nlast segment, we would have hit the problem in GRO/forwarding workload already.\n\ntcp_minshall_update() is moved to tcp_output.c and is updated as we might\nfeed a TSO packet with a partial last segment.\n\nThis patch tremendously improves performance, as the traffic now looks\nlike :\n\nIP A \u003e B: . ack 98304 win 2783 \u003cnop,nop,timestamp 6834277 6834685\u003e\nIP A \u003e B: P 94209:98305(4096) ack 98304 win 2783 \u003cnop,nop,timestamp 6834277 6834685\u003e\nIP B \u003e A: . ack 98305 win 2768 \u003cnop,nop,timestamp 6834686 6834277\u003e\nIP B \u003e A: P 98304:102400(4096) ack 98305 win 2768 \u003cnop,nop,timestamp 6834686 6834277\u003e\nIP A \u003e B: . ack 102400 win 2783 \u003cnop,nop,timestamp 6834279 6834686\u003e\nIP A \u003e B: P 98305:102401(4096) ack 102400 win 2783 \u003cnop,nop,timestamp 6834279 6834686\u003e\nIP B \u003e A: . ack 102401 win 2768 \u003cnop,nop,timestamp 6834687 6834279\u003e\nIP B \u003e A: P 102400:106496(4096) ack 102401 win 2768 \u003cnop,nop,timestamp 6834687 6834279\u003e\nIP A \u003e B: . ack 106496 win 2783 \u003cnop,nop,timestamp 6834280 6834687\u003e\nIP A \u003e B: P 102401:106497(4096) ack 106496 win 2783 \u003cnop,nop,timestamp 6834280 6834687\u003e\nIP B \u003e A: . ack 106497 win 2768 \u003cnop,nop,timestamp 6834688 6834280\u003e\nIP B \u003e A: P 106496:110592(4096) ack 106497 win 2768 \u003cnop,nop,timestamp 6834688 6834280\u003e\n\nBefore :\n\nlpq83:~# nstat \u003e/dev/null;perf stat ./super_netperf 200 -t TCP_RR -H lpq84 -l 20 -- -r 4K,4K\n280774\n\n Performance counter stats for \u0027./super_netperf 200 -t TCP_RR -H lpq84 -l 20 -- -r 4K,4K\u0027:\n\n     205719.049006 task-clock                #    9.278 CPUs utilized\n         8,449,968 context-switches          #    0.041 M/sec\n         1,935,997 CPU-migrations            #    0.009 M/sec\n           160,541 page-faults               #    0.780 K/sec\n   548,478,722,290 cycles                    #    2.666 GHz                     [83.20%]\n   455,240,670,857 stalled-cycles-frontend   #   83.00% frontend cycles idle    [83.48%]\n   272,881,454,275 stalled-cycles-backend    #   49.75% backend  cycles idle    [66.73%]\n   166,091,460,030 instructions              #    0.30  insns per cycle\n                                             #    2.74  stalled cycles per insn [83.39%]\n    29,150,229,399 branches                  #  141.699 M/sec                   [83.30%]\n     1,943,814,026 branch-misses             #    6.67% of all branches         [83.32%]\n\n      22.173517844 seconds time elapsed\n\nlpq83:~# nstat | egrep \"IpOutRequests|IpExtOutOctets\"\nIpOutRequests                   16851063           0.0\nIpExtOutOctets                  23878580777        0.0\n\nAfter patch :\n\nlpq83:~# nstat \u003e/dev/null;perf stat ./super_netperf 200 -t TCP_RR -H lpq84 -l 20 -- -r 4K,4K\n280877\n\n Performance counter stats for \u0027./super_netperf 200 -t TCP_RR -H lpq84 -l 20 -- -r 4K,4K\u0027:\n\n     107496.071918 task-clock                #    4.847 CPUs utilized\n         5,635,458 context-switches          #    0.052 M/sec\n         1,374,707 CPU-migrations            #    0.013 M/sec\n           160,920 page-faults               #    0.001 M/sec\n   281,500,010,924 cycles                    #    2.619 GHz                     [83.28%]\n   228,865,069,307 stalled-cycles-frontend   #   81.30% frontend cycles idle    [83.38%]\n   142,462,742,658 stalled-cycles-backend    #   50.61% backend  cycles idle    [66.81%]\n    95,227,712,566 instructions              #    0.34  insns per cycle\n                                             #    2.40  stalled cycles per insn [83.43%]\n    16,209,868,171 branches                  #  150.795 M/sec                   [83.20%]\n       874,252,952 branch-misses             #    5.39% of all branches         [83.37%]\n\n      22.175821286 seconds time elapsed\n\nlpq83:~# nstat | egrep \"IpOutRequests|IpExtOutOctets\"\nIpOutRequests                   11239428           0.0\nIpExtOutOctets                  23595191035        0.0\n\nIndeed, the occupancy of tx skbs (IpExtOutOctets/IpOutRequests) is higher :\n2099 instead of 1417, thus helping GRO to be more efficient when using FQ packet\nscheduler.\n\nMany thanks to Neal for review and ideas.\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nCc: Yuchung Cheng \u003cycheng@google.com\u003e\nCc: Neal Cardwell \u003cncardwell@google.com\u003e\nCc: Nandita Dukkipati \u003cnanditad@google.com\u003e\nCc: Van Jacobson \u003cvanj@google.com\u003e\nAcked-by: Neal Cardwell \u003cncardwell@google.com\u003e\nTested-by: Neal Cardwell \u003cncardwell@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f54b311142a92ea2e42598e347b84e1655caf8e3",
      "tree": "64976e75ab165d657053f025bf6776c0a07d2a55",
      "parents": [
        "d8535a0a02d6e772122339c131151dfaf007866b"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Thu Dec 05 22:36:05 2013 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 06 12:51:41 2013 -0500"
      },
      "message": "tcp: auto corking\n\nWith the introduction of TCP Small Queues, TSO auto sizing, and TCP\npacing, we can implement Automatic Corking in the kernel, to help\napplications doing small write()/sendmsg() to TCP sockets.\n\nIdea is to change tcp_push() to check if the current skb payload is\nunder skb optimal size (a multiple of MSS bytes)\n\nIf under \u0027size_goal\u0027, and at least one packet is still in Qdisc or\nNIC TX queues, set the TCP Small Queue Throttled bit, so that the push\nwill be delayed up to TX completion time.\n\nThis delay might allow the application to coalesce more bytes\nin the skb in following write()/sendmsg()/sendfile() system calls.\n\nThe exact duration of the delay is depending on the dynamics\nof the system, and might be zero if no packet for this flow\nis actually held in Qdisc or NIC TX ring.\n\nUsing FQ/pacing is a way to increase the probability of\nautocorking being triggered.\n\nAdd a new sysctl (/proc/sys/net/ipv4/tcp_autocorking) to control\nthis feature and default it to 1 (enabled)\n\nAdd a new SNMP counter : nstat -a | grep TcpExtTCPAutoCorking\nThis counter is incremented every time we detected skb was under used\nand its flush was deferred.\n\nTested:\n\nInteresting effects when using line buffered commands under ssh.\n\nExcellent performance results in term of cpu usage and total throughput.\n\nlpq83:~# echo 1 \u003e/proc/sys/net/ipv4/tcp_autocorking\nlpq83:~# perf stat ./super_netperf 4 -t TCP_STREAM -H lpq84 -- -m 128\n9410.39\n\n Performance counter stats for \u0027./super_netperf 4 -t TCP_STREAM -H lpq84 -- -m 128\u0027:\n\n      35209.439626 task-clock                #    2.901 CPUs utilized\n             2,294 context-switches          #    0.065 K/sec\n               101 CPU-migrations            #    0.003 K/sec\n             4,079 page-faults               #    0.116 K/sec\n    97,923,241,298 cycles                    #    2.781 GHz                     [83.31%]\n    51,832,908,236 stalled-cycles-frontend   #   52.93% frontend cycles idle    [83.30%]\n    25,697,986,603 stalled-cycles-backend    #   26.24% backend  cycles idle    [66.70%]\n   102,225,978,536 instructions              #    1.04  insns per cycle\n                                             #    0.51  stalled cycles per insn [83.38%]\n    18,657,696,819 branches                  #  529.906 M/sec                   [83.29%]\n        91,679,646 branch-misses             #    0.49% of all branches         [83.40%]\n\n      12.136204899 seconds time elapsed\n\nlpq83:~# echo 0 \u003e/proc/sys/net/ipv4/tcp_autocorking\nlpq83:~# perf stat ./super_netperf 4 -t TCP_STREAM -H lpq84 -- -m 128\n6624.89\n\n Performance counter stats for \u0027./super_netperf 4 -t TCP_STREAM -H lpq84 -- -m 128\u0027:\n      40045.864494 task-clock                #    3.301 CPUs utilized\n               171 context-switches          #    0.004 K/sec\n                53 CPU-migrations            #    0.001 K/sec\n             4,080 page-faults               #    0.102 K/sec\n   111,340,458,645 cycles                    #    2.780 GHz                     [83.34%]\n    61,778,039,277 stalled-cycles-frontend   #   55.49% frontend cycles idle    [83.31%]\n    29,295,522,759 stalled-cycles-backend    #   26.31% backend  cycles idle    [66.67%]\n   108,654,349,355 instructions              #    0.98  insns per cycle\n                                             #    0.57  stalled cycles per insn [83.34%]\n    19,552,170,748 branches                  #  488.244 M/sec                   [83.34%]\n       157,875,417 branch-misses             #    0.81% of all branches         [83.34%]\n\n      12.130267788 seconds time elapsed\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9f9843a751d0a2057f9f3d313886e7e5e6ebaac9",
      "tree": "a89df5cc0c5f5280b2cfffba7f6933e4db20736f",
      "parents": [
        "0d41cca490c274352211efac50e9598d39a9dc80"
      ],
      "author": {
        "name": "Yuchung Cheng",
        "email": "ycheng@google.com",
        "time": "Thu Oct 31 11:07:31 2013 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Nov 04 19:57:59 2013 -0500"
      },
      "message": "tcp: properly handle stretch acks in slow start\n\nSlow start now increases cwnd by 1 if an ACK acknowledges some packets,\nregardless the number of packets. Consequently slow start performance\nis highly dependent on the degree of the stretch ACKs caused by\nreceiver or network ACK compression mechanisms (e.g., delayed-ACK,\nGRO, etc).  But slow start algorithm is to send twice the amount of\npackets of packets left so it should process a stretch ACK of degree\nN as if N ACKs of degree 1, then exits when cwnd exceeds ssthresh. A\nfollow up patch will use the remainder of the N (if greater than 1)\nto adjust cwnd in the congestion avoidance phase.\n\nIn addition this patch retires the experimental limited slow start\n(LSS) feature. LSS has multiple drawbacks but questionable benefit. The\nfractional cwnd increase in LSS requires a loop in slow start even\nthough it\u0027s rarely used. Configuring such an increase step via a global\nsysctl on different BDPS seems hard. Finally and most importantly the\nslow start overshoot concern is now better covered by the Hybrid slow\nstart (hystart) enabled by default.\n\nSigned-off-by: Yuchung Cheng \u003cycheng@google.com\u003e\nSigned-off-by: Neal Cardwell \u003cncardwell@google.com\u003e\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a4fe34bf902b8f709c635ab37f1f39de0b86cff2",
      "tree": "955c388e64c320eda8759bd970a5284473c8e1d5",
      "parents": [
        "f594d63199688ad568fb69f6a790b11d6d6d1ba5"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sat Oct 19 16:25:36 2013 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Oct 21 18:43:02 2013 -0400"
      },
      "message": "tcp_memcontrol: Remove the per netns control.\n\nThe code that is implemented is per memory cgroup not per netns, and\nhaving per netns bits is just confusing.  Remove the per netns bits to\nmake it easier to see what is really going on.\n\nSigned-off-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "222e83d2e0aecb6a5e8d42b1a8d51332a1eba960",
      "tree": "395011fb151ed3ce911333e1ab70602b2cfbc3e0",
      "parents": [
        "1bbdceef1e535add893bf71d7b7ab102e4eb69eb"
      ],
      "author": {
        "name": "Hannes Frederic Sowa",
        "email": "hannes@stressinduktion.org",
        "time": "Sat Oct 19 21:48:58 2013 +0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Oct 19 19:45:35 2013 -0400"
      },
      "message": "tcp: switch tcp_fastopen key generation to net_get_random_once\n\nChanged key initialization of tcp_fastopen cookies to net_get_random_once.\n\nIf the user sets a custom key net_get_random_once must be called at\nleast once to ensure we don\u0027t overwrite the user provided key when the\nfirst cookie is generated later on.\n\nCc: Yuchung Cheng \u003cycheng@google.com\u003e\nCc: Eric Dumazet \u003cedumazet@google.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Hannes Frederic Sowa \u003channes@stressinduktion.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b23a002fc6f0c19846ee0382f019429af54a27e9",
      "tree": "9cb494a707c4145a8a42f0cf6eb6853e487f06a5",
      "parents": [
        "a48e42920ff38bc90bbf75143fff4555723d4540"
      ],
      "author": {
        "name": "Hannes Frederic Sowa",
        "email": "hannes@stressinduktion.org",
        "time": "Sat Oct 19 21:48:56 2013 +0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Oct 19 19:45:35 2013 -0400"
      },
      "message": "inet: split syncookie keys for ipv4 and ipv6 and initialize with net_get_random_once\n\nThis patch splits the secret key for syncookies for ipv4 and ipv6 and\ninitializes them with net_get_random_once. This change was the reason I\ndid this series. I think the initialization of the syncookie_secret is\nway to early.\n\nCc: Florian Westphal \u003cfw@strlen.de\u003e\nCc: Eric Dumazet \u003cedumazet@google.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Hannes Frederic Sowa \u003channes@stressinduktion.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "28be6e07e8bccee76b51bca8fdba52c1b28fc77c",
      "tree": "b889d193ffe884edcee8ce145f8778235eff8a9b",
      "parents": [
        "ace0d5d8bf8a69866e4394ca2e4c5d1296ef7db2"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Fri Oct 18 10:36:17 2013 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Oct 18 13:38:39 2013 -0400"
      },
      "message": "tcp: rename tcp_tso_segment()\n\nRename tcp_tso_segment() to tcp_gso_segment(), to better reflect\nwhat is going on, and ease grep games.\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b44084c2c822f99dd3f2334b288b7e463d222662",
      "tree": "5fbcaffd319347ee5d22800c231eef2b4c44b007",
      "parents": [
        "ba537427d77cf274592f31ce94f4b4cadfad88b4"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Thu Oct 10 00:04:37 2013 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 10 14:37:35 2013 -0400"
      },
      "message": "inet: rename ir_loc_port to ir_num\n\nIn commit 634fb979e8f (\"inet: includes a sock_common in request_sock\")\nI forgot that the two ports in sock_common do not have same byte order :\n\nskc_dport is __be16 (network order), but skc_num is __u16 (host order)\n\nSo sparse complains because ir_loc_port (mapped into skc_num) is\nconsidered as __u16 while it should be __be16\n\nLet rename ir_loc_port to ireq-\u003eir_num (analogy with inet-\u003einet_num),\nand perform appropriate htons/ntohs conversions.\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nReported-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "634fb979e8f3a70f04c1f2f519d0cd1142eb5c1a",
      "tree": "ffd7f7ef4a313c94859180d1bc20f2713a11f987",
      "parents": [
        "8a29111c7ca68d928dfab58636f3f6acf0ac04f7"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Wed Oct 09 15:21:29 2013 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 10 00:08:07 2013 -0400"
      },
      "message": "inet: includes a sock_common in request_sock\n\nTCP listener refactoring, part 5 :\n\nWe want to be able to insert request sockets (SYN_RECV) into main\nehash table instead of the per listener hash table to allow RCU\nlookups and remove listener lock contention.\n\nThis patch includes the needed struct sock_common in front\nof struct request_sock\n\nThis means there is no more inet6_request_sock IPv6 specific\nstructure.\n\nFollowing inet_request_sock fields were renamed as they became\nmacros to reference fields from struct sock_common.\nPrefix ir_ was chosen to avoid name collisions.\n\nloc_port   -\u003e ir_loc_port\nloc_addr   -\u003e ir_loc_addr\nrmt_addr   -\u003e ir_rmt_addr\nrmt_port   -\u003e ir_rmt_port\niif        -\u003e ir_iif\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "05dbc7b59481ca891bbcfe6799a562d48159fbf7",
      "tree": "f398ddbc5d2a72b3c3b7b16aed8a34b153491341",
      "parents": [
        "53af53ae83fe960ceb9ef74cac7915e9088f4266"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Thu Oct 03 00:22:02 2013 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 08 23:19:24 2013 -0400"
      },
      "message": "tcp/dccp: remove twchain\n\nTCP listener refactoring, part 3 :\n\nOur goal is to hash SYN_RECV sockets into main ehash for fast lookup,\nand parallel SYN processing.\n\nCurrent inet_ehash_bucket contains two chains, one for ESTABLISH (and\nfriend states) sockets, another for TIME_WAIT sockets only.\n\nAs the hash table is sized to get at most one socket per bucket, it\nmakes little sense to have separate twchain, as it makes the lookup\nslightly more complicated, and doubles hash table memory usage.\n\nIf we make sure all socket types have the lookup keys at the same\noffsets, we can use a generic and faster lookup. It turns out TIME_WAIT\nand ESTABLISHED sockets already have common lookup fields for IPv4.\n\n[ INET_TW_MATCH() is no longer needed ]\n\nI\u0027ll provide a follow-up to factorize IPv6 lookup as well, to remove\nINET6_TW_MATCH()\n\nThis way, SYN_RECV pseudo sockets will be supported the same.\n\nA new sock_gen_put() helper is added, doing either a sock_put() or\ninet_twsk_put() [ and will support SYN_RECV later ].\n\nNote this helper should only be called in real slow path, when rcu\nlookup found a socket that was moved to another identity (freed/reused\nimmediately), but could eventually be used in other contexts, like\nsock_edemux()\n\nBefore patch :\n\ndmesg | grep \"TCP established\"\n\nTCP established hash table entries: 524288 (order: 11, 8388608 bytes)\n\nAfter patch :\n\nTCP established hash table entries: 524288 (order: 10, 4194304 bytes)\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8c27bd75f04fb9cb70c69c3cfe24f4e6d8e15906",
      "tree": "28156d5d01cd4393da57eb328db87d784bdd4260",
      "parents": [
        "61f860c356c3d15b6cf48ef35beea664921dec1e"
      ],
      "author": {
        "name": "Florian Westphal",
        "email": "fw@strlen.de",
        "time": "Fri Sep 20 22:32:55 2013 +0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Sep 24 10:39:58 2013 -0400"
      },
      "message": "tcp: syncookies: reduce cookie lifetime to 128 seconds\n\nWe currently accept cookies that were created less than 4 minutes ago\n(ie, cookies with counter delta 0-3).  Combined with the 8 mss table\nvalues, this yields 32 possible values (out of 2**32) that will be valid.\n\nReducing the lifetime to \u003c 2 minutes halves the guessing chance while\nstill providing a large enough period.\n\nWhile at it, get rid of jiffies value -- they overflow too quickly on\n32 bit platforms.\n\ngetnstimeofday is used to create a counter that increments every 64s.\nperf shows getnstimeofday cost is negible compared to sha_transform;\nnormal tcp initial sequence number generation uses getnstimeofday, too.\n\nReported-by: Jakob Lell \u003cjakob@jakoblell.com\u003e\nSigned-off-by: Florian Westphal \u003cfw@strlen.de\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5c9f30236f53f3fbee170e2452dfa0e5dce4727b",
      "tree": "a43b6a765fe0bb214cfbc8789d38df0cea933df0",
      "parents": [
        "27c90dcb9c6c478902ede8b96b0b616e919e323d"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Sep 23 11:33:32 2013 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 23 16:29:40 2013 -0400"
      },
      "message": "tcp.h: Remove extern from function prototypes\n\nThere are a mix of function prototypes with and without extern\nin the kernel sources.  Standardize on not using extern for\nfunction prototypes.\n\nFunction prototypes don\u0027t need to be written with extern.\nextern is assumed by the compiler.  Its use is as unnecessary as\nusing auto to declare automatic/local variables in a block.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c995ae2259ee36caf48bbfacf40111998dacd4af",
      "tree": "dbe9be79766ab1c2a4f9da7ae461bd6ceab6bc9f",
      "parents": [
        "cc8c6c1b21c9b1e0f1e89428c07c7c52435cba0c"
      ],
      "author": {
        "name": "Vijay Subramanian",
        "email": "subramanian.vijay@gmail.com",
        "time": "Tue Sep 03 12:23:22 2013 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 04 00:27:28 2013 -0400"
      },
      "message": "tcp: Change return value of tcp_rcv_established()\n\ntcp_rcv_established() returns only one value namely 0. We change the return\nvalue to void (as suggested by David Miller).\n\nAfter commit 0c24604b (tcp: implement RFC 5961 4.2), we no longer send RSTs in\nresponse to SYNs. We can remove the check and processing on the return value of\ntcp_rcv_established().\n\nWe also fix jtcp_rcv_established() in tcp_probe.c to match that of\ntcp_rcv_established().\n\nSigned-off-by: Vijay Subramanian \u003csubramanian.vijay@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "95bd09eb27507691520d39ee1044d6ad831c1168",
      "tree": "e05045cc6418ce08aa87d5f8c17366a7fa672f3c",
      "parents": [
        "b800c3b966bcf004bd8592293a49ed5cb7ea67a9"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Tue Aug 27 05:46:32 2013 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Aug 29 15:50:06 2013 -0400"
      },
      "message": "tcp: TSO packets automatic sizing\n\nAfter hearing many people over past years complaining against TSO being\nbursty or even buggy, we are proud to present automatic sizing of TSO\npackets.\n\nOne part of the problem is that tcp_tso_should_defer() uses an heuristic\nrelying on upcoming ACKS instead of a timer, but more generally, having\nbig TSO packets makes little sense for low rates, as it tends to create\nmicro bursts on the network, and general consensus is to reduce the\nbuffering amount.\n\nThis patch introduces a per socket sk_pacing_rate, that approximates\nthe current sending rate, and allows us to size the TSO packets so\nthat we try to send one packet every ms.\n\nThis field could be set by other transports.\n\nPatch has no impact for high speed flows, where having large TSO packets\nmakes sense to reach line rate.\n\nFor other flows, this helps better packet scheduling and ACK clocking.\n\nThis patch increases performance of TCP flows in lossy environments.\n\nA new sysctl (tcp_min_tso_segs) is added, to specify the\nminimal size of a TSO packet (default being 2).\n\nA follow-up patch will provide a new packet scheduler (FQ), using\nsk_pacing_rate as an input to perform optional per flow pacing.\n\nThis explains why we chose to set sk_pacing_rate to twice the current\nrate, allowing \u0027slow start\u0027 ramp up.\n\nsk_pacing_rate \u003d 2 * cwnd * mss / srtt\n\nv2: Neal Cardwell reported a suspect deferring of last two segments on\ninitial write of 10 MSS, I had to change tcp_tso_should_defer() to take\ninto account tp-\u003exmit_size_goal_segs\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nCc: Neal Cardwell \u003cncardwell@google.com\u003e\nCc: Yuchung Cheng \u003cycheng@google.com\u003e\nCc: Van Jacobson \u003cvanj@google.com\u003e\nCc: Tom Herbert \u003ctherbert@google.com\u003e\nAcked-by: Yuchung Cheng \u003cycheng@google.com\u003e\nAcked-by: Neal Cardwell \u003cncardwell@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "81eb6a1487718a89621a0e0be7fafd0cd7c429a4",
      "tree": "05c8e0e54aa0c9739b5b7cd46d29d5385cb1ede0",
      "parents": [
        "48b1de4c110a7afa4b85862f6c75af817db26fad"
      ],
      "author": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Tue Aug 27 08:50:15 2013 +0200"
      },
      "committer": {
        "name": "Pablo Neira Ayuso",
        "email": "pablo@netfilter.org",
        "time": "Wed Aug 28 00:28:04 2013 +0200"
      },
      "message": "net: syncookies: export cookie_v6_init_sequence/cookie_v6_check\n\nExtract the local TCP stack independant parts of tcp_v6_init_sequence()\nand cookie_v6_check() and export them for use by the upcoming IPv6 SYNPROXY\ntarget.\n\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nTested-by: Martin Topholm \u003cmph@one.com\u003e\nSigned-off-by: Jesper Dangaard Brouer \u003cbrouer@redhat.com\u003e\nSigned-off-by: Pablo Neira Ayuso \u003cpablo@netfilter.org\u003e\n"
    },
    {
      "commit": "0198230b7705eb2386e53778d944e307eef0cc71",
      "tree": "0f1a970873df8a3dd3c1111020b6555e8f8d0518",
      "parents": [
        "41d73ec053d2424599c4ed8452b889374d523ade"
      ],
      "author": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Tue Aug 27 08:50:13 2013 +0200"
      },
      "committer": {
        "name": "Pablo Neira Ayuso",
        "email": "pablo@netfilter.org",
        "time": "Wed Aug 28 00:27:44 2013 +0200"
      },
      "message": "net: syncookies: export cookie_v4_init_sequence/cookie_v4_check\n\nExtract the local TCP stack independant parts of tcp_v4_init_sequence()\nand cookie_v4_check() and export them for use by the upcoming SYNPROXY\ntarget.\n\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nTested-by: Martin Topholm \u003cmph@one.com\u003e\nSigned-off-by: Jesper Dangaard Brouer \u003cbrouer@redhat.com\u003e\nSigned-off-by: Pablo Neira Ayuso \u003cpablo@netfilter.org\u003e\n"
    },
    {
      "commit": "149479d019e06df5a7f4096f95c00cfb1380309c",
      "tree": "693d54479d3377a5b4bd7ddfb61394f26706defd",
      "parents": [
        "469230d118dc0822f6bf46c75ab147fa9f00741f"
      ],
      "author": {
        "name": "Yuchung Cheng",
        "email": "ycheng@google.com",
        "time": "Thu Aug 08 14:06:22 2013 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Aug 10 00:35:33 2013 -0700"
      },
      "message": "tcp: add server ip to encrypt cookie in fast open\n\nEncrypt the cookie with both server and client IPv4 addresses,\nsuch that multi-homed server will grant different cookies\nbased on both the source and destination IPs. No client change\nis needed since cookie is opaque to the client.\n\nSigned-off-by: Yuchung Cheng \u003cycheng@google.com\u003e\nReviewed-by: Eric Dumazet \u003cedumazet@google.com\u003e\nAcked-by: Neal Cardwell \u003cncardwell@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c0155b2da4cd6583b1b729451249ca346e1c05a2",
      "tree": "908835cb5413849e658f1dd1761b1ff19ad66dea",
      "parents": [
        "4299c8a94fa9d26b54222d7781244137623d4b39"
      ],
      "author": {
        "name": "Dmitry Popov",
        "email": "dp@highloadlab.com",
        "time": "Wed Jul 31 13:39:45 2013 +0400"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 31 12:16:45 2013 -0700"
      },
      "message": "tcp: Remove unused tcpct declarations and comments\n\nRemove declaration, 4 defines and confusing comment that are no longer used\nsince 1a2c6181c4 (\"tcp: Remove TCPCT\").\n\nSigned-off-by: Dmitry Popov \u003cdp@highloadlab.com\u003e\nAcked-by: Christoph Paasch \u003cchristoph.paasch@uclouvain.be\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c9bee3b7fdecb0c1d070c7b54113b3bdfb9a3d36",
      "tree": "6bcaa39bbd312c070bf31b703df4d6bb2a44fea9",
      "parents": [
        "64dc61306ce7da370833289739e2f52dfc6b37ba"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Mon Jul 22 20:27:07 2013 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 24 17:54:48 2013 -0700"
      },
      "message": "tcp: TCP_NOTSENT_LOWAT socket option\n\nIdea of this patch is to add optional limitation of number of\nunsent bytes in TCP sockets, to reduce usage of kernel memory.\n\nTCP receiver might announce a big window, and TCP sender autotuning\nmight allow a large amount of bytes in write queue, but this has little\nperformance impact if a large part of this buffering is wasted :\n\nWrite queue needs to be large only to deal with large BDP, not\nnecessarily to cope with scheduling delays (incoming ACKS make room\nfor the application to queue more bytes)\n\nFor most workloads, using a value of 128 KB or less is OK to give\napplications enough time to react to POLLOUT events in time\n(or being awaken in a blocking sendmsg())\n\nThis patch adds two ways to set the limit :\n\n1) Per socket option TCP_NOTSENT_LOWAT\n\n2) A sysctl (/proc/sys/net/ipv4/tcp_notsent_lowat) for sockets\nnot using TCP_NOTSENT_LOWAT socket option (or setting a zero value)\nDefault value being UINT_MAX (0xFFFFFFFF), meaning this has no effect.\n\nThis changes poll()/select()/epoll() to report POLLOUT\nonly if number of unsent bytes is below tp-\u003enosent_lowat\n\nNote this might increase number of sendmsg()/sendfile() calls\nwhen using non blocking sockets,\nand increase number of context switches for blocking sockets.\n\nNote this is not related to SO_SNDLOWAT (as SO_SNDLOWAT is\ndefined as :\n Specify the minimum number of bytes in the buffer until\n the socket layer will pass the data to the protocol)\n\nTested:\n\nnetperf sessions, and watching /proc/net/protocols \"memory\" column for TCP\n\nWith 200 concurrent netperf -t TCP_STREAM sessions, amount of kernel memory\nused by TCP buffers shrinks by ~55 % (20567 pages instead of 45458)\n\nlpq83:~# echo -1 \u003e/proc/sys/net/ipv4/tcp_notsent_lowat\nlpq83:~# (super_netperf 200 -t TCP_STREAM -H remote -l 90 \u0026); sleep 60 ; grep TCP /proc/net/protocols\nTCPv6     1880      2   45458   no     208   yes  ipv6        y  y  y  y  y  y  y  y  y  y  y  y  y  n  y  y  y  y  y\nTCP       1696    508   45458   no     208   yes  kernel      y  y  y  y  y  y  y  y  y  y  y  y  y  n  y  y  y  y  y\n\nlpq83:~# echo 131072 \u003e/proc/sys/net/ipv4/tcp_notsent_lowat\nlpq83:~# (super_netperf 200 -t TCP_STREAM -H remote -l 90 \u0026); sleep 60 ; grep TCP /proc/net/protocols\nTCPv6     1880      2   20567   no     208   yes  ipv6        y  y  y  y  y  y  y  y  y  y  y  y  y  n  y  y  y  y  y\nTCP       1696    508   20567   no     208   yes  kernel      y  y  y  y  y  y  y  y  y  y  y  y  y  n  y  y  y  y  y\n\nUsing 128KB has no bad effect on the throughput or cpu usage\nof a single flow, although there is an increase of context switches.\n\nA bonus is that we hold socket lock for a shorter amount\nof time and should improve latencies of ACK processing.\n\nlpq83:~# echo -1 \u003e/proc/sys/net/ipv4/tcp_notsent_lowat\nlpq83:~# perf stat -e context-switches ./netperf -H 7.7.7.84 -t omni -l 20 -c -i10,3\nOMNI Send TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 7.7.7.84 () port 0 AF_INET : +/-2.500% @ 99% conf.\nLocal       Remote      Local  Elapsed Throughput Throughput  Local Local  Remote Remote Local   Remote  Service\nSend Socket Recv Socket Send   Time               Units       CPU   CPU    CPU    CPU    Service Service Demand\nSize        Size        Size   (sec)                          Util  Util   Util   Util   Demand  Demand  Units\nFinal       Final                                             %     Method %      Method\n1651584     6291456     16384  20.00   17447.90   10^6bits/s  3.13  S      -1.00  U      0.353   -1.000  usec/KB\n\n Performance counter stats for \u0027./netperf -H 7.7.7.84 -t omni -l 20 -c -i10,3\u0027:\n\n           412,514 context-switches\n\n     200.034645535 seconds time elapsed\n\nlpq83:~# echo 131072 \u003e/proc/sys/net/ipv4/tcp_notsent_lowat\nlpq83:~# perf stat -e context-switches ./netperf -H 7.7.7.84 -t omni -l 20 -c -i10,3\nOMNI Send TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 7.7.7.84 () port 0 AF_INET : +/-2.500% @ 99% conf.\nLocal       Remote      Local  Elapsed Throughput Throughput  Local Local  Remote Remote Local   Remote  Service\nSend Socket Recv Socket Send   Time               Units       CPU   CPU    CPU    CPU    Service Service Demand\nSize        Size        Size   (sec)                          Util  Util   Util   Util   Demand  Demand  Units\nFinal       Final                                             %     Method %      Method\n1593240     6291456     16384  20.00   17321.16   10^6bits/s  3.35  S      -1.00  U      0.381   -1.000  usec/KB\n\n Performance counter stats for \u0027./netperf -H 7.7.7.84 -t omni -l 20 -c -i10,3\u0027:\n\n         2,675,818 context-switches\n\n     200.029651391 seconds time elapsed\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nCc: Neal Cardwell \u003cncardwell@google.com\u003e\nCc: Yuchung Cheng \u003cycheng@google.com\u003e\nAcked-By: Yuchung Cheng \u003cycheng@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5b08e47caf1f2034a3a5b566bbccc8b0be3961ca",
      "tree": "5cdd3ad01a4b854c80bad612051ac7ce7140e948",
      "parents": [
        "375fe02c91792917aa26d68a87ab110d1937f44e"
      ],
      "author": {
        "name": "Yuchung Cheng",
        "email": "ycheng@google.com",
        "time": "Mon Jul 22 16:20:46 2013 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 22 17:53:42 2013 -0700"
      },
      "message": "tcp: prefer packet timing to TS-ECR for RTT\n\nPrefer packet timings to TS-ecr for RTT measurements when both\nsources are available. That\u0027s because broken middle-boxes and remote\npeer can return packets with corrupted TS ECR fields. Similarly most\ncongestion controls that require RTT signals favor timing-based\nsources as well. Also check for bad TS ECR values to avoid RTT\nblow-ups. It has happened on production Web servers.\n\nSigned-off-by: Yuchung Cheng \u003cycheng@google.com\u003e\nAcked-by: Neal Cardwell \u003cncardwell@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "375fe02c91792917aa26d68a87ab110d1937f44e",
      "tree": "2a6c1205f6b136f7ac55f191912b386a0f3b2491",
      "parents": [
        "c3f51d5f387b552b9d9fd7f41e19b84929712f82"
      ],
      "author": {
        "name": "Yuchung Cheng",
        "email": "ycheng@google.com",
        "time": "Mon Jul 22 16:20:45 2013 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 22 17:53:42 2013 -0700"
      },
      "message": "tcp: consolidate SYNACK RTT sampling\n\nThe first patch consolidates SYNACK and other RTT measurement to use a\ncentral function tcp_ack_update_rtt(). A (small) bonus is now SYNACK\nRTT measurement happens after PAWS check, potentially reducing the\nimpact of RTO seeding on bad TCP timestamps values.\n\nSigned-off-by: Yuchung Cheng \u003cycheng@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7ae8639c9d6d5aba7990b4fad3506ff7b4667a45",
      "tree": "e48b9fbaac8312e53bb49a7bd0f4c41020ec3f3e",
      "parents": [
        "e4fc408e0e99fd2e009c8b3702d9637f5554fd5c"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Tue Jun 25 01:21:06 2013 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 25 02:44:05 2013 -0700"
      },
      "message": "tcp: remove invalid __rcu annotation\n\nstruct tcp_fastopen_context has a field named tfm, which is a pointer\nto a crypto_cipher structure.\n\nIt currently has a __rcu annotation, which is not needed at all.\n\ntcp_fastopen_ctx is the pointer fetched by rcu_dereference(), but once\nwe have a pointer to current tcp_fastopen_context, we do not use/need\nrcu_dereference() to access tfm.\n\nThis fixes a lot of sparse errors like the following :\n\nnet/ipv4/tcp_fastopen.c:21:31: warning: incorrect type in argument 1 (different address spaces)\nnet/ipv4/tcp_fastopen.c:21:31:    expected struct crypto_cipher *tfm\nnet/ipv4/tcp_fastopen.c:21:31:    got struct crypto_cipher [noderef] \u003casn:4\u003e*tfm\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nCc: Jerry Chu \u003chkchu@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "85f16525a2eb66e6092cbd8dcf42371df8334ed0",
      "tree": "adaf85853246f46fc00f9ed4235059650acf7517",
      "parents": [
        "8e994402ad5e6ae3d391c0935f9f1dc2eeb92a5e"
      ],
      "author": {
        "name": "Yuchung Cheng",
        "email": "ycheng@google.com",
        "time": "Tue Jun 11 15:35:32 2013 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jun 13 02:46:29 2013 -0700"
      },
      "message": "tcp: properly send new data in fast recovery in first RTT\n\nLinux sends new unset data during disorder and recovery state if all\n(suspected) lost packets have been retransmitted ( RFC5681, section\n3.2 step 1 \u0026 2, RFC3517 section 4, NexSeg() Rule 2).  One requirement\nis to keep the receive window about twice the estimated sender\u0027s\ncongestion window (tcp_rcv_space_adjust()), assuming the fast\nretransmits repair the losses in the next round trip.\n\nBut currently it\u0027s not the case on the first round trip in either\nnormal or Fast Open connection, beucase the initial receive window\nis identical to (expected) sender\u0027s initial congestion window. The\nfix is to double it.\n\nSigned-off-by: Yuchung Cheng \u003cycheng@google.com\u003e\nAcked-by: Neal Cardwell \u003cncardwell@google.com\u003e\nAcked-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "28850dc7c71da9d0c0e39246e9ff6913f41f8d0a",
      "tree": "1ff43aef62041c487d4175af44e73da90bb70ce9",
      "parents": [
        "5ee98591577aa63dbb9e78a0d142abc86b9063d0"
      ],
      "author": {
        "name": "Daniel Borkmann",
        "email": "dborkman@redhat.com",
        "time": "Fri Jun 07 05:11:46 2013 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jun 07 14:39:05 2013 -0700"
      },
      "message": "net: tcp: move GRO/GSO functions to tcp_offload\n\nWould be good to make things explicit and move those functions to\na new file called tcp_offload.c, thus make this similar to tcpv6_offload.c.\nWhile moving all related functions into tcp_offload.c, we can also\nmake some of them static, since they are only used there. Also, add\nan explicit registration function.\n\nSuggested-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Daniel Borkmann \u003cdborkman@redhat.com\u003e\nAcked-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "71cea17ed39fdf1c0634f530ddc6a2c2fc601c2b",
      "tree": "ec6ec3929a41948fb7fef76cceaebf2f1681f1d8",
      "parents": [
        "168fc21a971e4bc821a7838ccc39b7bdaf316c11"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Mon May 20 06:52:26 2013 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 20 14:00:42 2013 -0700"
      },
      "message": "tcp: md5: remove spinlock usage in fast path\n\nTCP md5 code uses per cpu variables but protects access to them with\na shared spinlock, which is a contention point.\n\n[ tcp_md5sig_pool_lock is locked twice per incoming packet ]\n\nMakes things much simpler, by allocating crypto structures once, first\ntime a socket needs md5 keys, and not deallocating them as they are\nreally small.\n\nNext step would be to allow crypto allocations being done in a NUMA\naware way.\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nCc: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3e59cb0ddfd2c59991f38e89352ad8a3c71b2374",
      "tree": "8bac5e7632178f7ff879d8c9e0ca8fc15a1f7299",
      "parents": [
        "3cc7587b30032b7c4dd9610a55a77519e84da7db"
      ],
      "author": {
        "name": "Yuchung Cheng",
        "email": "ycheng@google.com",
        "time": "Fri May 17 13:45:05 2013 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun May 19 23:51:17 2013 -0700"
      },
      "message": "tcp: remove bad timeout logic in fast recovery\n\ntcp_timeout_skb() was intended to trigger fast recovery on timeout,\nunfortunately in reality it often causes spurious retransmission\nstorms during fast recovery. The particular sign is a fast retransmit\nover the highest sacked sequence (SND.FACK).\n\nCurrently the RTO timer re-arming (as in RFC6298) offers a nice cushion\nto avoid spurious timeout: when SND.UNA advances the sender re-arms\nRTO and extends the timeout by icsk_rto. The sender does not offset\nthe time elapsed since the packet at SND.UNA was sent.\n\nBut if the next (DUP)ACK arrives later than ~RTTVAR and triggers\ntcp_fastretrans_alert(), then tcp_timeout_skb() will mark any packet\nsent before the icsk_rto interval lost, including one that\u0027s above the\nhighest sacked sequence. Most likely a large part of scorebard will be\nmarked.\n\nIf most packets are not lost then the subsequent DUPACKs with new SACK\nblocks will cause the sender to continue to retransmit packets beyond\nSND.FACK spuriously. Even if only one packet is lost the sender may\nfalsely retransmit almost the entire window.\n\nThe situation becomes common in the world of bufferbloat: the RTT\ncontinues to grow as the queue builds up but RTTVAR remains small and\nclose to the minimum 200ms. If a data packet is lost and the DUPACK\ntriggered by the next data packet is slightly delayed, then a spurious\nretransmission storm forms.\n\nAs the original comment on tcp_timeout_skb() suggests: the usefulness\nof this feature is questionable. It also wastes cycles walking the\nsack scoreboard and is actually harmful because of false recovery.\n\nIt\u0027s time to remove this.\n\nSigned-off-by: Yuchung Cheng \u003cycheng@google.com\u003e\nAcked-by: Eric Dumazet \u003cedumazet@google.com\u003e\nAcked-by: Neal Cardwell \u003cncardwell@google.com\u003e\nAcked-by: Nandita Dukkipati \u003cnanditad@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d6a4a10411764cf1c3a5dad4f06c5ebe5194488b",
      "tree": "54d1e4c0c92bc780d9e2f8a822c1c8dc271df70d",
      "parents": [
        "d14a489a411937fb9420fe2b05168ee9e1e06c9c"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Fri Apr 12 11:31:52 2013 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Apr 12 18:17:06 2013 -0400"
      },
      "message": "tcp: GSO should be TSQ friendly\n\nI noticed that TSQ (TCP Small queues) was less effective when TSO is\nturned off, and GSO is on. If BQL is not enabled, TSQ has then no\neffect.\n\nIt turns out the GSO engine frees the original gso_skb at the time the\nfragments are generated and queued to the NIC.\n\nWe should instead call the tcp_wfree() destructor for the last fragment,\nto keep the flow control as intended in TSQ. This effectively limits\nthe number of queued packets on qdisc + NIC layers.\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nCc: Tom Herbert \u003ctherbert@google.com\u003e\nCc: Yuchung Cheng \u003cycheng@google.com\u003e\nCc: Nandita Dukkipati \u003cnanditad@google.com\u003e\nCc: Neal Cardwell \u003cncardwell@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8466563e16d5198b6efeb3b51791b95b6aaacb6b",
      "tree": "02bb976a4206e2e67285f6f6a50e98dd4881507c",
      "parents": [
        "4a0b5ec12f0ffc3024616e6dc62cf8a04c54edcd"
      ],
      "author": {
        "name": "Neal Cardwell",
        "email": "ncardwell@google.com",
        "time": "Tue Apr 02 13:13:07 2013 -0400"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 02 14:26:50 2013 -0400"
      },
      "message": "tcp: Remove dead sysctl_tcp_cookie_size declaration\n\nRemove a declaration left over from the TCPCT-ectomy. This sysctl is\nno longer referenced anywhere since 1a2c6181c4 (\"tcp: Remove TCPCT\").\n\nSigned-off-by: Neal Cardwell \u003cncardwell@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9b44190dc114c1720b34975b5bfc65aece112ced",
      "tree": "c1202e05d6a04fa1d31be2ad2942fbe32ffa3f76",
      "parents": [
        "e306e2c13b8c214618af0c61acf62a6e42d486de"
      ],
      "author": {
        "name": "Yuchung Cheng",
        "email": "ycheng@google.com",
        "time": "Wed Mar 20 13:32:58 2013 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Mar 21 11:47:50 2013 -0400"
      },
      "message": "tcp: refactor F-RTO\n\nThe patch series refactor the F-RTO feature (RFC4138/5682).\n\nThis is to simplify the loss recovery processing. Existing F-RTO\nwas developed during the experimental stage (RFC4138) and has\nmany experimental features.  It takes a separate code path from\nthe traditional timeout processing by overloading CA_Disorder\ninstead of using CA_Loss state. This complicates CA_Disorder state\nhandling because it\u0027s also used for handling dubious ACKs and undos.\nWhile the algorithm in the RFC does not change the congestion control,\nthe implementation intercepts congestion control in various places\n(e.g., frto_cwnd in tcp_ack()).\n\nThe new code implements newer F-RTO RFC5682 using CA_Loss processing\npath.  F-RTO becomes a small extension in the timeout processing\nand interfaces with congestion control and Eifel undo modules.\nIt lets congestion control (module) determines how many to send\nindependently.  F-RTO only chooses what to send in order to detect\nspurious retranmission. If timeout is found spurious it invokes\nexisting Eifel undo algorithms like DSACK or TCP timestamp based\ndetection.\n\nThe first patch removes all F-RTO code except the sysctl_tcp_frto is\nleft for the new implementation.  Since CA_EVENT_FRTO is removed, TCP\nwestwood now computes ssthresh on regular timeout CA_EVENT_LOSS event.\n\nSigned-off-by: Yuchung Cheng \u003cycheng@google.com\u003e\nAcked-by: Neal Cardwell \u003cncardwell@google.com\u003e\nAcked-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1a2c6181c4a1922021b4d7df373bba612c3e5f04",
      "tree": "1346c9b1db83495a98fbcf95f8e521c67fc55cb9",
      "parents": [
        "94d8f2b133c9ff97105adc1233d1a35e16e1e7a6"
      ],
      "author": {
        "name": "Christoph Paasch",
        "email": "christoph.paasch@uclouvain.be",
        "time": "Sun Mar 17 08:23:34 2013 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Mar 17 14:35:13 2013 -0400"
      },
      "message": "tcp: Remove TCPCT\n\nTCPCT uses option-number 253, reserved for experimental use and should\nnot be used in production environments.\nFurther, TCPCT does not fully implement RFC 6013.\n\nAs a nice side-effect, removing TCPCT increases TCP\u0027s performance for\nvery short flows:\n\nDoing an apache-benchmark with -c 100 -n 100000, sending HTTP-requests\nfor files of 1KB size.\n\nbefore this patch:\n\taverage (among 7 runs) of 20845.5 Requests/Second\nafter:\n\taverage (among 7 runs) of 21403.6 Requests/Second\n\nSigned-off-by: Christoph Paasch \u003cchristoph.paasch@uclouvain.be\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6ba8a3b19e764b6a65e4030ab0999be50c291e6c",
      "tree": "57ba4b6411762d1124a3e08577e32e86769c024f",
      "parents": [
        "83e519b63480e691d43ee106547b10941bfa0232"
      ],
      "author": {
        "name": "Nandita Dukkipati",
        "email": "nanditad@google.com",
        "time": "Mon Mar 11 10:00:43 2013 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Mar 12 08:30:34 2013 -0400"
      },
      "message": "tcp: Tail loss probe (TLP)\n\nThis patch series implement the Tail loss probe (TLP) algorithm described\nin http://tools.ietf.org/html/draft-dukkipati-tcpm-tcp-loss-probe-01. The\nfirst patch implements the basic algorithm.\n\nTLP\u0027s goal is to reduce tail latency of short transactions. It achieves\nthis by converting retransmission timeouts (RTOs) occuring due\nto tail losses (losses at end of transactions) into fast recovery.\nTLP transmits one packet in two round-trips when a connection is in\nOpen state and isn\u0027t receiving any ACKs. The transmitted packet, aka\nloss probe, can be either new or a retransmission. When there is tail\nloss, the ACK from a loss probe triggers FACK/early-retransmit based\nfast recovery, thus avoiding a costly RTO. In the absence of loss,\nthere is no change in the connection state.\n\nPTO stands for probe timeout. It is a timer event indicating\nthat an ACK is overdue and triggers a loss probe packet. The PTO value\nis set to max(2*SRTT, 10ms) and is adjusted to account for delayed\nACK timer when there is only one oustanding packet.\n\nTLP Algorithm\n\nOn transmission of new data in Open state:\n  -\u003e packets_out \u003e 1: schedule PTO in max(2*SRTT, 10ms).\n  -\u003e packets_out \u003d\u003d 1: schedule PTO in max(2*RTT, 1.5*RTT + 200ms)\n  -\u003e PTO \u003d min(PTO, RTO)\n\nConditions for scheduling PTO:\n  -\u003e Connection is in Open state.\n  -\u003e Connection is either cwnd limited or no new data to send.\n  -\u003e Number of probes per tail loss episode is limited to one.\n  -\u003e Connection is SACK enabled.\n\nWhen PTO fires:\n  new_segment_exists:\n    -\u003e transmit new segment.\n    -\u003e packets_out++. cwnd remains same.\n\n  no_new_packet:\n    -\u003e retransmit the last segment.\n       Its ACK triggers FACK or early retransmit based recovery.\n\nACK path:\n  -\u003e rearm RTO at start of ACK processing.\n  -\u003e reschedule PTO if need be.\n\nIn addition, the patch includes a small variation to the Early Retransmit\n(ER) algorithm, such that ER and TLP together can in principle recover any\nN-degree of tail loss through fast recovery. TLP is controlled by the same\nsysctl as ER, tcp_early_retrans sysctl.\ntcp_early_retrans\u003d\u003d0; disables TLP and ER.\n\t\t \u003d\u003d1; enables RFC5827 ER.\n\t\t \u003d\u003d2; delayed ER.\n\t\t \u003d\u003d3; TLP and delayed ER. [DEFAULT]\n\t\t \u003d\u003d4; TLP only.\n\nThe TLP patch series have been extensively tested on Google Web servers.\nIt is most effective for short Web trasactions, where it reduced RTOs by 15%\nand improved HTTP response time (average by 6%, 99th percentile by 10%).\nThe transmitted probes account for \u003c0.5% of the overall transmissions.\n\nSigned-off-by: Nandita Dukkipati \u003cnanditad@google.com\u003e\nAcked-by: Neal Cardwell \u003cncardwell@google.com\u003e\nAcked-by: Yuchung Cheng \u003cycheng@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b2fb4f54ecd47c42413d54b4666b06cf93c05abf",
      "tree": "572853a2579c8472c31991bf7c61f11bc613e18b",
      "parents": [
        "f3564b2bb5f86f42b8a068751551b6bd01325d9c"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Wed Mar 06 12:58:01 2013 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Mar 07 16:22:39 2013 -0500"
      },
      "message": "tcp: uninline tcp_prequeue()\n\ntcp_prequeue() became too big to be inlined.\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "79ffef1fe213851f44bfccf037170a140e929f85",
      "tree": "e1d7cfc3f97a1f5a1cb903aff128f4bb41651f4d",
      "parents": [
        "8d6d840683228ebded898a865657394981c82aaa"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Wed Feb 27 07:05:03 2013 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Feb 28 15:37:29 2013 -0500"
      },
      "message": "tcp: avoid wakeups for pure ACK\n\nTCP prequeue mechanism purpose is to let incoming packets\nbeing processed by the thread currently blocked in tcp_recvmsg(),\ninstead of behalf of the softirq handler, to better adapt flow\ncontrol on receiver host capacity to schedule the consumer.\n\nBut in typical request/answer workloads, we send request, then\nblock to receive the answer. And before the actual answer, TCP\nstack receives the ACK packets acknowledging the request.\n\nProcessing pure ACK on behalf of the thread blocked in tcp_recvmsg()\nis a waste of resources, as thread has to immediately sleep again\nbecause it got no payload.\n\nThis patch avoids the extra context switches and scheduler overhead.\n\nBefore patch :\n\na:~# echo 0 \u003e/proc/sys/net/ipv4/tcp_low_latency\na:~# perf stat ./super_netperf 300 -t TCP_RR -l 10 -H 7.7.7.84 -- -r 8k,8k\n231676\n\n Performance counter stats for \u0027./super_netperf 300 -t TCP_RR -l 10 -H 7.7.7.84 -- -r 8k,8k\u0027:\n\n     116251.501765 task-clock                #   11.369 CPUs utilized\n         5,025,463 context-switches          #    0.043 M/sec\n         1,074,511 CPU-migrations            #    0.009 M/sec\n           216,923 page-faults               #    0.002 M/sec\n   311,636,972,396 cycles                    #    2.681 GHz\n   260,507,138,069 stalled-cycles-frontend   #   83.59% frontend cycles idle\n   155,590,092,840 stalled-cycles-backend    #   49.93% backend  cycles idle\n   100,101,255,411 instructions              #    0.32  insns per cycle\n                                             #    2.60  stalled cycles per insn\n    16,535,930,999 branches                  #  142.243 M/sec\n       646,483,591 branch-misses             #    3.91% of all branches\n\n      10.225482774 seconds time elapsed\n\nAfter patch :\n\na:~# echo 0 \u003e/proc/sys/net/ipv4/tcp_low_latency\na:~# perf stat ./super_netperf 300 -t TCP_RR -l 10 -H 7.7.7.84 -- -r 8k,8k\n233297\n\n Performance counter stats for \u0027./super_netperf 300 -t TCP_RR -l 10 -H 7.7.7.84 -- -r 8k,8k\u0027:\n\n      91084.870855 task-clock                #    8.887 CPUs utilized\n         2,485,916 context-switches          #    0.027 M/sec\n           815,520 CPU-migrations            #    0.009 M/sec\n           216,932 page-faults               #    0.002 M/sec\n   245,195,022,629 cycles                    #    2.692 GHz\n   202,635,777,041 stalled-cycles-frontend   #   82.64% frontend cycles idle\n   124,280,372,407 stalled-cycles-backend    #   50.69% backend  cycles idle\n    83,457,289,618 instructions              #    0.34  insns per cycle\n                                             #    2.43  stalled cycles per insn\n    13,431,472,361 branches                  #  147.461 M/sec\n       504,470,665 branch-misses             #    3.76% of all branches\n\n      10.249594448 seconds time elapsed\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nCc: Neal Cardwell \u003cncardwell@google.com\u003e\nCc: Tom Herbert \u003ctherbert@google.com\u003e\nCc: Yuchung Cheng \u003cycheng@google.com\u003e\nCc: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ca2eb5679f8ddffff60156af42595df44a315ef0",
      "tree": "e056a2cf5454039f071d47cc919bf73a9bf0c60f",
      "parents": [
        "547472b8e1da72ae226430c0c4273e36fc8ca768"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org",
        "time": "Tue Feb 05 07:25:17 2013 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Feb 05 14:51:16 2013 -0500"
      },
      "message": "tcp: remove Appropriate Byte Count support\n\nTCP Appropriate Byte Count was added by me, but later disabled.\nThere is no point in maintaining it since it is a potential source\nof bugs and Linux already implements other better window protection\nheuristics.\n\nSigned-off-by: Stephen Hemminger \u003cstephen@networkplumber.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5d134f1c1f36166e8a738de92c4d2f4c262ff91b",
      "tree": "6d1504359c7f1ade1c79da0e468a2a409af5c56c",
      "parents": [
        "71bcdba06db91ceaaffe019b6c958b5faf06012a"
      ],
      "author": {
        "name": "Hannes Frederic Sowa",
        "email": "hannes@stressinduktion.org",
        "time": "Sat Jan 05 16:10:48 2013 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jan 06 21:09:56 2013 -0800"
      },
      "message": "tcp: make sysctl_tcp_ecn namespace aware\n\nAs per suggestion from Eric Dumazet this patch makes tcp_ecn sysctl\nnamespace aware.  The reason behind this patch is to ease the testing\nof ecn problems on the internet and allows applications to tune their\nown use of ecn.\n\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: Hannes Frederic Sowa \u003channes@stressinduktion.org\u003e\nAcked-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6be35c700f742e911ecedd07fcc43d4439922334",
      "tree": "ca9f37214d204465fcc2d79c82efd291e357c53c",
      "parents": [
        "e37aa63e87bd581f9be5555ed0ba83f5295c92fc",
        "520dfe3a3645257bf83660f672c47f8558f3d4c4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 12 18:07:07 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 12 18:07:07 2012 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next\n\nPull networking changes from David Miller:\n\n1) Allow to dump, monitor, and change the bridge multicast database\n   using netlink.  From Cong Wang.\n\n2) RFC 5961 TCP blind data injection attack mitigation, from Eric\n   Dumazet.\n\n3) Networking user namespace support from Eric W. Biederman.\n\n4) tuntap/virtio-net multiqueue support by Jason Wang.\n\n5) Support for checksum offload of encapsulated packets (basically,\n   tunneled traffic can still be checksummed by HW).  From Joseph\n   Gasparakis.\n\n6) Allow BPF filter access to VLAN tags, from Eric Dumazet and\n   Daniel Borkmann.\n\n7) Bridge port parameters over netlink and BPDU blocking support\n   from Stephen Hemminger.\n\n8) Improve data access patterns during inet socket demux by rearranging\n   socket layout, from Eric Dumazet.\n\n9) TIPC protocol updates and cleanups from Ying Xue, Paul Gortmaker, and\n   Jon Maloy.\n\n10) Update TCP socket hash sizing to be more in line with current day\n    realities.  The existing heurstics were choosen a decade ago.\n    From Eric Dumazet.\n\n11) Fix races, queue bloat, and excessive wakeups in ATM and\n    associated drivers, from Krzysztof Mazur and David Woodhouse.\n\n12) Support DOVE (Distributed Overlay Virtual Ethernet) extensions\n    in VXLAN driver, from David Stevens.\n\n13) Add \"oops_only\" mode to netconsole, from Amerigo Wang.\n\n14) Support set and query of VEB/VEPA bridge mode via PF_BRIDGE, also\n    allow DCB netlink to work on namespaces other than the initial\n    namespace.  From John Fastabend.\n\n15) Support PTP in the Tigon3 driver, from Matt Carlson.\n\n16) tun/vhost zero copy fixes and improvements, plus turn it on\n    by default, from Michael S. Tsirkin.\n\n17) Support per-association statistics in SCTP, from Michele\n    Baldessari.\n\nAnd many, many, driver updates, cleanups, and improvements.  Too\nnumerous to mention individually.\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1722 commits)\n  net/mlx4_en: Add support for destination MAC in steering rules\n  net/mlx4_en: Use generic etherdevice.h functions.\n  net: ethtool: Add destination MAC address to flow steering API\n  bridge: add support of adding and deleting mdb entries\n  bridge: notify mdb changes via netlink\n  ndisc: Unexport ndisc_{build,send}_skb().\n  uapi: add missing netconf.h to export list\n  pkt_sched: avoid requeues if possible\n  solos-pci: fix double-free of TX skb in DMA mode\n  bnx2: Fix accidental reversions.\n  bna: Driver Version Updated to 3.1.2.1\n  bna: Firmware update\n  bna: Add RX State\n  bna: Rx Page Based Allocation\n  bna: TX Intr Coalescing Fix\n  bna: Tx and Rx Optimizations\n  bna: Code Cleanup and Enhancements\n  ath9k: check pdata variable before dereferencing it\n  ath5k: RX timestamp is reported at end of frame\n  ath9k_htc: RX timestamp is reported at end of frame\n  ...\n"
    },
    {
      "commit": "93b174ad71b08e504c2cf6e8a58ecce778b77a40",
      "tree": "f9e7fd386880ae14d4625de9801a57c5bf5fa105",
      "parents": [
        "1afa471706963643ceeda7cbbe9c605a1e883d53"
      ],
      "author": {
        "name": "Yuchung Cheng",
        "email": "ycheng@google.com",
        "time": "Thu Dec 06 08:45:32 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 07 14:39:28 2012 -0500"
      },
      "message": "tcp: bug fix Fast Open client retransmission\n\nIf SYN-ACK partially acks SYN-data, the client retransmits the\nremaining data by tcp_retransmit_skb(). This increments lost recovery\nstate variables like tp-\u003eretrans_out in Open state. If loss recovery\nhappens before the retransmission is acked, it triggers the WARN_ON\ncheck in tcp_fastretrans_alert(). For example: the client sends\nSYN-data, gets SYN-ACK acking only ISN, retransmits data, sends\nanother 4 data packets and get 3 dupacks.\n\nSince the retransmission is not caused by network drop it should not\nupdate the recovery state variables. Further the server may return a\nsmaller MSS than the cached MSS used for SYN-data, so the retranmission\nneeds a loop. Otherwise some data will not be retransmitted until timeout\nor other loss recovery events.\n\nSigned-off-by: Yuchung Cheng \u003cycheng@google.com\u003e\nAcked-by: Neal Cardwell \u003cncardwell@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8d8be8389f1818b07505bbf2ec3fb2d556d84496",
      "tree": "e00ab14c42e45d060b291f0d2ab3090acecc7eb1",
      "parents": [
        "a386bff88575e206efbbad17190e591c8879f627"
      ],
      "author": {
        "name": "Neal Cardwell",
        "email": "ncardwell@google.com",
        "time": "Thu Nov 22 17:48:59 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Nov 23 14:10:31 2012 -0500"
      },
      "message": "tcp: remove dead prototype for tcp_v4_get_peer()\n\nThis function no longer exists.\n\nSigned-off-by: Neal Cardwell \u003cncardwell@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "016818d076871c4ee34db1e8d74dc17ac1de626a",
      "tree": "60d0f20afb0937f61b5fc4611e53a2ac411a0646",
      "parents": [
        "623df484a777f3c00c1ea3d6a7565b8d8ac688a1"
      ],
      "author": {
        "name": "Neal Cardwell",
        "email": "ncardwell@google.com",
        "time": "Sat Sep 22 04:18:55 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Sep 22 15:47:10 2012 -0400"
      },
      "message": "tcp: TCP Fast Open Server - take SYNACK RTT after completing 3WHS\n\nWhen taking SYNACK RTT samples for servers using TCP Fast Open, fix\nthe code to ensure that we only call tcp_valid_rtt_meas() after we\nreceive the ACK that completes the 3-way handshake.\n\nPreviously we were always taking an RTT sample in\ntcp_v4_syn_recv_sock(). However, for TCP Fast Open connections\ntcp_v4_conn_req_fastopen() calls tcp_v4_syn_recv_sock() at the time we\nreceive the SYN. So for TFO we must wait until tcp_rcv_state_process()\nto take the RTT sample.\n\nTo fix this, we wait until after TFO calls tcp_v4_syn_recv_sock()\nbefore we set the snt_synack timestamp, since tcp_synack_rtt_meas()\nalready ensures that we only take a SYNACK RTT sample if snt_synack is\nnon-zero. To be careful, we only take a snt_synack timestamp when\na SYNACK transmit or retransmit succeeds.\n\nSigned-off-by: Neal Cardwell \u003cncardwell@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "623df484a777f3c00c1ea3d6a7565b8d8ac688a1",
      "tree": "6394f6b3bac15a274dbaecc4c5d46761f838f2ca",
      "parents": [
        "de46584675fad02b7f8255f31be0ea1be5cd185b"
      ],
      "author": {
        "name": "Neal Cardwell",
        "email": "ncardwell@google.com",
        "time": "Sat Sep 22 04:18:54 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Sep 22 15:47:10 2012 -0400"
      },
      "message": "tcp: extract code to compute SYNACK RTT\n\nIn preparation for adding another spot where we compute the SYNACK\nRTT, extract this code so that it can be shared.\n\nSigned-off-by: Neal Cardwell \u003cncardwell@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "684bad1107571d35610a674c61b3544efb5a5b13",
      "tree": "aba9dc4a825ac3c454d9058f0bec0829f2b6df69",
      "parents": [
        "fb4d3d1df31907eadd2e2a745e840921888b346a"
      ],
      "author": {
        "name": "Yuchung Cheng",
        "email": "ycheng@google.com",
        "time": "Sun Sep 02 17:38:04 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 03 14:34:02 2012 -0400"
      },
      "message": "tcp: use PRR to reduce cwin in CWR state\n\nUse proportional rate reduction (PRR) algorithm to reduce cwnd in CWR state,\nin addition to Recovery state. Retire the current rate-halving in CWR.\nWhen losses are detected via ACKs in CWR state, the sender enters Recovery\nstate but the cwnd reduction continues and does not restart.\n\nRename and refactor cwnd reduction functions since both CWR and Recovery\nuse the same algorithm:\ntcp_init_cwnd_reduction() is new and initiates reduction state variables.\ntcp_cwnd_reduction() is previously tcp_update_cwnd_in_recovery().\ntcp_ends_cwnd_reduction() is previously  tcp_complete_cwr().\n\nThe rate halving functions and logic such as tcp_cwnd_down(), tcp_min_cwnd(),\nand the cwnd moderation inside tcp_enter_cwr() are removed. The unused\nparameter, flag, in tcp_cwnd_reduction() is also removed.\n\nSigned-off-by: Yuchung Cheng \u003cycheng@google.com\u003e\nAcked-by: Neal Cardwell \u003cncardwell@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8336886f786fdacbc19b719c1f7ea91eb70706d4",
      "tree": "c1fa912f7583ce0ffcb5ae673802da4a7dfb3b19",
      "parents": [
        "1046716368979dee857a2b8a91c4a8833f21b9cb"
      ],
      "author": {
        "name": "Jerry Chu",
        "email": "hkchu@google.com",
        "time": "Fri Aug 31 12:29:12 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Aug 31 20:02:19 2012 -0400"
      },
      "message": "tcp: TCP Fast Open Server - support TFO listeners\n\nThis patch builds on top of the previous patch to add the support\nfor TFO listeners. This includes -\n\n1. allocating, properly initializing, and managing the per listener\nfastopen_queue structure when TFO is enabled\n\n2. changes to the inet_csk_accept code to support TFO. E.g., the\nrequest_sock can no longer be freed upon accept(), not until 3WHS\nfinishes\n\n3. allowing a TCP_SYN_RECV socket to properly poll() and sendmsg()\nif it\u0027s a TFO socket\n\n4. properly closing a TFO listener, and a TFO socket before 3WHS\nfinishes\n\n5. supporting TCP_FASTOPEN socket option\n\n6. modifying tcp_check_req() to use to check a TFO socket as well\nas request_sock\n\n7. supporting TCP\u0027s TFO cookie option\n\n8. adding a new SYN-ACK retransmit handler to use the timer directly\noff the TFO socket rather than the listener socket. Note that TFO\nserver side will not retransmit anything other than SYN-ACK until\nthe 3WHS is completed.\n\nThe patch also contains an important function\n\"reqsk_fastopen_remove()\" to manage the somewhat complex relation\nbetween a listener, its request_sock, and the corresponding child\nsocket. See the comment above the function for the detail.\n\nSigned-off-by: H.K. Jerry Chu \u003chkchu@google.com\u003e\nCc: Yuchung Cheng \u003cycheng@google.com\u003e\nCc: Neal Cardwell \u003cncardwell@google.com\u003e\nCc: Eric Dumazet \u003cedumazet@google.com\u003e\nCc: Tom Herbert \u003ctherbert@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1046716368979dee857a2b8a91c4a8833f21b9cb",
      "tree": "fdda70278e6fa56c27d242fb1a0ec9b7e3e81d38",
      "parents": [
        "2a35cfa591ac63f17815c2d9432b799e37527980"
      ],
      "author": {
        "name": "Jerry Chu",
        "email": "hkchu@google.com",
        "time": "Fri Aug 31 12:29:11 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Aug 31 20:02:18 2012 -0400"
      },
      "message": "tcp: TCP Fast Open Server - header \u0026 support functions\n\nThis patch adds all the necessary data structure and support\nfunctions to implement TFO server side. It also documents a number\nof flags for the sysctl_tcp_fastopen knob, and adds a few Linux\nextension MIBs.\n\nIn addition, it includes the following:\n\n1. a new TCP_FASTOPEN socket option an application must call to\nsupply a max backlog allowed in order to enable TFO on its listener.\n\n2. A number of key data structures:\n\"fastopen_rsk\" in tcp_sock - for a big socket to access its\nrequest_sock for retransmission and ack processing purpose. It is\nnon-NULL iff 3WHS not completed.\n\n\"fastopenq\" in request_sock_queue - points to a per Fast Open\nlistener data structure \"fastopen_queue\" to keep track of qlen (# of\noutstanding Fast Open requests) and max_qlen, among other things.\n\n\"listener\" in tcp_request_sock - to point to the original listener\nfor book-keeping purpose, i.e., to maintain qlen against max_qlen\nas part of defense against IP spoofing attack.\n\n3. various data structure and functions, many in tcp_fastopen.c, to\nsupport server side Fast Open cookie operations, including\n/proc/sys/net/ipv4/tcp_fastopen_key to allow manual rekeying.\n\nSigned-off-by: H.K. Jerry Chu \u003chkchu@google.com\u003e\nCc: Yuchung Cheng \u003cycheng@google.com\u003e\nCc: Neal Cardwell \u003cncardwell@google.com\u003e\nCc: Eric Dumazet \u003cedumazet@google.com\u003e\nCc: Tom Herbert \u003ctherbert@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6c9ff979d1921e9fd05d89e1383121c2503759b9",
      "tree": "410b5538e913215285e83e88c1392f307e9799d6",
      "parents": [
        "c32f38619af6302da58835fb292b159bdd96d11f"
      ],
      "author": {
        "name": "Alex Bergmann",
        "email": "alex@linlab.net",
        "time": "Fri Aug 31 02:48:31 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Aug 31 15:42:10 2012 -0400"
      },
      "message": "tcp: Increase timeout for SYN segments\n\nCommit 9ad7c049 (\"tcp: RFC2988bis + taking RTT sample from 3WHS for\nthe passive open side\") changed the initRTO from 3secs to 1sec in\naccordance to RFC6298 (former RFC2988bis). This reduced the time till\nthe last SYN retransmission packet gets sent from 93secs to 31secs.\n\nRFC1122 is stating that the retransmission should be done for at least 3\nminutes, but this seems to be quite high.\n\n  \"However, the values of R1 and R2 may be different for SYN\n  and data segments.  In particular, R2 for a SYN segment MUST\n  be set large enough to provide retransmission of the segment\n  for at least 3 minutes.  The application can close the\n  connection (i.e., give up on the open attempt) sooner, of\n  course.\"\n\nThis patch increases the value of TCP_SYN_RETRIES to the value of 6,\nproviding a retransmission window of 63secs.\n\nThe comments for SYN and SYNACK retries have also been updated to\ndescribe the current settings. The same goes for the documentation file\n\"Documentation/networking/ip-sysctl.txt\".\n\nSigned-off-by: Alexander Bergmann \u003calex@linlab.net\u003e\nAcked-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e6acb384807406c1a6ad3ddc91191f7658e63b7a",
      "tree": "7906d1bb402ac30e4efaa1bc6451b1c7a4b6e768",
      "parents": [
        "255e87657a84e21986e5d9070f3dee4aa8d1d531",
        "898132ae76d1aeb52301f10e8795c34fbb54e853"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Aug 24 18:54:37 2012 -0400"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Aug 24 18:54:37 2012 -0400"
      },
      "message": "Merge branch \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace\n\nThis is an initial merge in of Eric Biederman\u0027s work to start adding\nuser namespace support to the networking.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a7cb5a49bf64ba64864ae16a6be028f8b0d3cc06",
      "tree": "0874310cc4af6cd0193e15058cb9ff9e7a955065",
      "parents": [
        "adb37c4c67f807f16beb222028fb3ce9a354dc2b"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu May 24 01:10:10 2012 -0600"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Aug 14 21:48:06 2012 -0700"
      },
      "message": "userns: Print out socket uids in a user namespace aware fashion.\n\nCc: Alexey Kuznetsov \u003ckuznet@ms2.inr.ac.ru\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Hideaki YOSHIFUJI \u003cyoshfuji@linux-ipv6.org\u003e\nCc: Patrick McHardy \u003ckaber@trash.net\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nCc: Sridhar Samudrala \u003csri@us.ibm.com\u003e\nAcked-by: Vlad Yasevich \u003cvyasevich@gmail.com\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nAcked-by: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "63d02d157ec4124990258d66517b6c11fd6df0cf",
      "tree": "c25becd60d6a3ca9f3f2ec93eaed36c2f76162b0",
      "parents": [
        "3a7c384ffd57ef5fbd95f48edaa2ca4eb3d9f2ee"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Thu Aug 09 14:11:00 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Aug 09 20:56:09 2012 -0700"
      },
      "message": "net: tcp: ipv6_mapped needs sk_rx_dst_set method\n\ncommit 5d299f3d3c8a2fb (net: ipv6: fix TCP early demux) added a\nregression for ipv6_mapped case.\n\n[   67.422369] SELinux: initialized (dev autofs, type autofs), uses\ngenfs_contexts\n[   67.449678] SELinux: initialized (dev autofs, type autofs), uses\ngenfs_contexts\n[   92.631060] BUG: unable to handle kernel NULL pointer dereference at\n(null)\n[   92.631435] IP: [\u003c          (null)\u003e]           (null)\n[   92.631645] PGD 0\n[   92.631846] Oops: 0010 [#1] SMP\n[   92.632095] Modules linked in: autofs4 sunrpc ipv6 dm_mirror\ndm_region_hash dm_log dm_multipath dm_mod video sbs sbshc battery ac lp\nparport sg snd_hda_intel snd_hda_codec snd_seq_oss snd_seq_midi_event\nsnd_seq snd_seq_device pcspkr snd_pcm_oss snd_mixer_oss snd_pcm\nsnd_timer serio_raw button floppy snd i2c_i801 i2c_core soundcore\nsnd_page_alloc shpchp ide_cd_mod cdrom microcode ehci_hcd ohci_hcd\nuhci_hcd\n[   92.634294] CPU 0\n[   92.634294] Pid: 4469, comm: sendmail Not tainted 3.6.0-rc1 #3\n[   92.634294] RIP: 0010:[\u003c0000000000000000\u003e]  [\u003c          (null)\u003e]\n(null)\n[   92.634294] RSP: 0018:ffff880245fc7cb0  EFLAGS: 00010282\n[   92.634294] RAX: ffffffffa01985f0 RBX: ffff88024827ad00 RCX:\n0000000000000000\n[   92.634294] RDX: 0000000000000218 RSI: ffff880254735380 RDI:\nffff88024827ad00\n[   92.634294] RBP: ffff880245fc7cc8 R08: 0000000000000001 R09:\n0000000000000000\n[   92.634294] R10: 0000000000000000 R11: ffff880245fc7bf8 R12:\nffff880254735380\n[   92.634294] R13: ffff880254735380 R14: 0000000000000000 R15:\n7fffffffffff0218\n[   92.634294] FS:  00007f4516ccd6f0(0000) GS:ffff880256600000(0000)\nknlGS:0000000000000000\n[   92.634294] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b\n[   92.634294] CR2: 0000000000000000 CR3: 0000000245ed1000 CR4:\n00000000000007f0\n[   92.634294] DR0: 0000000000000000 DR1: 0000000000000000 DR2:\n0000000000000000\n[   92.634294] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7:\n0000000000000400\n[   92.634294] Process sendmail (pid: 4469, threadinfo ffff880245fc6000,\ntask ffff880254b8cac0)\n[   92.634294] Stack:\n[   92.634294]  ffffffff813837a7 ffff88024827ad00 ffff880254b6b0e8\nffff880245fc7d68\n[   92.634294]  ffffffff81385083 00000000001d2680 ffff8802547353a8\nffff880245fc7d18\n[   92.634294]  ffffffff8105903a ffff88024827ad60 0000000000000002\n00000000000000ff\n[   92.634294] Call Trace:\n[   92.634294]  [\u003cffffffff813837a7\u003e] ? tcp_finish_connect+0x2c/0xfa\n[   92.634294]  [\u003cffffffff81385083\u003e] tcp_rcv_state_process+0x2b6/0x9c6\n[   92.634294]  [\u003cffffffff8105903a\u003e] ? sched_clock_cpu+0xc3/0xd1\n[   92.634294]  [\u003cffffffff81059073\u003e] ? local_clock+0x2b/0x3c\n[   92.634294]  [\u003cffffffff8138caf3\u003e] tcp_v4_do_rcv+0x63a/0x670\n[   92.634294]  [\u003cffffffff8133278e\u003e] release_sock+0x128/0x1bd\n[   92.634294]  [\u003cffffffff8139f060\u003e] __inet_stream_connect+0x1b1/0x352\n[   92.634294]  [\u003cffffffff813325f5\u003e] ? lock_sock_nested+0x74/0x7f\n[   92.634294]  [\u003cffffffff8104b333\u003e] ? wake_up_bit+0x25/0x25\n[   92.634294]  [\u003cffffffff813325f5\u003e] ? lock_sock_nested+0x74/0x7f\n[   92.634294]  [\u003cffffffff8139f223\u003e] ? inet_stream_connect+0x22/0x4b\n[   92.634294]  [\u003cffffffff8139f234\u003e] inet_stream_connect+0x33/0x4b\n[   92.634294]  [\u003cffffffff8132e8cf\u003e] sys_connect+0x78/0x9e\n[   92.634294]  [\u003cffffffff813fd407\u003e] ? sysret_check+0x1b/0x56\n[   92.634294]  [\u003cffffffff81088503\u003e] ? __audit_syscall_entry+0x195/0x1c8\n[   92.634294]  [\u003cffffffff811cc26e\u003e] ? trace_hardirqs_on_thunk+0x3a/0x3f\n[   92.634294]  [\u003cffffffff813fd3e2\u003e] system_call_fastpath+0x16/0x1b\n[   92.634294] Code:  Bad RIP value.\n[   92.634294] RIP  [\u003c          (null)\u003e]           (null)\n[   92.634294]  RSP \u003cffff880245fc7cb0\u003e\n[   92.634294] CR2: 0000000000000000\n[   92.648982] ---[ end trace 24e2bed94314c8d9 ]---\n[   92.649146] Kernel panic - not syncing: Fatal exception in interrupt\n\nFix this using inet_sk_rx_dst_set(), and export this function in case\nIPv6 is modular.\n\nReported-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6f458dfb409272082c9bfa412f77ff2fc21c626f",
      "tree": "7475cd12eb01023b9852cbc957080b9aa7cfdc64",
      "parents": [
        "9dc274151a548ffd215caecec5a8872db8799447"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Fri Jul 20 05:45:50 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 20 10:59:41 2012 -0700"
      },
      "message": "tcp: improve latencies of timer triggered events\n\nModern TCP stack highly depends on tcp_write_timer() having a small\nlatency, but current implementation doesn\u0027t exactly meet the\nexpectations.\n\nWhen a timer fires but finds the socket is owned by the user, it rearms\nitself for an additional delay hoping next run will be more\nsuccessful.\n\ntcp_write_timer() for example uses a 50ms delay for next try, and it\ndefeats many attempts to get predictable TCP behavior in term of\nlatencies.\n\nUse the recently introduced tcp_release_cb(), so that the user owning\nthe socket will call various handlers right before socket release.\n\nThis will permit us to post a followup patch to address the\ntcp_tso_should_defer() syndrome (some deferred packets have to wait\nRTO timer to be transmitted, while cwnd should allow us to send them\nsooner)\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nCc: Tom Herbert \u003ctherbert@google.com\u003e\nCc: Yuchung Cheng \u003cycheng@google.com\u003e\nCc: Neal Cardwell \u003cncardwell@google.com\u003e\nCc: Nandita Dukkipati \u003cnanditad@google.com\u003e\nCc: H.K. Jerry Chu \u003chkchu@google.com\u003e\nCc: John Heffner \u003cjohnwheffner@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "67da22d23fa6f3324e03bcd0580b914b2e4afbf3",
      "tree": "e794826d1dd7e30cf0885cbe93f22bc050c62359",
      "parents": [
        "aab4874355679c70f93993cf3b3fd74643b9ac33"
      ],
      "author": {
        "name": "Yuchung Cheng",
        "email": "ycheng@google.com",
        "time": "Thu Jul 19 06:43:11 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 19 11:02:03 2012 -0700"
      },
      "message": "net-tcp: Fast Open client - cookie-less mode\n\nIn trusted networks, e.g., intranet, data-center, the client does not\nneed to use Fast Open cookie to mitigate DoS attacks. In cookie-less\nmode, sendmsg() with MSG_FASTOPEN flag will send SYN-data regardless\nof cookie availability.\n\nSigned-off-by: Yuchung Cheng \u003cycheng@google.com\u003e\nAcked-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "aab4874355679c70f93993cf3b3fd74643b9ac33",
      "tree": "677d3faf161e39f9de18b5956e24cd746e73d996",
      "parents": [
        "cf60af03ca4e71134206809ea892e49b92a88896"
      ],
      "author": {
        "name": "Yuchung Cheng",
        "email": "ycheng@google.com",
        "time": "Thu Jul 19 06:43:10 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 19 11:02:03 2012 -0700"
      },
      "message": "net-tcp: Fast Open client - detecting SYN-data drops\n\nOn paths with firewalls dropping SYN with data or experimental TCP options,\nFast Open connections will have experience SYN timeout and bad performance.\nThe solution is to track such incidents in the cookie cache and disables\nFast Open temporarily.\n\nSince only the original SYN includes data and/or Fast Open option, the\nSYN-ACK has some tell-tale sign (tcp_rcv_fastopen_synack()) to detect\nsuch drops. If a path has recurring Fast Open SYN drops, Fast Open is\ndisabled for 2^(recurring_losses) minutes starting from four minutes up to\nroughly one and half day. sendmsg with MSG_FASTOPEN flag will succeed but\nit behaves as connect() then write().\n\nSigned-off-by: Yuchung Cheng \u003cycheng@google.com\u003e\nAcked-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "cf60af03ca4e71134206809ea892e49b92a88896",
      "tree": "478ee362f10d0737fbc4e6642e2966abe0cd1397",
      "parents": [
        "8e4178c1c7b52f7c99f5fd22ef7af6b2bff409e3"
      ],
      "author": {
        "name": "Yuchung Cheng",
        "email": "ycheng@google.com",
        "time": "Thu Jul 19 06:43:09 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 19 11:02:03 2012 -0700"
      },
      "message": "net-tcp: Fast Open client - sendmsg(MSG_FASTOPEN)\n\nsendmsg() (or sendto()) with MSG_FASTOPEN is a combo of connect(2)\nand write(2). The application should replace connect() with it to\nsend data in the opening SYN packet.\n\nFor blocking socket, sendmsg() blocks until all the data are buffered\nlocally and the handshake is completed like connect() call. It\nreturns similar errno like connect() if the TCP handshake fails.\n\nFor non-blocking socket, it returns the number of bytes queued (and\ntransmitted in the SYN-data packet) if cookie is available. If cookie\nis not available, it transmits a data-less SYN packet with Fast Open\ncookie request option and returns -EINPROGRESS like connect().\n\nUsing MSG_FASTOPEN on connecting or connected socket will result in\nsimlar errno like repeating connect() calls. Therefore the application\nshould only use this flag on new sockets.\n\nThe buffer size of sendmsg() is independent of the MSS of the connection.\n\nSigned-off-by: Yuchung Cheng \u003cycheng@google.com\u003e\nAcked-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "783237e8daf13481ee234997cbbbb823872ac388",
      "tree": "cf6e9adf54eedbc155d4fc43bcf6ec87aaac820e",
      "parents": [
        "1fe4c481ba637660793217769695c146a037bd54"
      ],
      "author": {
        "name": "Yuchung Cheng",
        "email": "ycheng@google.com",
        "time": "Thu Jul 19 06:43:07 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 19 11:02:03 2012 -0700"
      },
      "message": "net-tcp: Fast Open client - sending SYN-data\n\nThis patch implements sending SYN-data in tcp_connect(). The data is\nfrom tcp_sendmsg() with flag MSG_FASTOPEN (implemented in a later patch).\n\nThe length of the cookie in tcp_fastopen_req, init\u0027d to 0, controls the\ntype of the SYN. If the cookie is not cached (len\u003d\u003d0), the host sends\ndata-less SYN with Fast Open cookie request option to solicit a cookie\nfrom the remote. If cookie is not available (len \u003e 0), the host sends\na SYN-data with Fast Open cookie option. If cookie length is negative,\n  the SYN will not include any Fast Open option (for fall back operations).\n\nTo deal with middleboxes that may drop SYN with data or experimental TCP\noption, the SYN-data is only sent once. SYN retransmits do not include\ndata or Fast Open options. The connection will fall back to regular TCP\nhandshake.\n\nSigned-off-by: Yuchung Cheng \u003cycheng@google.com\u003e\nAcked-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1fe4c481ba637660793217769695c146a037bd54",
      "tree": "d90f9708cd6a291988b198ade7daf0d9f58c34cf",
      "parents": [
        "2100c8d2d9db23c0a09901a782bb4e3b21bee298"
      ],
      "author": {
        "name": "Yuchung Cheng",
        "email": "ycheng@google.com",
        "time": "Thu Jul 19 06:43:06 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 19 10:55:36 2012 -0700"
      },
      "message": "net-tcp: Fast Open client - cookie cache\n\nWith help from Eric Dumazet, add Fast Open metrics in tcp metrics cache.\nThe basic ones are MSS and the cookies. Later patch will cache more to\nhandle unfriendly middleboxes.\n\nSigned-off-by: Yuchung Cheng \u003cycheng@google.com\u003e\nAcked-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2100c8d2d9db23c0a09901a782bb4e3b21bee298",
      "tree": "fd5842c540bf77c3fa546797c1c8e94f054cc86c",
      "parents": [
        "4cce66cdd14aa5006a011505865d932adb49f600"
      ],
      "author": {
        "name": "Yuchung Cheng",
        "email": "ycheng@google.com",
        "time": "Thu Jul 19 06:43:05 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 19 10:55:36 2012 -0700"
      },
      "message": "net-tcp: Fast Open base\n\nThis patch impelements the common code for both the client and server.\n\n1. TCP Fast Open option processing. Since Fast Open does not have an\n   option number assigned by IANA yet, it shares the experiment option\n   code 254 by implementing draft-ietf-tcpm-experimental-options\n   with a 16 bits magic number 0xF989. This enables global experiments\n   without clashing the scarce(2) experimental options available for TCP.\n\n   When the draft status becomes standard (maybe), the client should\n   switch to the new option number assigned while the server supports\n   both numbers for transistion.\n\n2. The new sysctl tcp_fastopen\n\n3. A place holder init function\n\nSigned-off-by: Yuchung Cheng \u003cycheng@google.com\u003e\nAcked-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "282f23c6ee343126156dd41218b22ece96d747e3",
      "tree": "9a306d99ed77d760078d29699edd3007507d709b",
      "parents": [
        "a858d64b7709ca7bd2ee71d66ef3b7190cdcbb7d"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Tue Jul 17 10:13:05 2012 +0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 17 01:36:20 2012 -0700"
      },
      "message": "tcp: implement RFC 5961 3.2\n\nImplement the RFC 5691 mitigation against Blind\nReset attack using RST bit.\n\nIdea is to validate incoming RST sequence,\nto match RCV.NXT value, instead of previouly accepted\nwindow : (RCV.NXT \u003c\u003d SEG.SEQ \u003c RCV.NXT+RCV.WND)\n\nIf sequence is in window but not an exact match, send\na \"challenge ACK\", so that the other part can resend an\nRST with the appropriate sequence.\n\nAdd a new sysctl, tcp_challenge_ack_limit, to limit\nnumber of challenge ACK sent per second.\n\nAdd a new SNMP counter to count number of challenge acks sent.\n(netstat -s | grep TCPChallengeACK)\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nCc: Kiran Kumar Kella \u003ckkiran@broadcom.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "46d3ceabd8d98ed0ad10f20c595ca784e34786c5",
      "tree": "771200292431be56c6ebcb23af9206bc03d40e65",
      "parents": [
        "2100844ca9d7055d5cddce2f8ed13af94c01f85b"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Jul 11 05:50:31 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 11 18:12:59 2012 -0700"
      },
      "message": "tcp: TCP Small Queues\n\nThis introduce TSQ (TCP Small Queues)\n\nTSQ goal is to reduce number of TCP packets in xmit queues (qdisc \u0026\ndevice queues), to reduce RTT and cwnd bias, part of the bufferbloat\nproblem.\n\nsk-\u003esk_wmem_alloc not allowed to grow above a given limit,\nallowing no more than ~128KB [1] per tcp socket in qdisc/dev layers at a\ngiven time.\n\nTSO packets are sized/capped to half the limit, so that we have two\nTSO packets in flight, allowing better bandwidth use.\n\nAs a side effect, setting the limit to 40000 automatically reduces the\nstandard gso max limit (65536) to 40000/2 : It can help to reduce\nlatencies of high prio packets, having smaller TSO packets.\n\nThis means we divert sock_wfree() to a tcp_wfree() handler, to\nqueue/send following frames when skb_orphan() [2] is called for the\nalready queued skbs.\n\nResults on my dev machines (tg3/ixgbe nics) are really impressive,\nusing standard pfifo_fast, and with or without TSO/GSO.\n\nWithout reduction of nominal bandwidth, we have reduction of buffering\nper bulk sender :\n\u003c 1ms on Gbit (instead of 50ms with TSO)\n\u003c 8ms on 100Mbit (instead of 132 ms)\n\nI no longer have 4 MBytes backlogged in qdisc by a single netperf\nsession, and both side socket autotuning no longer use 4 Mbytes.\n\nAs skb destructor cannot restart xmit itself ( as qdisc lock might be\ntaken at this point ), we delegate the work to a tasklet. We use one\ntasklest per cpu for performance reasons.\n\nIf tasklet finds a socket owned by the user, it sets TSQ_OWNED flag.\nThis flag is tested in a new protocol method called from release_sock(),\nto eventually send new segments.\n\n[1] New /proc/sys/net/ipv4/tcp_limit_output_bytes tunable\n[2] skb_orphan() is usually called at TX completion time,\n  but some drivers call it in their start_xmit() handler.\n  These drivers should at least use BQL, or else a single TCP\n  session can still fill the whole NIC TX ring, since TSQ will\n  have no effect.\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nCc: Dave Taht \u003cdave.taht@bufferbloat.net\u003e\nCc: Tom Herbert \u003ctherbert@google.com\u003e\nCc: Matt Mathis \u003cmattmathis@google.com\u003e\nCc: Yuchung Cheng \u003cycheng@google.com\u003e\nCc: Nandita Dukkipati \u003cnanditad@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "81166dd6fa8eb780b2132d32fbc77eb6ac04e44e",
      "tree": "7a41b12950640648d3bb95ca74bfa1391efa0421",
      "parents": [
        "94334d5ed4b64ebcd2c4b421e133b921f8ccf75d"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 10 03:14:24 2012 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 10 22:40:08 2012 -0700"
      },
      "message": "tcp: Move timestamps from inetpeer to metrics cache.\n\nWith help from Lin Ming.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "51c5d0c4b169bf762f09e0d5b283a7f0b2a45739",
      "tree": "9dd99b27be4dc469954a2d67515593c9f71cbcd0",
      "parents": [
        "ab92bb2f679d66c7e12a6b1c0cdd76fe308f6546"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 10 00:49:14 2012 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 10 22:39:57 2012 -0700"
      },
      "message": "tcp: Maintain dynamic metrics in local cache.\n\nMaintain a local hash table of TCP dynamic metrics blobs.\n\nComputed TCP metrics are no longer maintained in the route metrics.\n\nThe table uses RCU and an extremely simple hash so that it has low\nlatency and low overhead.  A simple hash is legitimate because we only\nmake metrics blobs for fully established connections.\n\nSome tweaking of the default hash table sizes, metric timeouts, and\nthe hash chain length limit certainly could use some tweaking.  But\nthe basic design seems sound.\n\nWith help from Eric Dumazet and Joe Perches.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ab92bb2f679d66c7e12a6b1c0cdd76fe308f6546",
      "tree": "39ba3d67d7691f65a2d67ec782edd83271a2a654",
      "parents": [
        "4aabd8ef8c43677cfee3e1e36c5a79edddb41942"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 09 16:19:30 2012 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 10 20:33:49 2012 -0700"
      },
      "message": "tcp: Abstract back handling peer aliveness test into helper function.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4aabd8ef8c43677cfee3e1e36c5a79edddb41942",
      "tree": "a826352ad00ffcc1632edecfe4ebd77db1301e4b",
      "parents": [
        "ad7eee98bef92481581060801bdfd1b25a6106c0"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 09 16:07:30 2012 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 10 20:31:36 2012 -0700"
      },
      "message": "tcp: Move dynamnic metrics handling into seperate file.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "160eb5a6b14ca2eab5c598bdbbb24c24624bad34",
      "tree": "ccdc41681ef1e8cd634084c5160890cc975961a0",
      "parents": [
        "1d1e34ddd48d27def2f324c1e3be16d460b16436"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 27 22:01:22 2012 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 27 22:01:22 2012 -0700"
      },
      "message": "ipv4: Kill early demux method return value.\n\nIt\u0027s completely unnecessary.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c10237e077cef50e925f052e49f3b4fead9d71f9",
      "tree": "5b7418f3a31165ea2e7d119782cad0745cd45792",
      "parents": [
        "e440cf2ca0a1b075c64016240d46c3aa9d877bbf"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 27 17:05:06 2012 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 27 17:05:06 2012 -0700"
      },
      "message": "Revert \"ipv4: tcp: dont cache unconfirmed intput dst\"\n\nThis reverts commit c074da2810c118b3812f32d6754bd9ead2f169e7.\n\nThis change has several unwanted side effects:\n\n1) Sockets will cache the DST_NOCACHE route in sk-\u003esk_rx_dst and we\u0027ll\n   thus never create a real cached route.\n\n2) All TCP traffic will use DST_NOCACHE and never use the routing\n   cache at all.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c074da2810c118b3812f32d6754bd9ead2f169e7",
      "tree": "772c7fbb9da464f9afd6d56e9e610157ed665e8f",
      "parents": [
        "93040ae5cc8dcc893eca4a4366dc8415af278edf"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Tue Jun 26 23:14:15 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 27 15:34:24 2012 -0700"
      },
      "message": "ipv4: tcp: dont cache unconfirmed intput dst\n\nDDOS synflood attacks hit badly IP route cache.\n\nOn typical machines, this cache is allowed to hold up to 8 Millions dst\nentries, 256 bytes for each, for a total of 2GB of memory.\n\nrt_garbage_collect() triggers and tries to cleanup things.\n\nEventually route cache is disabled but machine is under fire and might\nOOM and crash.\n\nThis patch exploits the new TCP early demux, to set a nocache\nboolean in case incoming TCP frame is for a not yet ESTABLISHED or\nTIMEWAIT socket.\n\nThis \u0027nocache\u0027 boolean is then used in case dst entry is not found in\nroute cache, to create an unhashed dst entry (DST_NOCACHE)\n\nSYN-cookie-ACK sent use a similar mechanism (ipv4: tcp: dont cache\noutput dst for syncookies), so after this patch, a machine is able to\nabsorb a DDOS synflood attack without polluting its IP route cache.\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nCc: Hans Schillstrom \u003chans.schillstrom@ericsson.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "41063e9dd11956f2d285e12e4342e1d232ba0ea2",
      "tree": "d4df2f51044b4724a4767f0498c3df2f606b5ad7",
      "parents": [
        "f9242b6b28d61295f2bf7e8adfb1060b382e5381"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 19 21:22:05 2012 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 19 21:22:05 2012 -0700"
      },
      "message": "ipv4: Early TCP socket demux.\n\nInput packet processing for local sockets involves two major demuxes.\nOne for the route and one for the socket.\n\nBut we can optimize this down to one demux for certain kinds of local\nsockets.\n\nCurrently we only do this for established TCP sockets, but it could\nat least in theory be expanded to other kinds of connections.\n\nIf a TCP socket is established then it\u0027s identity is fully specified.\n\nThis means that whatever input route was used during the three-way\nhandshake must work equally well for the rest of the connection since\nthe keys will not change.\n\nOnce we move to established state, we cache the receive packet\u0027s input\nroute to use later.\n\nLike the existing cached route in sk-\u003esk_dst_cache used for output\npackets, we have to check for route invalidations using dst-\u003eobsolete\nand dst-\u003eops-\u003echeck().\n\nEarly demux occurs outside of a socket locked section, so when a route\ninvalidation occurs we defer the fixup of sk-\u003esk_rx_dst until we are\nactually inside of established state packet processing and thus have\nthe socket locked.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2397849baa7c44c242e5d5142d5d16d1e7ed53d0",
      "tree": "0ee2012361d1b0f8a92b68da7d0d92209613ecaf",
      "parents": [
        "4670fd819e7f47392c7c6fc6168ea2857c66d163"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jun 09 14:56:12 2012 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jun 09 14:56:12 2012 -0700"
      },
      "message": "[PATCH] tcp: Cache inetpeer in timewait socket, and only when necessary.\n\nSince it\u0027s guarenteed that we will access the inetpeer if we\u0027re trying\nto do timewait recycling and TCP options were enabled on the\nconnection, just cache the peer in the timewait socket.\n\nIn the future, inetpeer lookups will be context dependent (per routing\nrealm), and this helps facilitate that as well.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4670fd819e7f47392c7c6fc6168ea2857c66d163",
      "tree": "b8e90a8a449c0b42b77b54313683ab2d0edb09f3",
      "parents": [
        "fbfe95a42e90b3dd079cc9019ba7d7700feee0f6"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jun 09 01:25:47 2012 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jun 09 01:25:47 2012 -0700"
      },
      "message": "tcp: Get rid of inetpeer special cases.\n\nThe get_peer method TCP uses is full of special cases that make no\nsense accommodating, and it also gets in the way of doing more\nreasonable things here.\n\nFirst of all, if the socket doesn\u0027t have a usable cached route, there\nis no sense in trying to optimize timewait recycling.\n\nLikewise for the case where we have IP options, such as SRR enabled,\nthat make the IP header destination address (and thus the destination\naddress of the route key) differ from that of the connection\u0027s\ndestination address.\n\nJust return a NULL peer in these cases, and thus we\u0027re also able to\nget rid of the clumsy inetpeer release logic.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a2a385d627e1549da4b43a8b3dfe370589766e1c",
      "tree": "d61e9913497c6c14406032f6a0822738707f1abf",
      "parents": [
        "e005d193d55ee5f757b13306112d8c23aac27a88"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Wed May 16 23:15:34 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu May 17 14:59:59 2012 -0400"
      },
      "message": "tcp: bool conversions\n\nbool conversions where possible.\n\n__inline__ -\u003e inline\n\nspace cleanups\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "292e8d8c853889140ed77b7b37c66979b13080ae",
      "tree": "7b5c1e110d68904277826e13c9daed638fef618d",
      "parents": [
        "74e04aca1abb8d697ca88e472a2d08dfbe19a0e1"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Thu May 10 01:49:41 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu May 10 23:24:35 2012 -0400"
      },
      "message": "tcp: Move rcvq sending to tcp_input.c\n\nIt actually works on the input queue and will use its read mem\nroutines, thus it\u0027s better to have in in the tcp_input.c file.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nAcked-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "bd14b1b2e29bd6812597f896dde06eaf7c6d2f24",
      "tree": "bd641279d50993e32da8f8d72672bce4e54820bd",
      "parents": [
        "f45ebf3a6be9da051f078b30e7309b6788932189"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Fri May 04 05:14:02 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri May 04 12:05:27 2012 -0400"
      },
      "message": "tcp: be more strict before accepting ECN negociation\n\nIt appears some networks play bad games with the two bits reserved for\nECN. This can trigger false congestion notifications and very slow\ntransferts.\n\nSince RFC 3168 (6.1.1) forbids SYN packets to carry CT bits, we can\ndisable TCP ECN negociation if it happens we receive mangled CT bits in\nthe SYN packet.\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nCc: Perry Lorier \u003cperryl@google.com\u003e\nCc: Matt Mathis \u003cmattmathis@google.com\u003e\nCc: Yuchung Cheng \u003cycheng@google.com\u003e\nCc: Neal Cardwell \u003cncardwell@google.com\u003e\nCc: Wilmer van der Gaast \u003cwilmer@google.com\u003e\nCc: Ankur Jain \u003cjankur@google.com\u003e\nCc: Tom Herbert \u003ctherbert@google.com\u003e\nCc: Dave Täht \u003cdave.taht@bufferbloat.net\u003e\nAcked-by: Neal Cardwell \u003cncardwell@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b081f85c2977b1cbb6e635d53d9512f1ef985972",
      "tree": "3b41dfe3ee282c175907e8bcf9614385115fa2e6",
      "parents": [
        "923dd347b8904c24bcac89bf038ed4da87f8aa90"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Wed May 02 09:58:29 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed May 02 21:11:11 2012 -0400"
      },
      "message": "net: implement tcp coalescing in tcp_queue_rcv()\n\nExtend tcp coalescing implementing it from tcp_queue_rcv(), the main\nreceiver function when application is not blocked in recvmsg().\n\nFunction tcp_queue_rcv() is moved a bit to allow its call from\ntcp_data_queue()\n\nThis gives good results especially if GRO could not kick, and if skb\nhead is a fragment.\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nCc: Alexander Duyck \u003calexander.h.duyck@intel.com\u003e\nCc: Neal Cardwell \u003cncardwell@google.com\u003e\nCc: Tom Herbert \u003ctherbert@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "750ea2bafa55aaed208b2583470ecd7122225634",
      "tree": "7656d7697566b0cecc7fbbdd8dbae288bca6d7e3",
      "parents": [
        "eed530b6c67624db3f2cf477bac7c4d005d8f7ba"
      ],
      "author": {
        "name": "Yuchung Cheng",
        "email": "ycheng@google.com",
        "time": "Wed May 02 13:30:04 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed May 02 20:56:10 2012 -0400"
      },
      "message": "tcp: early retransmit: delayed fast retransmit\n\nImplementing the advanced early retransmit (sysctl_tcp_early_retrans\u003d\u003d2).\nDelays the fast retransmit by an interval of RTT/4. We borrow the\nRTO timer to implement the delay. If we receive another ACK or send\na new packet, the timer is cancelled and restored to original RTO\nvalue offset by time elapsed.  When the delayed-ER timer fires,\nwe enter fast recovery and perform fast retransmit.\n\nSigned-off-by: Yuchung Cheng \u003cycheng@google.com\u003e\nAcked-by: Neal Cardwell \u003cncardwell@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "eed530b6c67624db3f2cf477bac7c4d005d8f7ba",
      "tree": "c07096807ead2adb9d85e85d1a9cd1ada85755ac",
      "parents": [
        "1fbc340514fc3003514bd681b372e1f47ae6183f"
      ],
      "author": {
        "name": "Yuchung Cheng",
        "email": "ycheng@google.com",
        "time": "Wed May 02 13:30:03 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed May 02 20:56:10 2012 -0400"
      },
      "message": "tcp: early retransmit\n\nThis patch implements RFC 5827 early retransmit (ER) for TCP.\nIt reduces DUPACK threshold (dupthresh) if outstanding packets are\nless than 4 to recover losses by fast recovery instead of timeout.\n\nWhile the algorithm is simple, small but frequent network reordering\nmakes this feature dangerous: the connection repeatedly enter\nfalse recovery and degrade performance. Therefore we implement\na mitigation suggested in the appendix of the RFC that delays\nentering fast recovery by a small interval, i.e., RTT/4. Currently\nER is conservative and is disabled for the rest of the connection\nafter the first reordering event. A large scale web server\nexperiment on the performance impact of ER is summarized in\nsection 6 of the paper \"Proportional Rate Reduction for TCP”,\nIMC 2011. http://conferences.sigcomm.org/imc/2011/docs/p155.pdf\n\nNote that Linux has a similar feature called THIN_DUPACK. The\ndifferences are THIN_DUPACK do not mitigate reorderings and is only\nused after slow start. Currently ER is disabled if THIN_DUPACK is\nenabled. I would be happy to merge THIN_DUPACK feature with ER if\npeople think it\u0027s a good idea.\n\nER is enabled by sysctl_tcp_early_retrans:\n  0: Disables ER\n\n  1: Reduce dupthresh to packets_out - 1 when outstanding packets \u003c 4.\n\n  2: (Default) reduce dupthresh like mode 1. In addition, delay\n     entering fast recovery by RTT/4.\n\nNote: mode 2 is implemented in the third part of this patch series.\n\nSigned-off-by: Yuchung Cheng \u003cycheng@google.com\u003e\nAcked-by: Neal Cardwell \u003cncardwell@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "67469601406c12ced3db9956aeb0ef0854e2952f",
      "tree": "a25902d49946c394ebf110265179da2dc5b7d827",
      "parents": [
        "a85c9bb895aed633615078f69f4a4bce9e39be5f"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Tue Apr 24 07:37:38 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Apr 27 00:03:34 2012 -0400"
      },
      "message": "ipv6: RTAX_FEATURE_ALLFRAG causes inefficient TCP segment sizing\n\nQuoting Tore Anderson from :\nhttps://bugzilla.kernel.org/show_bug.cgi?id\u003d42572\n\nWhen RTAX_FEATURE_ALLFRAG is set on a route, the effective TCP segment\nsize does not take into account the size of the IPv6 Fragmentation\nheader that needs to be included in outbound packets, causing every\ntransmitted TCP segment to be fragmented across two IPv6 packets, the\nlatter of which will only contain 8 bytes of actual payload.\n\nRTAX_FEATURE_ALLFRAG is typically set on a route in response to\nreceving a ICMPv6 Packet Too Big message indicating a Path MTU of less\nthan 1280 bytes. 1280 bytes is the minimum IPv6 MTU, however ICMPv6\nPTBs with MTU \u003c 1280 are still valid, in particular when an IPv6\npacket is sent to an IPv4 destination through a stateless translator.\nAny ICMPv4 Need To Fragment packets originated from the IPv4 part of\nthe path will be translated to ICMPv6 PTB which may then indicate an\nMTU of less than 1280.\n\nThe Linux kernel refuses to reduce the effective MTU to anything below\n1280 bytes, instead it sets it to exactly 1280 bytes, and\nRTAX_FEATURE_ALLFRAG is also set. However, the TCP segment size appears\nto be set to 1240 bytes (1280 Path MTU - 40 bytes of IPv6 header),\ninstead of 1232 (additionally taking into account the 8 bytes required\nby the IPv6 Fragmentation extension header).\n\nThis in turn results in rather inefficient transmission, as every\ntransmitted TCP segment now is split in two fragments containing\n1232+8 bytes of payload.\n\nAfter this patch, all the outgoing packets that includes a\nFragmentation header all are \"atomic\" or \"non-fragmented\" fragments,\ni.e., they both have Offset\u003d0 and More Fragments\u003d0.\n\nWith help from David S. Miller\n\nReported-by: Tore Anderson \u003ctore@fud.no\u003e\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nCc: Maciej Żenczykowski \u003cmaze@google.com\u003e\nCc: Tom Herbert \u003ctherbert@google.com\u003e\nTested-by: Tore Anderson \u003ctore@fud.no\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "900f65d361d333c949ef76a828343075f4fdf523",
      "tree": "8b4474c6c9df1fcad4d946c64bcc1535450d0927",
      "parents": [
        "e66e9a31474dcce5be6f1186dc933d8a991c707b"
      ],
      "author": {
        "name": "Neal Cardwell",
        "email": "ncardwell@google.com",
        "time": "Thu Apr 19 09:55:21 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Apr 21 16:36:42 2012 -0400"
      },
      "message": "tcp: move duplicate code from tcp_v4_init_sock()/tcp_v6_init_sock()\n\nThis commit moves the (substantial) common code shared between\ntcp_v4_init_sock() and tcp_v6_init_sock() to a new address-family\nindependent function, tcp_init_sock().\n\nCentralizing this functionality should help avoid drift issues,\ne.g. where the IPv4 side is updated without a corresponding update to\nIPv6. There was already some drift: IPv4 initialized snd_cwnd to\nTCP_INIT_CWND, while the IPv6 side was still initializing snd_cwnd to\n2 (in this case it should not matter, since snd_cwnd is also\ninitialized in tcp_init_metrics(), but the general risks and\nmaintenance overhead remain).\n\nWhen diffing the old and new code, note that new tcp_init_sock()\nfunction uses the order of steps from the tcp_v4_init_sock()\nimplementation (the order is slightly different in\ntcp_v6_init_sock()).\n\nSigned-off-by: Neal Cardwell \u003cncardwell@google.com\u003e\nAcked-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ee9952831cfd0bbe834f4a26489d7dce74582e37",
      "tree": "64c195fa45e1a200f38d68751161d8e06dfb5a6c",
      "parents": [
        "370816aef0c5436c2adbec3966038f36ca326933"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Thu Apr 19 03:40:39 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Apr 21 15:52:25 2012 -0400"
      },
      "message": "tcp: Initial repair mode\n\nThis includes (according the the previous description):\n\n* TCP_REPAIR sockoption\n\nThis one just puts the socket in/out of the repair mode.\nAllowed for CAP_NET_ADMIN and for closed/establised sockets only.\nWhen repair mode is turned off and the socket happens to be in\nthe established state the window probe is sent to the peer to\n\u0027unlock\u0027 the connection.\n\n* TCP_REPAIR_QUEUE sockoption\n\nThis one sets the queue which we\u0027re about to repair. The\n\u0027no-queue\u0027 is set by default.\n\n* TCP_QUEUE_SEQ socoption\n\nSets the write_seq/rcv_nxt of a selected repaired queue.\nAllowed for TCP_CLOSE-d sockets only. When the socket changes\nits state the other seq-s are changed by the kernel according\nto the protocol rules (most of the existing code is actually\nreused).\n\n* Ability to forcibly bind a socket to a port\n\nThe sk-\u003esk_reuse is set to SK_FORCE_REUSE.\n\n* Immediate connect modification\n\nThe connect syscall initializes the connection, then directly jumps\nto the code which finalizes it.\n\n* Silent close modification\n\nThe close just aborts the connection (similar to SO_LINGER with 0\ntime) but without sending any FIN/RST-s to peer.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "370816aef0c5436c2adbec3966038f36ca326933",
      "tree": "665f8b3b0818aa7aa4f653072d89d1dcfb91a55f",
      "parents": [
        "4a17fd5229c1b6066aa478f6b690f8293ce811a1"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Thu Apr 19 03:40:01 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Apr 21 15:52:25 2012 -0400"
      },
      "message": "tcp: Move code around\n\nThis is just the preparation patch, which makes the needed for\nTCP repair code ready for use.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f4f9f6e75d67ddfcfea79a2108217bc654aef3af",
      "tree": "27dfcbaccae81018e4b618031d2c6a8725d463d4",
      "parents": [
        "65cff8720164611ec617d4cc1ea65f2deb3832b6"
      ],
      "author": {
        "name": "Neal Cardwell",
        "email": "ncardwell@google.com",
        "time": "Mon Apr 16 07:08:06 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Apr 16 14:38:16 2012 -0400"
      },
      "message": "tcp: restore formatting of macros for tcp_skb_cb sacked field\n\nCommit b82d1bb4 inadvertendly placed unrelated new code between\nTCPCB_EVER_RETRANS and TCPCB_RETRANS and the other macros that refer\nto the sacked field in the struct tcp_skb_cb (probably because there\nwas a misleading empty line there). This commit fixes up the\nformatting so that all macros related to the sacked field are adjacent\nagain.\n\nSigned-off-by: Neal Cardwell \u003cncardwell@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "95c961747284a6b83a5e2d81240e214b0fa3464d",
      "tree": "c7be86a00db3605a48a03109fafcbe31039ca2e0",
      "parents": [
        "5e73ea1a31c3612aa6dfe44f864ca5b7b6a4cff9"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sun Apr 15 05:58:06 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Apr 15 12:44:40 2012 -0400"
      },
      "message": "net: cleanup unsigned to unsigned int\n\nUse of \"unsigned int\" is preferred to bare \"unsigned\" in net tree.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "fd4f2cead6983735a4e6283126b9276873d7ff09",
      "tree": "2b5313230f3abe2b678230d4182cc6d2f2870062",
      "parents": [
        "eff98db027c50f1e4ad14f1d9069d55e5f7e4319"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Apr 12 19:48:40 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Apr 14 15:24:26 2012 -0400"
      },
      "message": "tcp: RFC6298 supersedes RFC2988bis\n\nUpdates some comments to track RFC6298\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nCc: H.K. Jerry Chu \u003chkchu@google.com\u003e\nCc: Tom Herbert \u003ctherbert@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ed2d265d1266736bd294332d7f649003943ae36e",
      "tree": "860e5b7bb72933e4a9abacdc2f2d75a0e6254e32",
      "parents": [
        "f1d38e423a697b7aa06e12d3ca4753bcc1aa3531",
        "6c03438edeb5c359af35f060ea016ca65671c269"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 24 10:08:39 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 24 10:08:39 2012 -0700"
      },
      "message": "Merge tag \u0027bug-for-3.4\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux\n\nPull \u003clinux/bug.h\u003e cleanup from Paul Gortmaker:\n \"The changes shown here are to unify linux\u0027s BUG support under the one\n  \u003clinux/bug.h\u003e file.  Due to historical reasons, we have some BUG code\n  in bug.h and some in kernel.h -- i.e.  the support for BUILD_BUG in\n  linux/kernel.h predates the addition of linux/bug.h, but old code in\n  kernel.h wasn\u0027t moved to bug.h at that time.  As a band-aid, kernel.h\n  was including \u003casm/bug.h\u003e to pseudo link them.\n\n  This has caused confusion[1] and general yuck/WTF[2] reactions.  Here\n  is an example that violates the principle of least surprise:\n\n      CC      lib/string.o\n      lib/string.c: In function \u0027strlcat\u0027:\n      lib/string.c:225:2: error: implicit declaration of function \u0027BUILD_BUG_ON\u0027\n      make[2]: *** [lib/string.o] Error 1\n      $\n      $ grep linux/bug.h lib/string.c\n      #include \u003clinux/bug.h\u003e\n      $\n\n  We\u0027ve included \u003clinux/bug.h\u003e for the BUG infrastructure and yet we\n  still get a compile fail! [We\u0027ve not kernel.h for BUILD_BUG_ON.] Ugh -\n  very confusing for someone who is new to kernel development.\n\n  With the above in mind, the goals of this changeset are:\n\n  1) find and fix any include/*.h files that were relying on the\n     implicit presence of BUG code.\n  2) find and fix any C files that were consuming kernel.h and hence\n     relying on implicitly getting some/all BUG code.\n  3) Move the BUG related code living in kernel.h to \u003clinux/bug.h\u003e\n  4) remove the asm/bug.h from kernel.h to finally break the chain.\n\n  During development, the order was more like 3-4, build-test, 1-2.  But\n  to ensure that git history for bisect doesn\u0027t get needless build\n  failures introduced, the commits have been reorderd to fix the problem\n  areas in advance.\n\n\t[1]  https://lkml.org/lkml/2012/1/3/90\n\t[2]  https://lkml.org/lkml/2012/1/17/414\"\n\nFix up conflicts (new radeon file, reiserfs header cleanups) as per Paul\nand linux-next.\n\n* tag \u0027bug-for-3.4\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux:\n  kernel.h: doesn\u0027t explicitly use bug.h, so don\u0027t include it.\n  bug: consolidate BUILD_BUG_ON with other bug code\n  BUG: headers with BUG/BUG_ON etc. need linux/bug.h\n  bug.h: add include of it to various implicit C users\n  lib: fix implicit users of kernel.h for TAINT_WARN\n  spinlock: macroize assert_spin_locked to avoid bug.h dependency\n  x86: relocate get/set debugreg fcns to include/asm/debugreg.\n"
    },
    {
      "commit": "187f1882b5b0748b3c4c22274663fdb372ac0452",
      "tree": "36283f258cf65f03599a045d48bb05d0ec27f3f9",
      "parents": [
        "50af5ead3b44ccf8bd2b4d2a50c1b610f557c480"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Wed Nov 23 20:12:59 2011 -0500"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Sun Mar 04 17:54:34 2012 -0500"
      },
      "message": "BUG: headers with BUG/BUG_ON etc. need linux/bug.h\n\nIf a header file is making use of BUG, BUG_ON, BUILD_BUG_ON, or any\nother BUG variant in a static inline (i.e. not in a #define) then\nthat header really should be including \u003clinux/bug.h\u003e and not just\nexpecting it to be implicitly present.\n\nWe can make this change risk-free, since if the files using these\nheaders didn\u0027t have exposure to linux/bug.h already, they would have\nbeen causing compile failures/warnings.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "b4017c5368f992fb8fb3a2545a0977082c6664e4",
      "tree": "b18fee77164297141c988965a9846225f8d8b3d3",
      "parents": [
        "97767a87f3be8834192dc3fc9412aaccf708d87f",
        "413708bbaf5c85c4c8a264145f7d6c3afcd97f99"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Mar 01 17:57:40 2012 -0500"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Mar 01 17:57:40 2012 -0500"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net\n\nConflicts:\n\tdrivers/net/ethernet/broadcom/tg3.c\n\nConflicts in the statistics regression bug fix from \u0027net\u0027,\nbut happily Matt Carlson originally posted the fix against\n\u0027net-next\u0027 so I used that to resolve this.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ecb971923614775a118bc05ad16b2bde450cac7d",
      "tree": "faccc868f922b2985341ba8dd6a6a401e6cf32d1",
      "parents": [
        "eea79e0713d94b02952f6c591b615710fd40a562"
      ],
      "author": {
        "name": "Neal Cardwell",
        "email": "ncardwell@google.com",
        "time": "Mon Feb 27 17:52:52 2012 -0500"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Feb 28 15:06:33 2012 -0500"
      },
      "message": "tcp: fix comment for tp-\u003ehighest_sack\n\nThere was an off-by-one error in the comments describing the\nhighest_sack field in struct tcp_sock. The comments previously claimed\nthat it was the \"start sequence of the highest skb with SACKed\nbit\". This commit fixes the comments to note that it is the \"start\nsequence of the skb just *after* the highest skb with SACKed bit\".\n\nSigned-off-by: Neal Cardwell \u003cncardwell@google.com\u003e\nAcked-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "dd48dc34fe7639a8b2e22d8b609672f5f81aa7cb",
      "tree": "f16ace0ae09edab16bf6d0be9e8280dfbb7100da",
      "parents": [
        "8d9eb069eafce49307f839783e4a4673414b1fd5",
        "5962b35c1de3254a2f03b95efd3b7854b874d7b7"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Feb 04 16:39:32 2012 -0500"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Feb 04 16:39:32 2012 -0500"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net\n"
    },
    {
      "commit": "efcdbf24fd5daa88060869e51ed49f68b7ac8708",
      "tree": "8c771a1ef2c93f1ba959709d6ffb4fd56af53699",
      "parents": [
        "48c3883999cb06246911e29356d194f96f1c75ef"
      ],
      "author": {
        "name": "Arun Sharma",
        "email": "asharma@fb.com",
        "time": "Mon Jan 30 14:16:06 2012 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Feb 01 14:41:50 2012 -0500"
      },
      "message": "net: Disambiguate kernel message\n\nSome of our machines were reporting:\n\nTCP: too many of orphaned sockets\n\neven when the number of orphaned sockets was well below the\nlimit.\n\nWe print a different message depending on whether we\u0027re out\nof TCP memory or there are too many orphaned sockets.\n\nAlso move the check out of line and cleanup the messages\nthat were printed.\n\nSigned-off-by: Arun Sharma \u003casharma@fb.com\u003e\nSuggested-by: Mohan Srinivasan \u003cmohan@fb.com\u003e\nCc: netdev@vger.kernel.org\nCc: linux-kernel@vger.kernel.org\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a8afca032998850ec63e83d555cdcf0eb5680cd6",
      "tree": "012c06f6b3a2bfa6a908954a671b1e36e2198eb6",
      "parents": [
        "41de8d4cff21a2e81e3d9ff66f5f7c903f9c3ab1"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Jan 31 18:45:40 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Feb 01 02:11:47 2012 -0500"
      },
      "message": "tcp: md5: protects md5sig_info with RCU\n\nThis patch makes sure we use appropriate memory barriers before\npublishing tp-\u003emd5sig_info, allowing tcp_md5_do_lookup() being used from\ntcp_v4_send_reset() without holding socket lock (upcoming patch from\nShawn Lu)\n\nNote we also need to respect rcu grace period before its freeing, since\nwe can free socket without this grace period thanks to\nSLAB_DESTROY_BY_RCU\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Shawn Lu \u003cshawn.lu@ericsson.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a915da9b69273815527ccb3789421cb7027b545b",
      "tree": "79b266da33febc50bc54adc033ac9e38a1750bcf",
      "parents": [
        "a2d91241a80ec9bbc5ab24b9a2c4d730b3fa5730"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Jan 31 05:18:33 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jan 31 12:14:00 2012 -0500"
      },
      "message": "tcp: md5: rcu conversion\n\nIn order to be able to support proper RST messages for TCP MD5 flows, we\nneed to allow access to MD5 keys without locking listener socket.\n\nThis conversion is a nice cleanup, and shrinks size of timewait sockets\nby 80 bytes.\n\nIPv6 code reuses generic code found in IPv4 instead of duplicating it.\n\nControl path uses GFP_KERNEL allocations instead of GFP_ATOMIC.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Shawn Lu \u003cshawn.lu@ericsson.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a2d91241a80ec9bbc5ab24b9a2c4d730b3fa5730",
      "tree": "a7f7806de977f4c0df5073c6eee1e0151d741b81",
      "parents": [
        "6c05d25267ebb371c4311de6904f740342e82f7c"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Jan 31 01:04:42 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jan 31 12:13:59 2012 -0500"
      },
      "message": "tcp: md5: remove obsolete md5_add() method\n\nWe no longer use md5_add() method from struct tcp_sock_af_ops\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4acb41903b2f99f3dffd4c3df9acc84ca5942cb2",
      "tree": "3a2dc1739d654effecd86749e49a40d41019e645",
      "parents": [
        "8a8ee9aff6c3077dd9c2c7a77478e8ed362b96c6"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Mon Jan 30 01:20:17 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 30 12:41:06 2012 -0500"
      },
      "message": "net/tcp: Fix tcp memory limits initialization when !CONFIG_SYSCTL\n\nsysctl_tcp_mem() initialization was moved to sysctl_tcp_ipv4.c\nin commit 3dc43e3e4d0b52197d3205214fe8f162f9e0c334, since it\nbecame a per-ns value.\n\nThat code, however, will never run when CONFIG_SYSCTL is\ndisabled, leading to bogus values on those fields - causing hung\nTCP sockets.\n\nThis patch fixes it by keeping an initialization code in\ntcp_init(). It will be overwritten by the first net namespace\ninit if CONFIG_SYSCTL is compiled in, and do the right thing if\nit is compiled out.\n\nIt is also named properly as tcp_init_mem(), to properly signal\nits non-sysctl side effect on TCP limits.\n\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nLink: http://lkml.kernel.org/r/4F22D05A.8030604@parallels.com\n[ renamed the function, tidied up the changelog a bit ]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ab56222a32b9dbaae19c1d37f07b0ac4fc3c27ec",
      "tree": "ce5eff7879a1d80c419835171de13e52c24afdfb",
      "parents": [
        "08f4fc9da9a04d59f5c937e06e375158abb68206"
      ],
      "author": {
        "name": "Vijay Subramanian",
        "email": "subramanian.vijay@gmail.com",
        "time": "Tue Dec 20 13:23:24 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Dec 21 01:03:23 2011 -0500"
      },
      "message": "tcp: Replace constants with #define macros\n\nto record the state of SACK/FACK and DSACK for better readability and maintenance.\n\nSigned-off-by: Vijay Subramanian \u003csubramanian.vijay@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3dc43e3e4d0b52197d3205214fe8f162f9e0c334",
      "tree": "1770affeb483a6b4f06cde9f2a2f1289b41496d6",
      "parents": [
        "d1a4c0b37c296e600ffe08edb0db2dc1b8f550d7"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Sun Dec 11 21:47:05 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 12 19:04:11 2011 -0500"
      },
      "message": "per-netns ipv4 sysctl_tcp_mem\n\nThis patch allows each namespace to independently set up\nits levels for tcp memory pressure thresholds. This patch\nalone does not buy much: we need to make this values\nper group of process somehow. This is achieved in the\npatches that follows in this patchset.\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCC: David S. Miller \u003cdavem@davemloft.net\u003e\nCC: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "180d8cd942ce336b2c869d324855c40c5db478ad",
      "tree": "2424d854345d81464d6030ef8090a8e22bd414b0",
      "parents": [
        "e5671dfae59b165e2adfd4dfbdeab11ac8db5bda"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Sun Dec 11 21:47:02 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 12 19:04:10 2011 -0500"
      },
      "message": "foundations of per-cgroup memory pressure controlling.\n\nThis patch replaces all uses of struct sock fields\u0027 memory_pressure,\nmemory_allocated, sockets_allocated, and sysctl_mem to acessor\nmacros. Those macros can either receive a socket argument, or a mem_cgroup\nargument, depending on the context they live in.\n\nSince we\u0027re only doing a macro wrapping here, no performance impact at all is\nexpected in the case where we don\u0027t have cgroups disabled.\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nReviewed-by: Hiroyouki Kamezawa \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCC: David S. Miller \u003cdavem@davemloft.net\u003e\nCC: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCC: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "dfd56b8b38fff3586f36232db58e1e9f7885a605",
      "tree": "64c7142ebf4625939f68bd3603f1d37bacb20a73",
      "parents": [
        "1ded132d4c3442aa3a619c94c245d7b5e0eb9731"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sat Dec 10 09:48:31 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Dec 11 18:25:16 2011 -0500"
      },
      "message": "net: use IS_ENABLED(CONFIG_IPV6)\n\nInstead of testing defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6b5a5c0dbb11dcff4e1b0f1ef87a723197948ed4",
      "tree": "3e9958d845a385f94e44bd64d081de218835865b",
      "parents": [
        "befc93fe76177b3b6ee1e3351b58293866f43aa6"
      ],
      "author": {
        "name": "Neal Cardwell",
        "email": "ncardwell@google.com",
        "time": "Mon Nov 21 17:15:14 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 29 00:29:41 2011 -0500"
      },
      "message": "tcp: do not scale TSO segment size with reordering degree\n\nSince 2005 (c1b4a7e69576d65efc31a8cea0714173c2841244)\ntcp_tso_should_defer has been using tcp_max_burst() as a target limit\nfor deciding how large to make outgoing TSO packets when not using\nsysctl_tcp_tso_win_divisor. But since 2008\n(dd9e0dda66ba38a2ddd1405ac279894260dc5c36) tcp_max_burst() returns the\nreordering degree. We should not have tcp_tso_should_defer attempt to\nbuild larger segments just because there is more reordering. This\ncommit splits the notion of deferral size used in TSO from the notion\nof burst size used in cwnd moderation, and returns the TSO deferral\nlimit to its original value.\n\nSigned-off-by: Neal Cardwell \u003cncardwell@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c8f44affb7244f2ac3e703cab13d55ede27621bb",
      "tree": "62e7aea2916a8d7cab825fe500670c5113854c0f",
      "parents": [
        "a59e2ecb859f2ab03bb2e230709f8039472ad2c3"
      ],
      "author": {
        "name": "Michał Mirosław",
        "email": "mirq-linux@rere.qmqm.pl",
        "time": "Tue Nov 15 15:29:55 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 16 17:43:10 2011 -0500"
      },
      "message": "net: introduce and use netdev_features_t for device features sets\n\nv2:\tadd couple missing conversions in drivers\n\tsplit unexporting netdev_fix_features()\n\timplemented %pNF\n\tconvert sock::sk_route_(no?)caps\n\nSigned-off-by: Michał Mirosław \u003cmirq-linux@rere.qmqm.pl\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "73cb88ecb950ee67906d02354f781ea293bcf895",
      "tree": "fbb4a777410d5a5653537bcd3ee7e954bc9ba5a0",
      "parents": [
        "98f41f694f46085fda475cdee8cc0b6d2c5e6f1f"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sun Oct 30 06:46:30 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 01 17:56:14 2011 -0400"
      },
      "message": "net: make the tcp and udp file_operations for the /proc stuff const\n\nthe tcp and udp code creates a set of struct file_operations at runtime\nwhile it can also be done at compile time, with the added benefit of then\nhaving these file operations be const.\n\nthe trickiest part was to get the \"THIS_MODULE\" reference right; the naive\nmethod of declaring a struct in the place of registration would not work\nfor this reason.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "78d81d15b74246c7cedf84894434890b33da3907",
      "tree": "cf2dd0b8d51204c4a956f443adaa2c90732aa0b0",
      "parents": [
        "8b1857357acd919b9a7fa391afbea30123fdfaec"
      ],
      "author": {
        "name": "Flavio Leitner",
        "email": "fbl@redhat.com",
        "time": "Mon Oct 24 08:15:10 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Oct 24 17:36:08 2011 -0400"
      },
      "message": "TCP: remove TCP_DEBUG\n\nIt was enabled by default and the messages guarded\nby the define are useful.\n\nSigned-off-by: Flavio Leitner \u003cfbl@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "318cf7aaa0a6d20ecf6be33eb771291e5ff2e3b9",
      "tree": "a2a42bbea9a1351d9986690f6df2a90cdbfd1d0c",
      "parents": [
        "8f9f4668b37bcc877156dd525a856055735c8d24"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Oct 24 02:46:04 2011 -0400"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Oct 24 02:46:04 2011 -0400"
      },
      "message": "tcp: md5: add more const attributes\n\nNow tcp_md5_hash_header() has a const tcphdr argument, we can add more\nconst attributes to callers.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ca35a0ef85e8ed6df6d5ab01fb6c3530cca0c469",
      "tree": "3a6d0c107ec48823bb3e437f1f91d2276facb46d",
      "parents": [
        "01718e36df750670d0f840932a4d166522ead6c3"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Oct 24 01:52:35 2011 -0400"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Oct 24 01:52:35 2011 -0400"
      },
      "message": "tcp: md5: dont write skb head in tcp_md5_hash_header()\n\ntcp_md5_hash_header() writes into skb header a temporary zero value,\nthis might confuse other users of this area.\n\nSince tcphdr is small (20 bytes), copy it in a temporary variable and\nmake the change in the copy.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    }
  ],
  "next": "cf533ea53ebfae41be15b103d78e7ebec30b9969"
}
