)]}'
{
  "log": [
    {
      "commit": "bf296b125b21b8d558ceb6ec30bb4eba2730cd6b",
      "tree": "5a06714c4001ccf1b217b888121f30d57fceea6d",
      "parents": [
        "71d93b39e52e92aea35f1058d957cf12250d0b75"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Mon Dec 15 23:43:36 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 15 23:43:36 2008 -0800"
      },
      "message": "tcp: Add GRO support\n\nThis patch adds the TCP-specific portion of GRO.  The criterion for\nmerging is extremely strict (the TCP header must match exactly apart\nfrom the checksum) so as to allow refragmentation.  Otherwise this\nis pretty much identical to LRO, except that we support the merging\nof ECN packets.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "dd24c00191d5e4a1ae896aafe33c6b8095ab4bd1",
      "tree": "e955c09e0b288e50c706b6ee409229d5a930c80c",
      "parents": [
        "1748376b6626acf59c24e9592ac67b3fe2a0e026"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Tue Nov 25 21:17:14 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 25 21:17:14 2008 -0800"
      },
      "message": "net: Use a percpu_counter for orphan_count\n\nInstead of using one atomic_t per protocol, use a percpu_counter\nfor \"orphan_count\", to reduce cache line contention on\nheavy duty network servers. \n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1748376b6626acf59c24e9592ac67b3fe2a0e026",
      "tree": "65a28205daf1ca92e31389440764fc407365014e",
      "parents": [
        "c1b56878fb68e9c14070939ea4537ad4db79ffae"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Tue Nov 25 21:16:35 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 25 21:16:35 2008 -0800"
      },
      "message": "net: Use a percpu_counter for sockets_allocated\n\nInstead of using one atomic_t per protocol, use a percpu_counter\nfor \"sockets_allocated\", to reduce cache line contention on\nheavy duty network servers. \n\nNote : We revert commit (248969ae31e1b3276fc4399d67ce29a5d81e6fd9\nnet: af_unix can make unix_nr_socks visbile in /proc),\nsince it is not anymore used after sock_prot_inuse_add() addition\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8eecaba900e89643029fd2c253ad8ebb60761165",
      "tree": "0b26268a6e0e97e9e859c25d2367cec0bff837f1",
      "parents": [
        "2f9889a20cd2854bc6305198255c617b0b4eb719"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Tue Nov 25 13:45:29 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 25 13:45:29 2008 -0800"
      },
      "message": "tcp: tcp_limit_reno_sacked can become static\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "832d11c5cd076abc0aa1eaf7be96c81d1a59ce41",
      "tree": "95b22ad16d1ff414cab39578ed8c927c2ce08723",
      "parents": [
        "f58b22fd3c16444edc393a217a74208f1894b601"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Mon Nov 24 21:20:15 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Nov 24 21:20:15 2008 -0800"
      },
      "message": "tcp: Try to restore large SKBs while SACK processing\n\nDuring SACK processing, most of the benefits of TSO are eaten by\nthe SACK blocks that one-by-one fragment SKBs to MSS sized chunks.\nThen we\u0027re in problems when cleanup work for them has to be done\nwhen a large cumulative ACK comes. Try to return back to pre-split\nstate already while more and more SACK info gets discovered by\ncombining newly discovered SACK areas with the previous skb if\nthat\u0027s SACKed as well.\n\nThis approach has a number of benefits:\n\n1) The processing overhead is spread more equally over the RTT\n2) Write queue has less skbs to process (affect everything\n   which has to walk in the queue past the sacked areas)\n3) Write queue is consistent whole the time, so no other parts\n   of TCP has to be aware of this (this was not the case with\n   some other approach that was, well, quite intrusive all\n   around).\n4) Clean_rtx_queue can release most of the pages using single\n   put_page instead of previous PAGE_SIZE/mss+1 calls\n\nIn case a hole is fully filled by the new SACK block, we attempt\nto combine the next skb too which allows construction of skbs\nthat are even larger than what tso split them to and it handles\nhole per on every nth patterns that often occur during slow start\novershoot pretty nicely. Though this to be really useful also\na retransmission would have to get lost since cumulative ACKs\nadvance one hole at a time in the most typical case.\n\nTODO: handle upwards only merging. That should be rather easy\nwhen segment is fully sacked but I\u0027m leaving that as future\nwork item (it won\u0027t make very large difference anyway since\nthis current approach already covers quite a lot of normal\ncases).\n\nI was earlier thinking of some sophisticated way of tracking\ntimestamps of the first and the last segment but later on\nrealized that it won\u0027t be that necessary at all to store the\ntimestamp of the last segment. The cases that can occur are\nbasically either:\n  1) ambiguous \u003d\u003e no sensible measurement can be taken anyway\n  2) non-ambiguous is due to reordering \u003d\u003e having the timestamp\n     of the last segment there is just skewing things more off\n     than does some good since the ack got triggered by one of\n     the holes (besides some substle issues that would make\n     determining right hole/skb even harder problem). Anyway,\n     it has nothing to do with this change then.\n\nI choose to route some abnormal looking cases with goto noop,\nsome could be handled differently (eg., by stopping the\nwalking at that skb but again). In general, they either\nshouldn\u0027t happen at all or are rare enough to make no difference\nin practice.\n\nIn theory this change (as whole) could cause some macroscale\nregression (global) because of cache misses that are taken over\nthe round-trip time but it gets very likely better because of much\nless (local) cache misses per other write queue walkers and the\nbig recovery clearing cumulative ack.\n\nWorth to note that these benefits would be very easy to get also\nwithout TSO/GSO being on as long as the data is in pages so that\nwe can merge them. Currently I won\u0027t let that happen because\nDSACK splitting at fragment that would mess up pcounts due to\nsk_can_gso in tcp_set_skb_tso_segs. Once DSACKs fragments gets\navoided, we have some conditions that can be made less strict.\n\nTODO: I will probably have to convert the excessive pointer\npassing to struct sacktag_state... :-)\n\nMy testing revealed that considerable amount of skbs couldn\u0027t\nbe shifted because they were cloned (most likely still awaiting\ntx reclaim)...\n\n[The rest is considering future work instead since I got\nrepeatably EFAULT to tcpdump\u0027s recvfrom when I added\npskb_expand_head to deal with clones, so I separated that\ninto another, later patch]\n\n...To counter that, I gave up on the fifth advantage:\n\n5) When growing previous SACK block, less allocs for new skbs\n   are done, basically a new alloc is needed only when new hole\n   is detected and when the previous skb runs out of frags space\n\n...which now only happens of if reclaim is fast enough to dispose\nthe clone before the SACK block comes in (the window is RTT long),\notherwise we\u0027ll have to alloc some.\n\nWith clones being handled I got these numbers (will be somewhat\nworse without that), taken with fine-grained mibs:\n\n                  TCPSackShifted 398\n                   TCPSackMerged 877\n            TCPSackShiftFallback 320\n      TCPSACKCOLLAPSEFALLBACKGSO 0\n  TCPSACKCOLLAPSEFALLBACKSKBBITS 0\n  TCPSACKCOLLAPSEFALLBACKSKBDATA 0\n    TCPSACKCOLLAPSEFALLBACKBELOW 0\n    TCPSACKCOLLAPSEFALLBACKFIRST 1\n TCPSACKCOLLAPSEFALLBACKPREVBITS 318\n      TCPSACKCOLLAPSEFALLBACKMSS 1\n   TCPSACKCOLLAPSEFALLBACKNOHEAD 0\n    TCPSACKCOLLAPSEFALLBACKSHIFT 0\n          TCPSACKCOLLAPSENOOPSEQ 0\n  TCPSACKCOLLAPSENOOPSMALLPCOUNT 0\n     TCPSACKCOLLAPSENOOPSMALLLEN 0\n             TCPSACKCOLLAPSEHOLE 12\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e1aa680fa40e7492260a09cb57d94002245cc8fe",
      "tree": "67afc8d71c9de6f76036942cd442d628ae26a4f3",
      "parents": [
        "4a17fc3add594fcc1c778e93a95b6ecf47f630e5"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Mon Nov 24 21:11:55 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Nov 24 21:11:55 2008 -0800"
      },
      "message": "tcp: move tcp_simple_retransmit to tcp_input\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "38a7ddffa4b79d7b1fbc9bf2fa82b21b72622858",
      "tree": "6711f02448d77e748f416dc7f66b1e38fbd226ba",
      "parents": [
        "00bcd522ea0a62f5e2a9c6ad4924cbbd8d05b026"
      ],
      "author": {
        "name": "Petr Tesarik",
        "email": "ptesarik@suse.cz",
        "time": "Thu Nov 13 22:44:11 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 13 22:44:11 2008 -0800"
      },
      "message": "tcp: remove an unnecessary field in struct tcp_skb_cb\n\nThe urg_ptr field is not used anywhere and is merely confusing.\n\nSigned-off-by: Petr Tesarik \u003cptesarik@suse.cz\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c57943a1c96214ee68f3890bb6772841ffbfd606",
      "tree": "bfe79b29240d442c8ea104a89c2e827032b2824e",
      "parents": [
        "b339a47c370ec669f789c5989f54eec1d78574bb"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue Oct 07 14:18:42 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 07 14:18:42 2008 -0700"
      },
      "message": "net: wrap sk-\u003esk_backlog_rcv()\n\nWrap calling sk-\u003esk_backlog_rcv() in a function. This will allow extending the\ngeneric sk_backlog_rcv behaviour.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a3116ac5c216fc3c145906a46df9ce542ff7dcf2",
      "tree": "6b2b43b5bacac2b358566e4b7ca0adda45a3e52b",
      "parents": [
        "86b08d867d7de001ab224180ed7865fab93fd56e"
      ],
      "author": {
        "name": "KOVACS Krisztian",
        "email": "hidden@sch.bme.hu",
        "time": "Wed Oct 01 07:46:49 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Oct 01 07:46:49 2008 -0700"
      },
      "message": "tcp: Port redirection support for TCP\n\nCurrent TCP code relies on the local port of the listening socket\nbeing the same as the destination address of the incoming\nconnection. Port redirection used by many transparent proxying\ntechniques obviously breaks this, so we have to store the original\ndestination port address.\n\nThis patch extends struct inet_request_sock and stores the incoming\ndestination port value there. It also modifies the handshake code to\nuse that value as the source port when sending reply packets.\n\nSigned-off-by: KOVACS Krisztian \u003chidden@sch.bme.hu\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "cd07a8ea0dd4b204919b4c9ced8d9efdd9924495",
      "tree": "1b8e24706b806ea3070ad335d98cd7d2daa4d4c8",
      "parents": [
        "1164f52a244204830c7625b3c22812781996d7b4"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Sep 23 00:50:13 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Sep 23 00:50:13 2008 -0700"
      },
      "message": "tcp: Use SKB queue handling interfaces instead of by-hand versions.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d258b4914bcda9177bcc7bbd8e1a97b281b460af",
      "tree": "660608fd54a6370cdfd10db6ea3ea39a01ddbd64",
      "parents": [
        "fc7ebb212d3e51d1188948d975aa93dbb0f58b25"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Sep 23 00:34:37 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Sep 23 00:34:37 2008 -0700"
      },
      "message": "tcp: Use skb_queue_is_last() instead of by-hand version.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "43f59c89399fd76883a06c551f24794e98409432",
      "tree": "7ef8ac7047ea5e74c9d522d6438d03fb69a3ba67",
      "parents": [
        "f5fff5dc8a7a3f395b0525c02ba92c95d42b7390"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Sep 21 21:28:51 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Sep 21 21:28:51 2008 -0700"
      },
      "message": "net: Remove __skb_insert() calls outside of skbuff internals.\n\nThis minor cleanup simplifies later changes which will convert\nstruct sk_buff and friends over to using struct list_head.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ef9da47c7cc64d69526331f315e76b5680d4048f",
      "tree": "97407b83c7c339dbe1fd0948c30f35e1680562ec",
      "parents": [
        "f0ceb0ed86b4792a4ed9d3438f5f7572e48f9803"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Sat Sep 20 21:25:15 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Sep 20 21:25:15 2008 -0700"
      },
      "message": "tcp: don\u0027t clear retransmit_skb_hint when not necessary\n\nMost importantly avoid doing it with cumulative ACK. Not clearing\nmeans that we no longer need n^2 processing in resolution of each\nfast recovery.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0e1c54c2a405494281e0639aacc90db03b50ae77",
      "tree": "ba5098bdf80603d4b5aa74af11738620f2ea7681",
      "parents": [
        "08ebd1721ab8fd362e90ae17b461c07b23fa2824"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Sat Sep 20 21:24:21 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Sep 20 21:24:21 2008 -0700"
      },
      "message": "tcp: reorganize retransmit code loops\n\nBoth loops are quite similar, so they can be combined\nwith little effort. As a result, forward_skb_hint becomes\nobsolete as well.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "006f582c73f4eda35e06fd323193c3df43fb3459",
      "tree": "d82762cfb6fb5e6889a52d316fa263a80c4f9fb3",
      "parents": [
        "41ea36e35a0daa75377b3e70680e5c3a3f83fe27"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Sat Sep 20 21:20:20 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Sep 20 21:20:20 2008 -0700"
      },
      "message": "tcp: convert retransmit_cnt_hint to seqno\n\nMain benefit in this is that we can then freely point\nthe retransmit_skb_hint to anywhere we want to because\nthere\u0027s no longer need to know what would be the count\nchanges involve, and since this is really used only as a\nterminator, unnecessary work is one time walk at most,\nand if some retransmissions are necessary after that\npoint later on, the walk is not full waste of time\nanyway.\n\nSince retransmit_high must be kept valid, all lost\nmarkers must ensure that.\n\nNow I also have learned how those \"holes\" in the\nrexmittable skbs can appear, mtu probe does them. So\nI removed the misleading comment as well.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "64edc2736e23994e0334b70c5ff08dc33e2ebbd9",
      "tree": "2ce61d4894023389258db20edc30ce7d7863d6be",
      "parents": [
        "d950f264ff7260d8c1e124158d758db13e1ad2d0"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Sat Sep 20 21:18:32 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Sep 20 21:18:32 2008 -0700"
      },
      "message": "tcp: Partial hint clearing has again become meaningless\n\nIe., the difference between partial and all clearing doesn\u0027t\nexists anymore since the SACK optimizations got dropped by\nan sacktag rewrite.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "410e27a49bb98bc7fa3ff5fc05cc313817b9f253",
      "tree": "88bb1fcf84f9ebfa4299c9a8dcd9e6330b358446",
      "parents": [
        "0a68a20cc3eafa73bb54097c28b921147d7d3685"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Sep 09 13:27:22 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Sep 09 13:27:22 2008 +0200"
      },
      "message": "This reverts \"Merge branch \u0027dccp\u0027 of git://eden-feed.erg.abdn.ac.uk/dccp_exp\"\nas it accentally contained the wrong set of patches. These will be\nsubmitted separately.\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "6224877b2ca4be5de96270a8ae490fe2ba11b0e0",
      "tree": "95eef39293311959842e5476eace895e457eb780",
      "parents": [
        "b25b0c60b0c39a82bc651aeb6443bcb36cd17f76"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:30:19 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:39 2008 +0200"
      },
      "message": "tcp/dccp: Consolidate common code for RFC 3390 conversion\n\nThis patch consolidates the code common to TCP and CCID-2:\n * TCP uses RFC 3390 in a packet-oriented manner (tcp_input.c) and\n * CCID-2 uses RFC 3390 in packet-oriented manner (RFC 4341).\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "33ad798c924b4a1afad3593f2796d465040aadd5",
      "tree": "2a0a868849d6e84591b9d4d917722aee2544b77b",
      "parents": [
        "49a72dfb8814c2d65bd9f8c9c6daf6395a1ec58d"
      ],
      "author": {
        "name": "Adam Langley",
        "email": "agl@imperialviolet.org",
        "time": "Sat Jul 19 00:04:31 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jul 19 00:04:31 2008 -0700"
      },
      "message": "tcp: options clean up\n\nThis should fix the following bugs:\n  * Connections with MD5 signatures produce invalid packets whenever SACK\n    options are included\n  * MD5 signatures are counted twice in the MSS calculations\n\nBehaviour changes:\n  * A SYN with MD5 + SACK + TS elicits a SYNACK with MD5 + SACK\n\n    This is because we can\u0027t fit any SACK blocks in a packet with MD5 + TS\n    options. There was discussion about disabling SACK rather than TS in\n    order to fit in better with old, buggy kernels, but that was deemed to\n    be unnecessary.\n\n  * SYNs with MD5 don\u0027t include a TS option\n\n    See above.\n\nAdditionally, it removes a bunch of duplicated logic for calculating options,\nwhich should help avoid these sort of issues in the future.\n\nSigned-off-by: Adam Langley \u003cagl@imperialviolet.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "49a72dfb8814c2d65bd9f8c9c6daf6395a1ec58d",
      "tree": "38804d609f21503573bbdd8bb9af38df99275ff5",
      "parents": [
        "845525a642c1c9e1335c33a274d4273906ee58eb"
      ],
      "author": {
        "name": "Adam Langley",
        "email": "agl@imperialviolet.org",
        "time": "Sat Jul 19 00:01:42 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jul 19 00:01:42 2008 -0700"
      },
      "message": "tcp: Fix MD5 signatures for non-linear skbs\n\nCurrently, the MD5 code assumes that the SKBs are linear and, in the case\nthat they aren\u0027t, happily goes off and hashes off the end of the SKB and\ninto random memory.\n\nReported by Stephen Hemminger in [1]. Advice thanks to Stephen and Evgeniy\nPolyakov. Also includes a couple of missed route_caps from Stephen\u0027s patch\nin [2].\n\n[1] http://marc.info/?l\u003dlinux-netdev\u0026m\u003d121445989106145\u0026w\u003d2\n[2] http://marc.info/?l\u003dlinux-netdev\u0026m\u003d121459157816964\u0026w\u003d2\n\nSigned-off-by: Adam Langley \u003cagl@imperialviolet.org\u003e\nAcked-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "57ef42d59d1c1d79be59fc3c6380ae14234e38c3",
      "tree": "4ccc2166f6967ac1fb582715f7d7d5bb5c9205fc",
      "parents": [
        "9b4661bd6e5437508e0920608f3213c23212cd1b"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Jul 18 04:02:08 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 04:02:08 2008 -0700"
      },
      "message": "mib: put tcp statistics on struct net\n\nProc temporary uses stats from init_net.\n\nBTW, TCP_XXX_STATS are beautiful (w/o do { } while (0) facing) again :)\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "de0744af1fe2d0a3d428f6af0f2fe1f6179b1a9c",
      "tree": "68d02820b1aa13e8fa9743c0ece5930a13d5a205",
      "parents": [
        "4e6734447dbc7a0a85e09616821c0782d9fb1141"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Wed Jul 16 20:31:16 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 16 20:31:16 2008 -0700"
      },
      "message": "mib: add net to NET_INC_STATS_BH\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5c52ba170f8167511bdb65b981f4582100c40675",
      "tree": "1dab120003eb696dfb4ca18c40861274a317739d",
      "parents": [
        "cf1100a7a4f2573f50f9a923b53373977328e3c8"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Wed Jul 16 20:28:10 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 16 20:28:10 2008 -0700"
      },
      "message": "sock: add net to prot-\u003eenter_memory_pressure callback\n\nThe tcp_enter_memory_pressure calls NET_INC_STATS, but doesn\u0027t\nhave where to get the net from.\n\nI decided to add a sk argument, not the net itself, only to factor\nall the required sock_net(sk) calls inside the enter_memory_pressure \ncallback itself.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "cf1100a7a4f2573f50f9a923b53373977328e3c8",
      "tree": "a6869c02ab26ab0f78e6ca72a4431498e77b22e6",
      "parents": [
        "74688e487a407a33d42879957b478601aca616b8"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Wed Jul 16 20:27:38 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 16 20:27:38 2008 -0700"
      },
      "message": "mib: add net to TCP_ADD_STATS_USER\n\nNow we\u0027re done with the TCP_XXX_STATS macros.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "74688e487a407a33d42879957b478601aca616b8",
      "tree": "38c3be832e3ac9379b9b4f5a836caf9540d1b14c",
      "parents": [
        "63231bddf6514778792d3784f63822473d250fc0"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Wed Jul 16 20:22:46 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 16 20:22:46 2008 -0700"
      },
      "message": "mib: add net to TCP_DEC_STATS\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "63231bddf6514778792d3784f63822473d250fc0",
      "tree": "d380f9ca00fa0ca2cd74142c5b51b97717ef1e9a",
      "parents": [
        "81cc8a75d944fa39fc333c2c329c8e8b3c62cada"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Wed Jul 16 20:22:25 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 16 20:22:25 2008 -0700"
      },
      "message": "mib: add net to TCP_INC_STATS_BH\n\nSame as before - the sock is always there to get the net from,\nbut there are also some places with the net already saved on \nthe stack.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "81cc8a75d944fa39fc333c2c329c8e8b3c62cada",
      "tree": "40d93df3f13d96e8cf66d154d2b865c35df18ec7",
      "parents": [
        "a9c19329eccdb145a08a4a2e969d7b40c54c9bcc"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Wed Jul 16 20:22:04 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 16 20:22:04 2008 -0700"
      },
      "message": "mib: add net to TCP_INC_STATS\n\nFortunately (almost) all the TCP code has a sock to get the net from :)\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a9c19329eccdb145a08a4a2e969d7b40c54c9bcc",
      "tree": "3cee2cdcdb0270fcd5e7765cdb4e8b5882afecb0",
      "parents": [
        "f10f84314d5adc0ba6ca2a0877442de63e226130"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Wed Jul 16 20:21:42 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 16 20:21:42 2008 -0700"
      },
      "message": "tcp: add net to tcp_mib_init\n\nThis one sets TCP MIBs after zeroing them, and thus requires\nthe net.\n\nThe existing single caller can use init_net (temporarily).\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f10f84314d5adc0ba6ca2a0877442de63e226130",
      "tree": "197f58427c9729f44754fa96dfdc9ac1e768ec0a",
      "parents": [
        "a86b1e3019455283a677c2485cfeda2dc36df3eb"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Wed Jul 16 20:21:20 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 16 20:21:20 2008 -0700"
      },
      "message": "mib: drop unused TCP_XXX_STATS macros\n\nTCP_INC_STATS_USER and TCP_ADD_STATS_BH are currently unused.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7d06b2e053d2d536348e3a0f6bb02982a41bea37",
      "tree": "ec6a5c3f448e84cd431a0397b9e2a87ca25aec17",
      "parents": [
        "4ae127d1b6c71f9240dd4245f240e6dd8fc98014"
      ],
      "author": {
        "name": "Brian Haley",
        "email": "brian.haley@hp.com",
        "time": "Sat Jun 14 17:04:49 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jun 14 17:04:49 2008 -0700"
      },
      "message": "net: change proto destroy method to return void\n\nChange struct proto destroy function pointer to return void.  Noticed\nby Al Viro.\n\nSigned-off-by: Brian Haley \u003cbrian.haley@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4ae127d1b6c71f9240dd4245f240e6dd8fc98014",
      "tree": "b7aa27b3e0c655f4613fe2146cb57d7f69e421f6",
      "parents": [
        "875ec4333b99144e2589e900a0bcd2c25c757b27",
        "7775c9753b94fe429dc4323360d6502c95e0dd6e"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jun 13 20:52:39 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jun 13 20:52:39 2008 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\n\tdrivers/net/smc911x.c\n"
    },
    {
      "commit": "ec0a196626bd12e0ba108d7daa6d95a4fb25c2c5",
      "tree": "68d9c2923765e12853368e8edb27b241142e0c48",
      "parents": [
        "f23d60de719e639690b2dc5c2d0e4243ff614b7a"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jun 12 16:31:35 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jun 12 16:34:35 2008 -0700"
      },
      "message": "tcp: Revert \u0027process defer accept as established\u0027 changes.\n\nThis reverts two changesets, ec3c0982a2dd1e671bad8e9d26c28dcba0039d87\n(\"[TCP]: TCP_DEFER_ACCEPT updates - process as established\") and\nthe follow-on bug fix 9ae27e0adbf471c7a6b80102e38e1d5a346b3b38\n(\"tcp: Fix slab corruption with ipv6 and tcp6fuzz\").\n\nThis change causes several problems, first reported by Ingo Molnar\nas a distcc-over-loopback regression where connections were getting\nstuck.\n\nIlpo Järvinen first spotted the locking problems.  The new function\nadded by this code, tcp_defer_accept_check(), only has the\nchild socket locked, yet it is modifying state of the parent\nlistening socket.\n\nFixing that is non-trivial at best, because we can\u0027t simply just grab\nthe parent listening socket lock at this point, because it would\ncreate an ABBA deadlock.  The normal ordering is parent listening\nsocket --\u003e child socket, but this code path would require the\nreverse lock ordering.\n\nNext is a problem noticed by Vitaliy Gusev, he noted:\n\n----------------------------------------\n\u003e--- a/net/ipv4/tcp_timer.c\n\u003e+++ b/net/ipv4/tcp_timer.c\n\u003e@@ -481,6 +481,11 @@ static void tcp_keepalive_timer (unsigned long data)\n\u003e \t\tgoto death;\n\u003e \t}\n\u003e\n\u003e+\tif (tp-\u003edefer_tcp_accept.request \u0026\u0026 sk-\u003esk_state \u003d\u003d TCP_ESTABLISHED) {\n\u003e+\t\ttcp_send_active_reset(sk, GFP_ATOMIC);\n\u003e+\t\tgoto death;\n\nHere socket sk is not attached to listening socket\u0027s request queue. tcp_done()\nwill not call inet_csk_destroy_sock() (and tcp_v4_destroy_sock() which should\nrelease this sk) as socket is not DEAD. Therefore socket sk will be lost for\nfreeing.\n----------------------------------------\n\nFinally, Alexey Kuznetsov argues that there might not even be any\nreal value or advantage to these new semantics even if we fix all\nof the bugs:\n\n----------------------------------------\nHiding from accept() sockets with only out-of-order data only\nis the only thing which is impossible with old approach. Is this really\nso valuable? My opinion: no, this is nothing but a new loophole\nto consume memory without control.\n----------------------------------------\n\nSo revert this thing for now.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9501f9722922f2e80e1f9dc6682311d65c2b5690",
      "tree": "ca8195e04ea63e8273801030ce26527fe5a8a7c7",
      "parents": [
        "8d26d76dd4a4c87ef037a44a42a0608ffc730199"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Fri Apr 18 12:45:16 2008 +0900"
      },
      "committer": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Thu Jun 12 03:46:30 2008 +0900"
      },
      "message": "tcp md5sig: Let the caller pass appropriate key for tcp_v{4,6}_do_calc_md5_hash().\n\nAs we do for other socket/timewait-socket specific parameters,\nlet the callers pass appropriate arguments to\ntcp_v{4,6}_do_calc_md5_hash().\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\n"
    },
    {
      "commit": "8d26d76dd4a4c87ef037a44a42a0608ffc730199",
      "tree": "884ff53a83e460aa3f1837cc336a5a34f364156e",
      "parents": [
        "076fb7223357769c39f3ddf900bba6752369c76a"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Thu Apr 17 13:19:16 2008 +0900"
      },
      "committer": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Thu Jun 12 02:38:20 2008 +0900"
      },
      "message": "tcp md5sig: Share most of hash calcucaltion bits between IPv4 and IPv6.\n\nWe can share most part of the hash calculation code because\nthe only difference between IPv4 and IPv6 is their pseudo headers.\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\n"
    },
    {
      "commit": "076fb7223357769c39f3ddf900bba6752369c76a",
      "tree": "db75c2af3bf71cda4d0cccd6ebcfa8d1a62c3620",
      "parents": [
        "7d5d5525bd88313e6fd90c0659665aee5114bc2d"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Thu Apr 17 12:48:12 2008 +0900"
      },
      "committer": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Thu Jun 12 02:38:19 2008 +0900"
      },
      "message": "tcp md5sig: Remove redundant protocol argument.\n\nProtocol is always TCP, so remove useless protocol argument.\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\n"
    },
    {
      "commit": "7d5d5525bd88313e6fd90c0659665aee5114bc2d",
      "tree": "41517e753220261c8cc46d975977cfd711892f6c",
      "parents": [
        "81b302a321a0d99ff172b8cb2a8de17bff2f9499"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Thu Apr 17 12:29:53 2008 +0900"
      },
      "committer": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Thu Jun 12 02:38:18 2008 +0900"
      },
      "message": "tcp md5sig: Share MD5 Signature option parser between IPv4 and IPv6.\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\n"
    },
    {
      "commit": "45d465bc237ab1e1ebb4c65b9b318830dafb7509",
      "tree": "322df11c032408bdb53405e1a31cb4ee2d07453a",
      "parents": [
        "6b6707a50c7598a83820077393f8823ab791abf8"
      ],
      "author": {
        "name": "Rami Rosen",
        "email": "ramirose@gmail.com",
        "time": "Tue Jun 10 12:37:42 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 10 12:37:42 2008 -0700"
      },
      "message": "ipv4: Remove unused declaration from include/net/tcp.h.\n\n- The tcp_unhash() method in /include/net/tcp.h is no more needed, as the\nunhash method in tcp_prot structure is now inet_unhash (instead of\ntcp_unhash in the\npast); see tcp_prot structure in net/ipv4/tcp_ipv4.c.\n\n- So, this patch removes tcp_unhash() declaration from include/net/tcp.h\n\nSigned-off-by: Rami Rosen \u003cramirose@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "dd9e0dda66ba38a2ddd1405ac279894260dc5c36",
      "tree": "f515b780e78ae05f81dc21f1434fe7ba807b8509",
      "parents": [
        "d0498d9ae1a5cebac363e38907266d5cd2eedf89"
      ],
      "author": {
        "name": "John Heffner",
        "email": "johnwheffner@gmail.com",
        "time": "Tue Apr 15 15:26:39 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Apr 16 02:29:56 2008 -0700"
      },
      "message": "[TCP]: Increase the max_burst threshold from 3 to tp-\u003ereordering.\n\nThis change is necessary to allow cwnd to grow during persistent\nreordering.  Cwnd moderation is applied when in the disorder state\nand an ack that fills the hole comes in.  If the hole was greater\nthan 3 packets, but less than tp-\u003ereordering, cwnd will shrink when\nit should not have.\n\nSigned-off-by: John Heffner \u003cjheffner@napa.(none)\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "df39e8ba56a788733d369068c7319e04b1da3cd5",
      "tree": "1e9be853bdb455e341cdbf957656f342cfa2eb9e",
      "parents": [
        "f5572855ec492334d8c3ec0e0e86c31865d5cf07",
        "159d83363b629c91d020734207c1bc788b96af5a"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Apr 14 02:30:23 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Apr 14 02:30:23 2008 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\n\tdrivers/net/ehea/ehea_main.c\n\tdrivers/net/wireless/iwlwifi/Kconfig\n\tdrivers/net/wireless/rt2x00/rt61pci.c\n\tnet/ipv4/inet_timewait_sock.c\n\tnet/ipv6/raw.c\n\tnet/mac80211/ieee80211_sta.c\n"
    },
    {
      "commit": "7de6c033367ab86f39c7723392caf73325cbf286",
      "tree": "e05d84e6e02b7a0245bfa62e02835882ffdffa48",
      "parents": [
        "bf299275882624b1908521ee8074df85160e9679"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Apr 14 00:05:09 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Apr 14 00:05:09 2008 -0700"
      },
      "message": "[SKB]: __skb_append \u003d __skb_queue_after \n\nThis expresses __skb_append in terms of __skb_queue_after, exploiting that\n\n  __skb_append(old, new, list) \u003d __skb_queue_after(list, old, new).\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5f4472c5a640c9671ca5becaebdfd6e651482176",
      "tree": "e4efabf6e55c820968facc5c1c9fe5d469e5046b",
      "parents": [
        "68fcadd16c371d5e0698ba366f33a4f990ce83ce"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Sun Apr 13 22:13:53 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Apr 13 22:13:53 2008 -0700"
      },
      "message": "[TCP]: Remove owner from tcp_seq_afinfo.\n\nMove it to tcp_seq_afinfo-\u003eseq_fops as should be.\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "68fcadd16c371d5e0698ba366f33a4f990ce83ce",
      "tree": "074c58f40e77dd03f464e5d68f7f00841fa68f96",
      "parents": [
        "52d6f3f11bdb8c26fead701c9dbad08acd28063d"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Sun Apr 13 22:13:30 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Apr 13 22:13:30 2008 -0700"
      },
      "message": "[TCP]: Place file operations directly into tcp_seq_afinfo.\n\nNo need to have separate never-used variable.\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9427c4b36b8fe652df1d7c89eae678948e1f4b32",
      "tree": "d2e018d9b09656e04e80ae3d3e88993e76753fbb",
      "parents": [
        "1abf4fb20d38cf58c92b27f4d6ad4fa92a3bb553"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Sun Apr 13 22:12:13 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Apr 13 22:12:13 2008 -0700"
      },
      "message": "[TCP]: Move seq_ops from tcp_iter_state to tcp_seq_afinfo.\n\nNo need to create seq_operations for each instance of \u0027netstat\u0027.\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a4146b1b2c6ba995db08b1a2aef5af1b17b151e6",
      "tree": "972901fbb5dcc41eddd403e811cd4fbbab3ab149",
      "parents": [
        "2cf83afe902fd72ef4b211774e48ab39890fb328"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Sun Apr 13 22:11:14 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Apr 13 22:11:14 2008 -0700"
      },
      "message": "[TCP]: Replace struct net on tcp_iter_state with seq_net_private.\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4dfc2817025965a2fc78a18c50f540736a6b5c24",
      "tree": "f8f2f76e660d9d5c7a0f39ed8a79cb6d6d181206",
      "parents": [
        "15be75cdb5db442d0e33d37b20832b88f3ccd383"
      ],
      "author": {
        "name": "Florian Westphal",
        "email": "fw@strlen.de",
        "time": "Thu Apr 10 03:12:40 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 10 03:12:40 2008 -0700"
      },
      "message": "[Syncookies]: Add support for TCP options via timestamps.\n\nAllow the use of SACK and window scaling when syncookies are used\nand the client supports tcp timestamps. Options are encoded into\nthe timestamp sent in the syn-ack and restored from the timestamp\necho when the ack is received.\n\nBased on earlier work by Glenn Griffin.\nThis patch avoids increasing the size of structs by encoding TCP\noptions into the least significant bits of the timestamp and\nby not using any \u0027timestamp offset\u0027.\n\nThe downside is that the timestamp sent in the packet after the synack\nwill increase by several seconds.\n\nchanges since v1:\n don\u0027t duplicate timestamp echo decoding function, put it into ipv4/syncookie.c\n and have ipv6/syncookies.c use it.\n Feedback from Glenn Griffin: fix line indented with spaces, kill redundant if ()\n\nReviewed-by: Hagen Paul Pfeifer \u003chagen@jauu.net\u003e\nSigned-off-by: Florian Westphal \u003cfw@strlen.de\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n\n"
    },
    {
      "commit": "882bebaaca4bb1484078d44ef011f918c0e1e14e",
      "tree": "d6542dd9fc3d941ecc5f418b66ea09e91f47b71f",
      "parents": [
        "c137f3dda04b0aee1bc6889cdc69185f53df8a82"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Mon Apr 07 22:33:07 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Apr 07 22:33:07 2008 -0700"
      },
      "message": "[TCP]: tcp_simple_retransmit can cause S+L\n\nThis fixes Bugzilla #10384\n\ntcp_simple_retransmit does L increment without any checking\nwhatsoever for overflowing S+L when Reno is in use.\n\nThe simplest scenario I can currently think of is rather\ncomplex in practice (there might be some more straightforward\ncases though). Ie., if mss is reduced during mtu probing, it\nmay end up marking everything lost and if some duplicate ACKs\narrived prior to that sacked_out will be non-zero as well,\nleading to S+L \u003e packets_out, tcp_clean_rtx_queue on the next\ncumulative ACK or tcp_fastretrans_alert on the next duplicate\nACK will fix the S counter.\n\nMore straightforward (but questionable) solution would be to\njust call tcp_reset_reno_sack() in tcp_simple_retransmit but\nit would negatively impact the probe\u0027s retransmission, ie.,\nthe retransmissions would not occur if some duplicate ACKs\nhad arrived.\n\nSo I had to add reno sacked_out reseting to CA_Loss state\nwhen the first cumulative ACK arrives (this stale sacked_out\nmight actually be the explanation for the reports of left_out\noverflows in kernel prior to 2.6.23 and S+L overflow reports\nof 2.6.24). However, this alone won\u0027t be enough to fix kernel\nbefore 2.6.24 because it is building on top of the commit\n1b6d427bb7e ([TCP]: Reduce sacked_out with reno when purging\nwrite_queue) to keep the sacked_out from overflowing.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nReported-by: Alessandro Suardi \u003calessandro.suardi@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2051f11fb86b0056fec440fe7e9fa8370d60a5c6",
      "tree": "e93befbb8fb6590994b51aa213bf9596c0070bc1",
      "parents": [
        "310afe86af8ddd96a06b75aa61ef1af233f80e89"
      ],
      "author": {
        "name": "Florian Westphal",
        "email": "fw@strlen.de",
        "time": "Sun Mar 23 22:21:28 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Mar 23 22:21:28 2008 -0700"
      },
      "message": "[TCP]: Shrink syncookie_secret by 8 byte.\n\nthe first u32 copied from syncookie_secret is overwritten by the\nminute-counter four lines below.  After adjusting the destination\naddress, the size of syncookie_secret can be reduced accordingly.\n\nAFAICS, the only other user of syncookie_secret[] is the ipv6\nsyncookie support.  Because ipv6 syncookies only grab 44 bytes from\nsyncookie_secret[], this shouldn\u0027t affect them in any way.\n\nWith fixes from Glenn Griffin.\n\nSigned-off-by: Florian Westphal \u003cfw@strlen.de\u003e\nAcked-by: Glenn Griffin \u003cggriffin.kernel@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ec3c0982a2dd1e671bad8e9d26c28dcba0039d87",
      "tree": "11a3cd7c530e4225a4c3d4c3f3cc54eb7d2e0e4f",
      "parents": [
        "e4c78840284f3f51b1896cf3936d60a6033c4d2c"
      ],
      "author": {
        "name": "Patrick McManus",
        "email": "mcmanus@ducksong.com",
        "time": "Fri Mar 21 16:33:01 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Mar 21 16:33:01 2008 -0700"
      },
      "message": "[TCP]: TCP_DEFER_ACCEPT updates - process as established\n\nChange TCP_DEFER_ACCEPT implementation so that it transitions a\nconnection to ESTABLISHED after handshake is complete instead of\nleaving it in SYN-RECV until some data arrvies. Place connection in\naccept queue when first data packet arrives from slow path.\n\nBenefits:\n  - established connection is now reset if it never makes it\n   to the accept queue\n\n - diagnostic state of established matches with the packet traces\n   showing completed handshake\n\n - TCP_DEFER_ACCEPT timeouts are expressed in seconds and can now be\n   enforced with reasonable accuracy instead of rounding up to next\n   exponential back-off of syn-ack retry.\n\nSigned-off-by: Patrick McManus \u003cmcmanus@ducksong.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6f8b13bcb3369a5df2e63acc422bed6098f5b8c4",
      "tree": "715d53b85e86b26c113b417e269602d1cb8ca436",
      "parents": [
        "0c96d8c50bffb7f02690dd8a8cf1adb8e07e100f"
      ],
      "author": {
        "name": "Daniel Lezcano",
        "email": "dlezcano@fr.ibm.com",
        "time": "Fri Mar 21 04:14:45 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Mar 21 04:14:45 2008 -0700"
      },
      "message": "[NETNS][IPV6] tcp6 - make proc per namespace\n\nMake the proc for tcp6 to be per namespace.\n\nSigned-off-by: Daniel Lezcano \u003cdlezcano@fr.ibm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f40c8174d3c21bf178283f3ef3aa8c7bf238fdec",
      "tree": "e82b56babcf523676ebfa420f35b3bc459d80986",
      "parents": [
        "8d9f1744cab50acb0c6c9553be533621e01f178b"
      ],
      "author": {
        "name": "Daniel Lezcano",
        "email": "dlezcano@fr.ibm.com",
        "time": "Fri Mar 21 04:13:54 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Mar 21 04:13:54 2008 -0700"
      },
      "message": "[NETNS][IPV4] tcp - make proc handle the network namespaces\n\nThis patch, like udp proc, makes the proc functions to take care of\nwhich namespace the socket belongs.\n\nSigned-off-by: Daniel Lezcano \u003cdlezcano@fr.ibm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c6aefafb7ec620911d46174eed514f9df639e5a4",
      "tree": "626e3d47a7bb31f586935c480bed09f342f2fbca",
      "parents": [
        "11baab7ac34723ad481e0f97fca733272ef364d4"
      ],
      "author": {
        "name": "Glenn Griffin",
        "email": "ggriffin.kernel@gmail.com",
        "time": "Thu Feb 07 21:49:26 2008 -0800"
      },
      "committer": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Tue Mar 04 15:18:21 2008 +0900"
      },
      "message": "[TCP]: Add IPv6 support to TCP SYN cookies\n\nUpdated to incorporate Eric\u0027s suggestion of using a per cpu buffer\nrather than allocating on the stack.  Just a two line change, but will\nresend in it\u0027s entirety.\n\nSigned-off-by: Glenn Griffin \u003cggriffin.kernel@gmail.com\u003e\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\n"
    },
    {
      "commit": "9b0f976f27f00a81cf47643d90854659626795b4",
      "tree": "3226ff8a03faf6c8137eeb1313248dfd2a395f21",
      "parents": [
        "4c563f7669c10a12354b72b518c2287ffc6ebfb3"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Fri Feb 29 11:13:15 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Feb 29 11:13:15 2008 -0800"
      },
      "message": "[INET]: Remove struct net_proto_family* from _init calls.\n\nstruct net_proto_family* is not used in icmp[v6]_init, ndisc_init,\nigmp_init and tcp_v4_init. Remove it.\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nAcked-by: Daniel Lezcano \u003cdlezcano@fr.ibm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "cea14e0ed6082bd3dff19203d01340de6e7ca067",
      "tree": "261c61ca73f60d85f748623d2edad7b346d7af37",
      "parents": [
        "490d5046930276aae50dd16942649bfc626056f7"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Sat Jan 12 03:19:12 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 15:01:48 2008 -0800"
      },
      "message": "[TCP]: Uninline tcp_is_cwnd_limited\n\nnet/ipv4/tcp_cong.c:\n  tcp_reno_cong_avoid |  -65\n 1 function changed, 65 bytes removed, diff: -65\n\nnet/ipv4/arp.c:\n  arp_ignore |   -5\n 1 function changed, 5 bytes removed, diff: -5\n\nnet/ipv4/tcp_bic.c:\n  bictcp_cong_avoid |  -57\n 1 function changed, 57 bytes removed, diff: -57\n\nnet/ipv4/tcp_cubic.c:\n  bictcp_cong_avoid |  -61\n 1 function changed, 61 bytes removed, diff: -61\n\nnet/ipv4/tcp_highspeed.c:\n  hstcp_cong_avoid |  -63\n 1 function changed, 63 bytes removed, diff: -63\n\nnet/ipv4/tcp_hybla.c:\n  hybla_cong_avoid |  -85\n 1 function changed, 85 bytes removed, diff: -85\n\nnet/ipv4/tcp_htcp.c:\n  htcp_cong_avoid |  -57\n 1 function changed, 57 bytes removed, diff: -57\n\nnet/ipv4/tcp_veno.c:\n  tcp_veno_cong_avoid |  -52\n 1 function changed, 52 bytes removed, diff: -52\n\nnet/ipv4/tcp_scalable.c:\n  tcp_scalable_cong_avoid |  -61\n 1 function changed, 61 bytes removed, diff: -61\n\nnet/ipv4/tcp_yeah.c:\n  tcp_yeah_cong_avoid |  -75\n 1 function changed, 75 bytes removed, diff: -75\n\nnet/ipv4/tcp_illinois.c:\n  tcp_illinois_cong_avoid |  -54\n 1 function changed, 54 bytes removed, diff: -54\n\nnet/dccp/ccids/ccid3.c:\n  ccid3_update_send_interval |   -7\n  ccid3_hc_tx_packet_recv    |   +7\n 2 functions changed, 7 bytes added, 7 bytes removed, diff: +0\n\nnet/ipv4/tcp_cong.c:\n  tcp_is_cwnd_limited |  +88\n 1 function changed, 88 bytes added, diff: +88\n\nbuilt-in.o:\n 14 functions changed, 95 bytes added, 642 bytes removed, diff: -547\n\n...Again some gcc artifacts visible as well.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "490d5046930276aae50dd16942649bfc626056f7",
      "tree": "91e15e68c70361239773b63324b028b64e9687ce",
      "parents": [
        "389f661224cdbdf178553fb09a52dc6c8bf86890"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Sat Jan 12 03:17:20 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 15:01:47 2008 -0800"
      },
      "message": "[TCP]: Uninline tcp_set_state\n\nnet/ipv4/tcp.c:\n  tcp_close_state | -226\n  tcp_done        | -145\n  tcp_close       | -564\n  tcp_disconnect  | -141\n 4 functions changed, 1076 bytes removed, diff: -1076\n\nnet/ipv4/tcp_input.c:\n  tcp_fin               |  -86\n  tcp_rcv_state_process | -164\n 2 functions changed, 250 bytes removed, diff: -250\n\nnet/ipv4/tcp_ipv4.c:\n  tcp_v4_connect | -209\n 1 function changed, 209 bytes removed, diff: -209\n\nnet/ipv4/arp.c:\n  arp_ignore |   +5\n 1 function changed, 5 bytes added, diff: +5\n\nnet/ipv6/tcp_ipv6.c:\n  tcp_v6_connect | -158\n 1 function changed, 158 bytes removed, diff: -158\n\nnet/sunrpc/xprtsock.c:\n  xs_sendpages |   -2\n 1 function changed, 2 bytes removed, diff: -2\n\nnet/dccp/ccids/ccid3.c:\n  ccid3_update_send_interval |   +7\n 1 function changed, 7 bytes added, diff: +7\n\nnet/ipv4/tcp.c:\n  tcp_set_state | +238\n 1 function changed, 238 bytes added, diff: +238\n\nbuilt-in.o:\n 12 functions changed, 250 bytes added, 1695 bytes removed, diff: -1445\n\nI\u0027ve no explanation why some unrelated changes seem to occur\nconsistently as well (arp_ignore, ccid3_update_send_interval;\nI checked the arp_ignore asm and it seems to be due to some\nreordered of operation order causing some extra opcodes to be\ngenerated). Still, the benefits are pretty obvious from the\ncodiff\u0027s results.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4828e7f49a402930e8b3e72de695c8d37e0f98ee",
      "tree": "021c5d357b8a081bee8b8798e362b37999ee1ffb",
      "parents": [
        "cadbd0313bc897f5917d013174cdf9077edf4aa5"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Mon Dec 31 04:50:19 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 15:00:23 2008 -0800"
      },
      "message": "[TCP]: Remove TCPCB_URG \u0026 TCPCB_AT_TAIL as unnecessary\n\nThe snd_up check should be enough. I suspect this has been\nthere to provide a minor optimization in clean_rtx_queue which\nused to have a small if (!-\u003esacked) block which could skip\nsnd_up check among the other work.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "90840defabbd819180c7528e12d550776848f833",
      "tree": "865c98dbf50a08b35cb8b91e1348f10c87fae945",
      "parents": [
        "66f5fe624fa5f1d4574d2dd2bc0c72a17a92079c"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Mon Dec 31 04:48:41 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 15:00:22 2008 -0800"
      },
      "message": "[TCP]: Introduce tcp_wnd_end() to reduce line lengths\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3ab224be6d69de912ee21302745ea45a99274dbc",
      "tree": "335dcef1cfacfefe3f36c21d5f144e011bc3bfba",
      "parents": [
        "a06b494b61de44617dd58612164bdde56fca7bfb"
      ],
      "author": {
        "name": "Hideo Aoki",
        "email": "haoki@redhat.com",
        "time": "Mon Dec 31 00:11:19 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 15:00:18 2008 -0800"
      },
      "message": "[NET] CORE: Introducing new memory accounting interface.\n\nThis patch introduces new memory accounting functions for each network\nprotocol. Most of them are renamed from memory accounting functions\nfor stream protocols. At the same time, some stream memory accounting\nfunctions are removed since other functions do same thing.\n\nRenaming:\n\tsk_stream_free_skb()\t\t-\u003e\tsk_wmem_free_skb()\n\t__sk_stream_mem_reclaim()\t-\u003e\t__sk_mem_reclaim()\n\tsk_stream_mem_reclaim()\t\t-\u003e\tsk_mem_reclaim()\n\tsk_stream_mem_schedule \t\t-\u003e    \t__sk_mem_schedule()\n\tsk_stream_pages()      \t\t-\u003e\tsk_mem_pages()\n\tsk_stream_rmem_schedule()\t-\u003e\tsk_rmem_schedule()\n\tsk_stream_wmem_schedule()\t-\u003e\tsk_wmem_schedule()\n\tsk_charge_skb()\t\t\t-\u003e\tsk_mem_charge()\n\nRemoveing\n\tsk_stream_rfree():\tconsolidates into sock_rfree()\n\tsk_stream_set_owner_r(): consolidates into skb_set_owner_r()\n\tsk_stream_mem_schedule()\n\nThe following functions are added.\n    \tsk_has_account(): check if the protocol supports accounting\n\tsk_mem_uncharge(): do the opposite of sk_mem_charge()\n\nIn addition, to achieve consolidation, updating sk_wmem_queued is\nremoved from sk_mem_charge().\n\nNext, to consolidate memory accounting functions, this patch adds\nmemory accounting calls to network core functions. Moreover, present\nmemory accounting call is renamed to new accounting call.\n\nFinally we replace present memory accounting calls with new interface\nin TCP and SCTP.\n\nSigned-off-by: Takahiro Yasui \u003ctyasui@redhat.com\u003e\nSigned-off-by: Hideo Aoki \u003chaoki@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9cb5734e5b9b26097c7fa28a9c6426a204cc15e3",
      "tree": "a8a098affaa86890b49ce7d52dc365d34213e188",
      "parents": [
        "c40896de50c73e7835b34f23bea96625edd9d6c4"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Sat Jan 12 02:16:03 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:59:56 2008 -0800"
      },
      "message": "[TCP]: Convert several length variable to unsigned.\n\nSeveral length variables cannot be negative, so convert int to\nunsigned int.  This also allows us to do sane shift operations\non those variables.\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6859d49475d4f32abe640372117e4b687906e6b6",
      "tree": "2133f2e26af6540f2a212c36f219873d34db2c1e",
      "parents": [
        "7201883599ac8bff76300117155e299b1a54092f"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Sun Dec 02 00:48:06 2007 +0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:55:46 2008 -0800"
      },
      "message": "[TCP]: Abstract tp-\u003ehighest_sack accessing \u0026 point to next skb\n\nPointing to the next skb is necessary to avoid referencing\nalready SACKed skbs which will soon be on a separate list.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "234b68607006f3721679e900809ccb99e8bfb10c",
      "tree": "5f40cdf7db79afbfbbb864ee3a07192136162006",
      "parents": [
        "d67c58e9ae80ea577785111534e49d3ca757ec50"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Sun Dec 02 00:48:02 2007 +0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:55:43 2008 -0800"
      },
      "message": "[TCP]: Add tcp_for_write_queue_from_safe and use it in mtu_probe\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c3a05c6050a339c92e49fae0ba77dbba0d41fd99",
      "tree": "4bc4e003d522cc748aceb7478f86c043e382ad8e",
      "parents": [
        "ede9f3b186bc3eb0fce084bdcab500efc3721a80"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Sun Dec 02 00:47:59 2007 +0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:55:41 2008 -0800"
      },
      "message": "[TCP]: Cong.ctrl modules: remove unused good_ack from cong_avoid\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8512430e554a84275669f78f86dce18566d5cf7a",
      "tree": "86c3743da48dbe20c2eda691b957310dd0181ad2",
      "parents": [
        "82d8a867ffaed7fe58e789103b32c0fc6b79dafd"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Mon Nov 26 20:17:38 2007 +0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:55:05 2008 -0800"
      },
      "message": "[TCP]: Move FRTO checks out from write queue abstraction funcs\n\nBetter place exists in update_send_head (other non-queue related\nadjustments are done there as well) which is the only caller of\ntcp_advance_send_head (now that the bogus call from mtu_probe is\ngone).\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "68f8353b480e5f2e136c38a511abdbb88eaa8ce2",
      "tree": "3e412890c3caa98619872f15e117daffb68e9edf",
      "parents": [
        "fd6dad616d4fe2f08d690f25ca76b0102158fb3a"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Thu Nov 15 19:50:37 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:54:07 2008 -0800"
      },
      "message": "[TCP]: Rewrite SACK block processing \u0026 sack_recv_cache use\n\nKey points of this patch are:\n\n  - In case new SACK information is advance only type, no skb\n    processing below previously discovered highest point is done\n  - Optimize cases below highest point too since there\u0027s no need\n    to always go up to highest point (which is very likely still\n    present in that SACK), this is not entirely true though\n    because I\u0027m dropping the fastpath_skb_hint which could\n    previously optimize those cases even better. Whether that\u0027s\n    significant, I\u0027m not too sure.\n\nCurrently it will provide skipping by walking. Combined with\nRB-tree, all skipping would become fast too regardless of window\nsize (can be done incrementally later).\n\nPreviously a number of cases in TCP SACK processing fails to\ntake advantage of costly stored information in sack_recv_cache,\nmost importantly, expected events such as cumulative ACK and new\nhole ACKs. Processing on such ACKs result in rather long walks\nbuilding up latencies (which easily gets nasty when window is\nhuge). Those latencies are often completely unnecessary\ncompared with the amount of _new_ information received, usually\nfor cumulative ACK there\u0027s no new information at all, yet TCP\nwalks whole queue unnecessary potentially taking a number of\ncostly cache misses on the way, etc.!\n\nSince the inclusion of highest_sack, there\u0027s a lot information\nthat is very likely redundant (SACK fastpath hint stuff,\nfackets_out, highest_sack), though there\u0027s no ultimate guarantee\nthat they\u0027ll remain the same whole the time (in all unearthly\nscenarios). Take advantage of this knowledge here and drop\nfastpath hint and use direct access to highest SACKed skb as\na replacement.\n\nEffectively \"special cased\" fastpath is dropped. This change\nadds some complexity to introduce better coveraged \"fastpath\",\nthough the added complexity should make TCP behave more cache\nfriendly.\n\nThe current ACK\u0027s SACK blocks are compared against each cached\nblock individially and only ranges that are new are then scanned\nby the high constant walk. For other parts of write queue, even\nwhen in previously known part of the SACK blocks, a faster skip\nfunction is used (if necessary at all). In addition, whenever\npossible, TCP fast-forwards to highest_sack skb that was made\navailable by an earlier patch. In typical case, no other things\nbut this fast-forward and mandatory markings after that occur\nmaking the access pattern quite similar to the former fastpath\n\"special case\".\n\nDSACKs are special case that must always be walked.\n\nThe local to recv_sack_cache copying could be more intelligent\nw.r.t DSACKs which are likely to be there only once but that\nis left to a separate patch.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a47e5a988a575e64c8c9bae65a1dfe3dca7cba32",
      "tree": "30c389efb3a98a7af24150e5f6462f3c379d1e63",
      "parents": [
        "85cc391c0e4584db594bfc4005c63c07c76c5077"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Thu Nov 15 19:41:46 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:54:03 2008 -0800"
      },
      "message": "[TCP]: Convert highest_sack to sk_buff to allow direct access\n\nIt is going to replace the sack fastpath hint quite soon... :-)\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9c55e01c0cc835818475a6ce8c4d684df9949ac8",
      "tree": "1115311436677f837a4b477e3fd23c5e0ae184ef",
      "parents": [
        "bbdfc2f70610bebb841d0874dc901c648308e43a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Nov 06 23:30:13 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:53:31 2008 -0800"
      },
      "message": "[TCP]: Splice receive support.\n\nSupport for network splice receive.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6e42141009ff18297fe19d19296738b742f861db",
      "tree": "6bbe19922e9b24d0ce4df6effc45abcf0aa2af51",
      "parents": [
        "1f8170b0ecd8363847792b3b1f269e9d8e10391a"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Mon Nov 19 23:24:09 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Nov 19 23:24:09 2007 -0800"
      },
      "message": "[TCP] MTUprobe: fix potential sk_send_head corruption\n\nWhen the abstraction functions got added, conversion here was\nmade incorrectly. As a result, the skb may end up pointing\nto skb which got included to the probe skb and then was freed.\nFor it to trigger, however, skb_transmit must fail sending as\nwell.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c1bd24b76879f61b2d10609b0dabde400792a6ec",
      "tree": "e059d438ee2c6d92dfc5b06710fdd9ef200e255f",
      "parents": [
        "c2636b4d9e8ab8d16b9e2bf0f0744bb8418d4026"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Tue Oct 23 21:08:54 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Tue Oct 23 21:27:55 2007 -0700"
      },
      "message": "[TCP]: Remove unneeded implicit type cast when calling tcp_minshall_update()\n\nThe tcp_minshall_update() function is called in exactly one place, and is\npassed an unsigned integer for the mss_len argument.  Make the sign of the\nargument match the sign of the passed variable in order to eliminate an\nunneeded implicit type cast and a mixed sign comparison in\ntcp_minshall_update().\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0800f170263d19b882e519441156c5f6ed190fc1",
      "tree": "09dd9f9405390b969af4ee2fbea411308dcc7582",
      "parents": [
        "b76892051cf1c04d95872838e70146f65e3b9d75"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Thu Sep 20 11:40:37 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:52:13 2007 -0700"
      },
      "message": "[TCP]: Minor coding style fixup.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b76892051cf1c04d95872838e70146f65e3b9d75",
      "tree": "475050b8e41eb317144465b1e2b9255fbad188b4",
      "parents": [
        "c96fd3d461fa495400df24be3b3b66f0e0b152f9"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Thu Sep 20 11:37:19 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:52:12 2007 -0700"
      },
      "message": "[TCP]: Avoid clearing sacktag hint in trivial situations\n\nThere\u0027s no reason to clear the sacktag skb hint when small part\nof the rexmit queue changes. Account changes (if any) instead when\nfragmenting/collapsing. RTO/FRTO do not touch SACKED_ACKED bits so\nno need to discard SACK tag hint at all.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5af4ec236f7c98f3671fb26731457a172d85e0e6",
      "tree": "04219129f5db8662c4a876e0f686e7a56fb4459c",
      "parents": [
        "91fed7a15c9222af29a653ecb0ee72cff178fdd8"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Thu Sep 20 11:30:48 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:52:09 2007 -0700"
      },
      "message": "[TCP]: clear_all_retrans_hints prefixed by tcp_\n\nIn addition, fix its function comment spacing.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\n"
    },
    {
      "commit": "6ff03ac355cc6c10f7b1f44dd466d41213acebca",
      "tree": "9057f7839df5bc65ea73148eee4148114f6f45c9",
      "parents": [
        "e9144bd8da80f3136b23c615609798e371e885ac"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Fri Aug 24 22:44:06 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:48:28 2007 -0700"
      },
      "message": "[TCP]: tcp_packets_out_inc to tcp_output.c (no callers elsewhere)\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e9144bd8da80f3136b23c615609798e371e885ac",
      "tree": "4ca84a95f2dd7f2e4d49bc8f1868bdfee3deea82",
      "parents": [
        "522400623e240ad134cb4101b1fddc3245d2a7ed"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Fri Aug 24 22:43:14 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:48:27 2007 -0700"
      },
      "message": "[TCP]: Remove unnecessary wrapper tcp_packets_out_dec\n\nMakes caller side more obvious, there\u0027s no need to have\na wrapper for this oneliner!\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e60402d0a909ca2e6e2fbdf9ed004ef0fae36d33",
      "tree": "b40a00b801cf44f81bebd7dadddb19c0086b145c",
      "parents": [
        "b9c4595bc4947faa236a849324fe3492e388d949"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Thu Aug 09 15:14:46 2007 +0300"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:48:00 2007 -0700"
      },
      "message": "[TCP]: Move sack_ok access to obviously named funcs \u0026 cleanup\n\nPreviously code had IsReno/IsFack defined as macros that were\nlocal to tcp_input.c though sack_ok field has user elsewhere too\nfor the same purpose. This changes them to static inlines as\npreferred according the current coding style and unifies the\naccess to sack_ok across multiple files. Magic bitops of sack_ok\nfor FACK and DSACK are also abstracted to functions with\nappropriate names.\n\nNote:\n- One sack_ok \u003d 1 remains but that\u0027s self explanary, i.e., it\n  enables sack\n- Couple of !IsReno cases are changed to tcp_is_sack\n- There were no users for IsDSack \u003d\u003e I dropped it\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b9c4595bc4947faa236a849324fe3492e388d949",
      "tree": "392994d87f7e64e695bb3dbb1b5472286b1deef2",
      "parents": [
        "1b6d427bb7eb69e6dc4f194a5b0f4a382a16ff82"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Fri Jul 27 16:36:17 2007 +0300"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:47:59 2007 -0700"
      },
      "message": "[TCP]: Don\u0027t panic if S+L skb is detected\n\nBUG_ON is an overkill. In fact, I was mislead by BUG_TRAP\nseverity (equals to WARN_ON) which is much lower than BUG_ON\u0027s\n(that panics).\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1b6d427bb7eb69e6dc4f194a5b0f4a382a16ff82",
      "tree": "d67f6ea9a5f581f83b4d8228fc2964c70f940d5a",
      "parents": [
        "d02596e32925edaeccee0af8eb6c229b5615de42"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Thu Aug 09 14:53:36 2007 +0300"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:47:58 2007 -0700"
      },
      "message": "[TCP]: Reduce sacked_out with reno when purging write_queue\n\nPreviously TCP had a transitional state during which reno\ncounted segments that are already below the current window into\nsacked_out, which is now prevented. In addition, re-try now\nthe unconditional S+L skb catching.\n\nThis approach conservatively calls just remove_sack and leaves\nreset_sack() calls alone. The best solution to the whole problem\nwould be to first calculate the new sacked_out fully (this patch\ndoes not move reno_sack_reset calls from original sites and thus\ndoes not implement this). However, that would require very\ninvasive change to fastretrans_alert (perhaps even slicing it to\ntwo halves). Alternatively, all callers of tcp_packets_in_flight\n(i.e., users that depend on sacked_out) should be postponed\nuntil the new sacked_out has been calculated but it isn\u0027t any\nsimpler alternative.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "005903bc3a0e8473fef809e8775db52dcd3cde63",
      "tree": "4fd945740a3615dbd5493fa0ded13f0352e21b2c",
      "parents": [
        "83ae40885f33e406c87c86b0bd4b6fd31a741f12"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Thu Aug 09 14:44:16 2007 +0300"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:47:57 2007 -0700"
      },
      "message": "[TCP]: Left out sync-\u003everify (the new meaning of it) \u0026 definify\n\nLeft_out was dropped a while ago, thus leaving verifying\nconsistency of the \"left out\" as only task for the function in\nquestion. Thus make it\u0027s name more appropriate.\n\nIn addition, it is intentionally converted to #define instead\nof static inline because the location of the invariant failure\nis the most important thing to have if this ever triggers. I\nthink it would have been helpful e.g. in this case where the\nlocation of the failure point had to be based on some quesswork:\n    http://lkml.org/lkml/2007/5/2/464\n...Luckily the guesswork seems to have proved to be correct.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "83ae40885f33e406c87c86b0bd4b6fd31a741f12",
      "tree": "659de08c231db85ec46f0c3bc1b86252a6561e21",
      "parents": [
        "b5860bbac7be1381626f3dc8a0cb970a60fcefb4"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Thu Aug 09 14:37:30 2007 +0300"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:47:56 2007 -0700"
      },
      "message": "[TCP]: Add tcp_left_out(tp) \"back\" to get cleaner looking lines\n\ntp-\u003eleft_out got removed but nothing came to replace it back\nthen (users just did addition by themselves), so add function\nfor users now.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b5860bbac7be1381626f3dc8a0cb970a60fcefb4",
      "tree": "53034429084f92fdb55c062498e1f4255be9bd4a",
      "parents": [
        "35e8694198ba94b62df8aa35fa6e52a1cfb86df2"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Thu Aug 09 14:33:18 2007 +0300"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:47:55 2007 -0700"
      },
      "message": "[TCP]: Tighten tcp_sock\u0027s belt, drop left_out\n\nIt is easily calculable when needed and user are not that many\nafter all.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "af610b4ca19f513a50d47ea93ed57241383c8081",
      "tree": "b7bc4e7f7969b10a2a8d3e3de7375f64df93dd4e",
      "parents": [
        "bdf1ee5d3bd38d0c44bd7baa74e07adcbe4ceab1"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Fri Jun 15 12:58:38 2007 +0300"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:47:54 2007 -0700"
      },
      "message": "[TCP]: Add tcp_dec_pcount_approx int variant\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "bdf1ee5d3bd38d0c44bd7baa74e07adcbe4ceab1",
      "tree": "c14e3433624e03b7db6a9f30142581342e848ad6",
      "parents": [
        "539d243fdd7900fa5a544c7c154dc3ddf627e840"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Sun May 27 02:04:16 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:47:54 2007 -0700"
      },
      "message": "[TCP]: Move code from tcp_ecn.h to tcp*.c and tcp.h \u0026 remove it\n\nNo other users exist for tcp_ecn.h. Very few things remain in\ntcp.h, for most TCP ECN functions callers reside within a\nsingle .c file and can be placed there.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f8ab18d2d987a59ccbf0495032b2aef05b730037",
      "tree": "7a24c79632c91e22235888875813950c6c30d929",
      "parents": [
        "e79ad711a0108475c1b3a03815527e7237020b08"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Fri Sep 28 15:18:35 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Fri Sep 28 15:18:35 2007 -0700"
      },
      "message": "[TCP]: Fix MD5 signature handling on big-endian.\n\nBased upon a report and initial patch by Peter Lieven.\n\ntcp4_md5sig_key and tcp6_md5sig_key need to start with\nthe exact same members as tcp_md5sig_key.  Because they\nare both cast to that type by tcp_v{4,6}_md5_do_lookup().\n\nUnfortunately tcp{4,6}_md5sig_key use a u16 for the key\nlength instead of a u8, which is what tcp_md5sig_key\nuses.  This just so happens to work by accident on\nlittle-endian, but on big-endian it doesn\u0027t.\n\nInstead of casting, just place tcp_md5sig_key as the first member of\nthe address-family specific structures, adjust the access sites, and\nkill off the ugly casts.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3516ffb0fef710749daf288c0fe146503e0cf9d4",
      "tree": "f3e3cd29dd541a457e61152560fe4416642a69bc",
      "parents": [
        "1bcabbdb0bdfe8b15b05150a7857646430aaa7f8"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Thu Aug 02 19:23:56 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Thu Aug 02 19:42:28 2007 -0700"
      },
      "message": "[TCP]: Invoke tcp_sendmsg() directly, do not use inet_sendmsg().\n\nAs discovered by Evegniy Polyakov, if we try to sendmsg after\na connection reset, we can do incredibly stupid things.\n\nThe core issue is that inet_sendmsg() tries to autobind the\nsocket, but we should never do that for TCP.  Instead we should\njust go straight into TCP\u0027s sendmsg() code which will do all\nof the necessary state and pending socket error checks.\n\nTCP\u0027s sendpage already directly vectors to tcp_sendpage(), so this\nmerely brings sendmsg() in line with that.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "30cfd0baf0a0c4329fff1ef4b622919297969ec8",
      "tree": "945a72f636ced1b443d894495704237e4cb7816d",
      "parents": [
        "6a302358d87fedaf7bda12b8e909265ebf1ce674"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@linux-foundation.org",
        "time": "Wed Jul 25 23:49:34 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Tue Jul 31 02:27:57 2007 -0700"
      },
      "message": "[TCP]: congestion control API pass RTT in microseconds\n\nThis patch changes the API for the callback that is done after an ACK is\nreceived. It solves a couple of issues:\n\n  * Some congestion controls want higher resolution value of RTT\n    (controlled by TCP_CONG_RTT_SAMPLE flag). These don\u0027t really want a ktime, but\n    all compute a RTT in microseconds.\n\n  * Other congestion control could use RTT at jiffies resolution.\n\nTo keep API consistent the units should be the same for both cases, just the\nresolution should change.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@linux-foundation.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "16751347a060a10c09b11593bb179fd5b0240c04",
      "tree": "40399ba217d9e4c45060c4d12334c53f931ca635",
      "parents": [
        "44beac008631d1b8a52f103e04eacba2bda81511"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@linux-foundation.org",
        "time": "Mon Jul 16 18:35:52 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Jul 18 01:46:58 2007 -0700"
      },
      "message": "[TCP]: remove unused argument to cong_avoid op\n\nNone of the existing TCP congestion controls use the rtt value pased\nin the ca_ops-\u003econg_avoid interface.  Which is lucky because seq_rtt\ncould have been -1 when handling a duplicate ack.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@linux-foundation.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e4fd5da39f99d5921dda1fe3d93652fbd925fbfd",
      "tree": "595967b745720653cdc0f7c9e5d61c5433ea143e",
      "parents": [
        "4e07a91c37c69ec1647c218214591ee4fe3408fe"
      ],
      "author": {
        "name": "Pavel Emelianov",
        "email": "xemul@openvz.org",
        "time": "Tue May 29 13:19:18 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Thu May 31 01:23:34 2007 -0700"
      },
      "message": "[TCP]: Consolidate checking for tcp orphan count being too big.\n\ntcp_out_of_resources() and tcp_close() perform the\nsame checking of number of orphan sockets. Move this\ncode into common place.\n\nSigned-off-by: Pavel Emelianov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0ec96822d5c0df77107c03b8d9a81a436ab707fc",
      "tree": "0e17c856f1d1317741fa340b631b88abbc8f6ccf",
      "parents": [
        "ec9c948546a84d0dcee851be1009a8066958e69d"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Thu May 03 03:30:34 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu May 03 03:30:34 2007 -0700"
      },
      "message": "[TCP]: Use S+L catcher only with SACK for now\n\nTCP has a transitional state when SACK is not in use during\nwhich this invariant is temporarily broken. Without SACK,\ntcp_clean_rtx_queue does not decrement sacked_out. Therefore\ncalls to tcp_sync_left_out before sacked_out is again\ncorrected by tcp_fastretrans_alert can trigger this trap as\nsacked_out still has couple of segments that are already out\nof window.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d551e4541dd60ae53459f77a971f2d6043431f5f",
      "tree": "cb328b1ec7ae32ad054c9d08de0274e4056a868f",
      "parents": [
        "575ee7140dabe9b9c4f66f4f867039b97e548867"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Mon Apr 30 00:42:20 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Mon Apr 30 00:58:16 2007 -0700"
      },
      "message": "[TCP] FRTO: RFC4138 allows Nagle override when new data must be sent\n\nThis is a corner case where less than MSS sized new data thingie\nis awaiting in the send queue. For F-RTO to work correctly, a\nnew data segment must be sent at certain point or F-RTO cannot\nbe used at all. RFC4138 allows overriding of Nagle at that\npoint.\n\nImplementation uses frto_counter states 2 and 3 to distinguish\nwhen Nagle override is needed.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "34588b4c046c34773e5a1a962da7b78b05c4d1bd",
      "tree": "d655bed4dfd053b4d2a30f647857300694d44c93",
      "parents": [
        "6aaf47fa48d3c44280810b1b470261d340e4ed87"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Mon Apr 30 00:57:33 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Apr 30 00:57:33 2007 -0700"
      },
      "message": "[TCP]: Catch skb with S+L bugs earlier\n\nSACKED_ACKED and LOST are mutually exclusive with SACK, thus\nhaving their sum larger than packets_out is bug with SACK.\nEventually these bugs trigger traps in the tcp_clean_rtx_queue\nwith SACK but it\u0027s much more informative to do this here.\n\nNon-SACK TCP, however, could get more than packets_out duplicate\nACKs which each increment sacked_out, so it makes sense to do\nthis kind of limitting for non-SACK TCP but not for SACK enabled\none. Perhaps the author had the opposite in mind but did the\nlogic accidently wrong way around? Anyway, the sacked_out\nincrementer code for non-SACK already deals this issue before\ncalling sync_left_out so this trapping can be done\nunconditionally.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "164891aadf1721fca4dce473bb0e0998181537c6",
      "tree": "991393ec7306da475cb306fcc7cb084f737ebadc",
      "parents": [
        "65d1b4a7e73fe0e1f5275ad7d2d3547981480886"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@linux-foundation.org",
        "time": "Mon Apr 23 22:26:16 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Apr 25 22:29:45 2007 -0700"
      },
      "message": "[TCP]: Congestion control API update.\n\nDo some simple changes to make congestion control API faster/cleaner.\n* use ktime_t rather than timeval\n* merge rtt sampling into existing ack callback\n  this means one indirect call versus two per ack.\n* use flags bits to store options/settings\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@linux-foundation.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9e412ba7632f71259a53085665d4983b78257b7c",
      "tree": "b02d6df7e5357a741bf6d52a93e04a52b84f1f90",
      "parents": [
        "38b4da383705394788aa09208917ba200792de4b"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Fri Apr 20 22:18:02 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Apr 25 22:29:34 2007 -0700"
      },
      "message": "[TCP]: Sed magic converts func(sk, tp, ...) -\u003e func(sk, ...)\n\nThis is (mostly) automated change using magic:\n\nsed -e \u0027/struct sock \\*sk/ N\u0027 -e \u0027/struct sock \\*sk/ N\u0027\n    -e \u0027/struct sock \\*sk/ N\u0027 -e \u0027/struct sock \\*sk/ N\u0027\n    -e \u0027s|struct sock \\*sk,[\\n\\t ]*struct tcp_sock \\*tp\\([^{]*\\n{\\n\\)|\n\t  struct sock \\*sk\\1\\tstruct tcp_sock *tp \u003d tcp_sk(sk);\\n|g\u0027\n    -e \u0027s|struct sock \\*sk, struct tcp_sock \\*tp|\n\t  struct sock \\*sk|g\u0027 -e \u0027s|sk, tp\\([^-]\\)|sk\\1|g\u0027\n\nFixed four unused variable (tp) warnings that were introduced.\n\nIn addition, manually added newlines after local variables and\ntweaked function arguments positioning.\n\n$ gcc --version\ngcc (GCC) 4.1.1 20060525 (Red Hat 4.1.1-1)\n...\n$ codiff -fV built-in.o.old built-in.o.new\nnet/ipv4/route.c:\n  rt_cache_flush |  +14\n 1 function changed, 14 bytes added\n\nnet/ipv4/tcp.c:\n  tcp_setsockopt |   -5\n  tcp_sendpage   |  -25\n  tcp_sendmsg    |  -16\n 3 functions changed, 46 bytes removed\n\nnet/ipv4/tcp_input.c:\n  tcp_try_undo_recovery |   +3\n  tcp_try_undo_dsack    |   +2\n  tcp_mark_head_lost    |  -12\n  tcp_ack               |  -15\n  tcp_event_data_recv   |  -32\n  tcp_rcv_state_process |  -10\n  tcp_rcv_established   |   +1\n 7 functions changed, 6 bytes added, 69 bytes removed, diff: -63\n\nnet/ipv4/tcp_output.c:\n  update_send_head          |   -9\n  tcp_transmit_skb          |  +19\n  tcp_cwnd_validate         |   +1\n  tcp_write_wakeup          |  -17\n  __tcp_push_pending_frames |  -25\n  tcp_push_one              |   -8\n  tcp_send_fin              |   -4\n 7 functions changed, 20 bytes added, 63 bytes removed, diff: -43\n\nbuilt-in.o.new:\n 18 functions changed, 40 bytes added, 178 bytes removed, diff: -138\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4ac02bab77438b484a5cf855a002fb6a1d592894",
      "tree": "8a7442a9c9fa39e147eca0f0728a0691712b191a",
      "parents": [
        "3ff50b7997fe06cd5d276b229967bb52d6b3b6c1"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Fri Apr 20 17:11:46 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Apr 25 22:29:25 2007 -0700"
      },
      "message": "[TCP]: Uninline tcp_done().\n\nThe function is quite big and has several call sites and nothing\nto collapse by compiler optimization on inlining.\n\nBesides it\u0027s nicer to read in a in .c file.\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "604763722c655c7e3f31ecf6f7b4dafcd26a7a15",
      "tree": "a5c07f0e22ac86e7ca7a8c80bd3f111116610edd",
      "parents": [
        "628592ccdbbb5bb751217cf02e2e7abb500d7ffe"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Mon Apr 09 11:59:39 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Apr 25 22:28:43 2007 -0700"
      },
      "message": "[NET]: Treat CHECKSUM_PARTIAL as CHECKSUM_UNNECESSARY\n\nWhen a transmitted packet is looped back directly, CHECKSUM_PARTIAL\nmaps to the semantics of CHECKSUM_UNNECESSARY.  Therefore we should\ntreat it as such in the stack.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "aa8223c7bb0b05183e1737881ed21827aa5b9e73",
      "tree": "05c9832326edfeb878472f15cf8133ed9f014cdf",
      "parents": [
        "ab6a5bb6b28a970104a34f0f6959b73cf61bdc72"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Tue Apr 10 21:04:22 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Apr 25 22:25:26 2007 -0700"
      },
      "message": "[SK_BUFF]: Introduce tcp_hdr(), remove skb-\u003eh.th\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "fe067e8ab5e0dc5ca3c54634924c628da92090b4",
      "tree": "98f5a6ebbb770f16682cfc52caea2da1e7eeb73b",
      "parents": [
        "02ea4923b4997d7e1310c027081f46d584b9d714"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Mar 07 12:12:44 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Apr 25 22:24:02 2007 -0700"
      },
      "message": "[TCP]: Abstract out all write queue operations.\n\nThis allows the write queue implementation to be changed,\nfor example, to one which allows fast interval searching.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9d729f72dca9406025bcfa9c1f660d71d9ef0ff5",
      "tree": "69a3ca50c6e266853676a545a113f13f254ae535",
      "parents": [
        "39df232f1a9ba48d41c68ee7d4046756e709cf91"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Sun Mar 04 16:12:44 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Apr 25 22:23:32 2007 -0700"
      },
      "message": "[NET]: Convert xtime.tv_sec to get_seconds()\n\nWhere appropriate, convert references to xtime.tv_sec to the\nget_seconds() helper function.\n\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3cfe3baaf07c9e40a75f9a70662de56df1c246a8",
      "tree": "989b2aff491b5df3aa0215f611a8c7f1360c67e9",
      "parents": [
        "c5e7af0df5d7234afd8596560d9f570cfc6c18bf"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Tue Feb 27 10:09:49 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Apr 25 22:23:23 2007 -0700"
      },
      "message": "[TCP]: Add two new spurious RTO responses to FRTO\n\nNew sysctl tcp_frto_response is added to select amongst these\nresponses:\n\t- Rate halving based; reuses CA_CWR state (default)\n\t- Very conservative; used to be the only one available (\u003d1)\n\t- Undo cwr; undoes ssthresh and cwnd reductions (\u003d2)\n\nThe response with rate halving requires a new parameter to\ntcp_enter_cwr because FRTO has already reduced ssthresh and\ndoing a second reduction there has to be prevented. In addition,\nto keep things nice on 80 cols screen, a local variable was\nadded.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "886236c1247ab5e2ad9c73f6e9a652e3ae3c8b07",
      "tree": "f0ab2d6f6b6c98c6042be100db752c2d492669ae",
      "parents": [
        "5ef814753eb810d900fbd77af7c87f6d04f0e551"
      ],
      "author": {
        "name": "John Heffner",
        "email": "jheffner@psc.edu",
        "time": "Sun Mar 25 19:21:45 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Apr 25 22:23:19 2007 -0700"
      },
      "message": "[TCP]: Add RFC3742 Limited Slow-Start, controlled by variable sysctl_tcp_max_ssthresh.\n\nSigned-off-by: John Heffner \u003cjheffner@psc.edu\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "46d0de4ed92650b95f27acae09914996bbe624e7",
      "tree": "455e6a9772294ef16a88800709685797e1779b75",
      "parents": [
        "7c9a4a5b67926dd186d427bc5b9fce6ccbde154c"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Wed Feb 21 23:10:39 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Apr 25 22:23:12 2007 -0700"
      },
      "message": "[TCP] FRTO: Entry is allowed only during (New)Reno like recovery\n\nThis interpretation comes from RFC4138:\n    \"If the sender implements some loss recovery algorithm other\n     than Reno or NewReno [FHG04], the F-RTO algorithm SHOULD\n     NOT be entered when earlier fast recovery is underway.\"\n\nI think the RFC means to say (especially in the light of\nAppendix B) that ...recovery is underway (not just fast recovery)\nor was underway when it was interrupted by an earlier (F-)RTO\nthat hasn\u0027t yet been resolved (snd_una has not advanced enough).\nThus, my interpretation is that whenever TCP has ever\nretransmitted other than head, basic version cannot be used\nbecause then the order assumptions which are used as FRTO basis\ndo not hold.\n\nNewReno has only the head segment retransmitted at a time.\nTherefore, walk up to the segment that has not been SACKed, if\nthat segment is not retransmitted nor anything before it, we know\nfor sure, that nothing after the non-SACKed segment should be\neither. This assumption is valid because TCPCB_EVER_RETRANS does\nnot leave holes but each non-SACKed segment is rexmitted\nin-order.\n\nCheck for retrans_out \u003e 1 avoids more expensive walk through the\nskb list, as we can know the result beforehand: F-RTO will not be\nallowed.\n\nSACKed skb can turn into non-SACked only in the extremely rare\ncase of SACK reneging, in this case we might fail to detect\nretransmissions if there were them for any other than head. To\nget rid of that feature, whole rexmit queue would have to be\nwalked (always) or FRTO should be prevented when SACK reneging\nhappens. Of course RTO should still trigger after reneging which\nmakes this issue even less likely to show up. And as long as the\nresponse is as conservative as it\u0027s now, nothing bad happens even\nthen.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "bdaae17da81db79b9aa4dfbf43305cfeef64f6a8",
      "tree": "5dce126ae84073646c15417c30bd1b6b13660784",
      "parents": [
        "9ead9a1d385ae2c52a6dcf2828d84ce66be04fc2"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Wed Feb 21 22:59:58 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Apr 25 22:23:02 2007 -0700"
      },
      "message": "[TCP] FRTO: Moved tcp_use_frto from tcp.h to tcp_input.c\n\nIn addition, removed inline.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ba7808eac17360dda459f82222859b0e3879854b",
      "tree": "b9774fb03694e7e019d57c6f0b306cdd1232d4d2",
      "parents": [
        "a0d78ebf3a0e33a1aeacf2fc518ad9273d6a1c2f"
      ],
      "author": {
        "name": "Frederik Deweerdt",
        "email": "frederik.deweerdt@gmail.com",
        "time": "Sun Feb 04 20:15:27 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Thu Feb 08 12:38:44 2007 -0800"
      },
      "message": "[TCP]: remove tcp header from tcp_v4_check (take #2)\n\nThe tcphdr struct passed to tcp_v4_check is not used, the following\npatch removes it from the parameter list.\n\nThis adds the netfilter modifications missing in the patch I sent\nfor rc3-mm1.\n\nSigned-off-by: Frederik Deweerdt \u003cfrederik.deweerdt@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    }
  ],
  "next": "0d630cc0a6cb8ad544b5913a26ff1349ed7c8587"
}
