)]}'
{
  "log": [
    {
      "commit": "435cf559f02ea3a3159eb316f97dc88bdebe9432",
      "tree": "0b2a7e9110c46b193176b0a59fe5689eae7c18f3",
      "parents": [
        "519855c508b9a17878c0977a3cdefc09b59b30df"
      ],
      "author": {
        "name": "William Allen Simpson",
        "email": "william.allen.simpson@gmail.com",
        "time": "Wed Dec 02 18:17:05 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Dec 02 22:07:25 2009 -0800"
      },
      "message": "TCPCT part 1d: define TCP cookie option, extend existing struct\u0027s\n\nData structures are carefully composed to require minimal additions.\nFor example, the struct tcp_options_received cookie_plus variable fits\nbetween existing 16-bit and 8-bit variables, requiring no additional\nspace (taking alignment into consideration).  There are no additions to\ntcp_request_sock, and only 1 pointer in tcp_sock.\n\nThis is a significantly revised implementation of an earlier (year-old)\npatch that no longer applies cleanly, with permission of the original\nauthor (Adam Langley):\n\n    http://thread.gmane.org/gmane.linux.network/102586\n\nThe principle difference is using a TCP option to carry the cookie nonce,\ninstead of a user configured offset in the data.  This is more flexible and\nless subject to user configuration error.  Such a cookie option has been\nsuggested for many years, and is also useful without SYN data, allowing\nseveral related concepts to use the same extension option.\n\n    \"Re: SYN floods (was: does history repeat itself?)\", September 9, 1996.\n    http://www.merit.net/mail.archives/nanog/1996-09/msg00235.html\n\n    \"Re: what a new TCP header might look like\", May 12, 1998.\n    ftp://ftp.isi.edu/end2end/end2end-interest-1998.mail\n\nThese functions will also be used in subsequent patches that implement\nadditional features.\n\nRequires:\n   TCPCT part 1a: add request_values parameter for sending SYNACK\n   TCPCT part 1b: generate Responder Cookie secret\n   TCPCT part 1c: sysctl_tcp_cookie_size, socket option TCP_COOKIE_TRANSACTIONS\n\nSigned-off-by: William.Allen.Simpson@gmail.com\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "519855c508b9a17878c0977a3cdefc09b59b30df",
      "tree": "df6840c5c1560a84cb777b1855ec22c90c3df8d9",
      "parents": [
        "da5c78c82629a167794436e4306b4cf1faddea90"
      ],
      "author": {
        "name": "William Allen Simpson",
        "email": "william.allen.simpson@gmail.com",
        "time": "Wed Dec 02 18:14:19 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Dec 02 22:07:24 2009 -0800"
      },
      "message": "TCPCT part 1c: sysctl_tcp_cookie_size, socket option TCP_COOKIE_TRANSACTIONS\n\nDefine sysctl (tcp_cookie_size) to turn on and off the cookie option\ndefault globally, instead of a compiled configuration option.\n\nDefine per socket option (TCP_COOKIE_TRANSACTIONS) for setting constant\ndata values, retrieving variable cookie values, and other facilities.\n\nMove inline tcp_clear_options() unchanged from net/tcp.h to linux/tcp.h,\nnear its corresponding struct tcp_options_received (prior to changes).\n\nThis is a straightforward re-implementation of an earlier (year-old)\npatch that no longer applies cleanly, with permission of the original\nauthor (Adam Langley):\n\n    http://thread.gmane.org/gmane.linux.network/102586\n\nThese functions will also be used in subsequent patches that implement\nadditional features.\n\nRequires:\n   net: TCP_MSS_DEFAULT, TCP_MSS_DESIRED\n\nSigned-off-by: William.Allen.Simpson@gmail.com\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "bee7ca9ec03a26676ea2b1c28dc4039348eff3e1",
      "tree": "652832d73252d7c9ede928a4242763f570070b0e",
      "parents": [
        "cbbef5e183079455763fc470ccf69008f92ab4b6"
      ],
      "author": {
        "name": "William Allen Simpson",
        "email": "william.allen.simpson@gmail.com",
        "time": "Tue Nov 10 09:51:18 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Nov 13 20:38:48 2009 -0800"
      },
      "message": "net: TCP_MSS_DEFAULT, TCP_MSS_DESIRED\n\nDefine two symbols needed in both kernel and user space.\n\nRemove old (somewhat incorrect) kernel variant that wasn\u0027t used in\nmost cases.  Default should apply to both RMSS and SMSS (RFC2581).\n\nReplace numeric constants with defined symbols.\n\nStand-alone patch, originally developed for TCPCT.\n\nSigned-off-by: William.Allen.Simpson@gmail.com\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d94d9fee9fa4e66a0b91640a694b8b10177075b3",
      "tree": "330b2b19e63c92f1fef3d9dbe0733ddeb0109664",
      "parents": [
        "b8883a65be2d925ea82b14ca0068ce9a6c8bac1f"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Nov 04 09:50:58 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 04 09:50:58 2009 -0800"
      },
      "message": "net: cleanup include/linux\n\nThis cleanup patch puts struct/union/enum opening braces,\nin first line to ease grep games.\n\nstruct something\n{\n\nbecomes :\n\nstruct something {\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b2e4b3debc327a5b53d9622e0b1785eea2ea2aad",
      "tree": "641e35a5d3b24d3d780259243173cf5b63bb9afd",
      "parents": [
        "98147d527a038c4aab599e57323a4e5d727c28a6"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Tue Sep 01 19:25:03 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 02 01:03:43 2009 -0700"
      },
      "message": "tcp: MD5 operations should be const\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a0f82f64e26929776c58a5c93c2ecb38e3d82815",
      "tree": "8c39812fc6fc8133cc28944e38b44c941d8fa3ce",
      "parents": [
        "7eebb0b28f755e297d355a205bb04945b256db6b"
      ],
      "author": {
        "name": "Florian Westphal",
        "email": "fw@strlen.de",
        "time": "Sun Apr 19 09:43:48 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Apr 20 02:25:26 2009 -0700"
      },
      "message": "syncookies: remove last_synq_overflow from struct tcp_sock\n\nlast_synq_overflow eats 4 or 8 bytes in struct tcp_sock, even\nthough it is only used when a listening sockets syn queue\nis full.\n\nWe can (ab)use rx_opt.ts_recent_stamp to store the same information;\nit is not used otherwise as long as a socket is in listen state.\n\nMove linger2 around to avoid splitting struct mtu_probe\nacross cacheline boundary on 32 bit arches.\n\nSigned-off-by: Florian Westphal \u003cfw@strlen.de\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2a3a041c4e2c1685e668b280c121a5a40a029a03",
      "tree": "dab327c0cbebec79968c3c2207d064a9152857f0",
      "parents": [
        "0c54b85f2828128274f319a1eb3ce7f604fe2a53"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Sat Mar 14 22:45:16 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Mar 15 20:09:55 2009 -0700"
      },
      "message": "tcp: cache result of earlier divides when mss-aligning things\n\nThe results is very unlikely change every so often so we\nhardly need to divide again after doing that once for a\nconnection. Yet, if divide still becomes necessary we\ndetect that and do the right thing and again settle for\nnon-divide state. Takes the u16 space which was previously\ntaken by the plain xmit_size_goal.\n\nThis should take care part of the tso vs non-tso difference\nwe found earlier.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0c54b85f2828128274f319a1eb3ce7f604fe2a53",
      "tree": "8ff84b9aa9cd4775f244c2421e11adfbd206a7bf",
      "parents": [
        "72211e90501f954f586481c25521c3724cda3cc7"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Sat Mar 14 14:23:05 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Mar 15 20:09:54 2009 -0700"
      },
      "message": "tcp: simplify tcp_current_mss\n\nThere\u0027s very little need for most of the callsites to get\ntp-\u003exmit_goal_size updated. That will cost us divide as is,\nso slice the function in two. Also, the only users of the\ntp-\u003exmit_goal_size are directly behind tcp_current_mss(),\nso there\u0027s no need to store that variable into tcp_sock\nat all! The drop of xmit_goal_size currently leaves 16-bit\nhole and some reorganization would again be necessary to\nchange that (but I\u0027m aiming to fill that hole with u16\nxmit_goal_size_segs to cache the results of the remaining\ndivide to get that tso on regression).\n\nBring xmit_goal_size parts into tcp.c\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nCc: Evgeniy Polyakov \u003czbr@ioremap.net\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "cabeccbd172cc305f4383f5a4808ae254745275f",
      "tree": "0504d469ae4fc1a6c1ba368b3cc99ae7f55520cb",
      "parents": [
        "758ce5c8d11d6fc57fe5f1dbc237aa8ff6386eac"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Sat Feb 28 04:44:38 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Mar 02 03:00:16 2009 -0800"
      },
      "message": "tcp: kill eff_sacks \"cache\", the sole user can calculate itself\n\nAlso fixes insignificant bug that would cause sending of stale\nSACK block (would occur in some corner cases).\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f3a7c66b5ce0b75a9774a50b5dcce93e5ba28370",
      "tree": "441f02ac10cb109cbb80fbd0d964af3638541f06",
      "parents": [
        "35c26c2cf6a6a2d1c48add732d8ba002bd90784c"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Sat Feb 14 22:58:35 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Feb 14 22:58:35 2009 -0800"
      },
      "message": "net: replace __constant_{endian} uses in net headers\n\nBase versions handle constant folding now.  For headers exposed to\nuserspace, we must only expose the __ prefixed versions.\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "33f5f57eeb0c6386fdd85f9c690dc8d700ba7928",
      "tree": "4bd3421bfa3088018f8e355e6f47e43599748802",
      "parents": [
        "654bed16cf86a9ef94495d9e6131b7ff7840a3dd"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Tue Oct 07 14:43:06 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 07 14:43:06 2008 -0700"
      },
      "message": "tcp: kill pointless urg_mode\n\nIt all started from me noticing that this urgent check in\ntcp_clean_rtx_queue is unnecessarily inside the loop. Then\nI took a longer look to it and found out that the users of\nurg_mode can trivially do without, well almost, there was\none gotcha.\n\nBonus: those funny people who use urg with \u003e\u003d 2^31 write_seq -\nsnd_una could now rejoice too (that\u0027s the only purpose for the\nbetween being there, otherwise a simple compare would have done\nthe thing). Not that I assume that the rest of the tcp code\nhappily lives with such mind-boggling numbers :-). Alas, it\nturned out to be impossible to set wmem to such numbers anyway,\nyes I really tried a big sendfile after setting some wmem but\nnothing happened :-). ...Tcp_wmem is int and so is sk_sndbuf...\nSo I hacked a bit variable to long and found out that it seems\nto 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": "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": "4389dded7767d24290463f2a8302ba3253ebdd56",
      "tree": "ed34a2084c47c6c707e0ce6b4eab8d442f20c4c3",
      "parents": [
        "33ad798c924b4a1afad3593f2796d465040aadd5"
      ],
      "author": {
        "name": "Adam Langley",
        "email": "agl@imperialviolet.org",
        "time": "Sat Jul 19 00:07:02 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jul 19 00:07:02 2008 -0700"
      },
      "message": "tcp: Remove redundant checks when setting eff_sacks\n\nRemove redundant checks when setting eff_sacks and make the number of SACKs a\ncompile time constant. Now that the options code knows how many SACK blocks can\nfit in the header, we don\u0027t need to have the SACK code guessing at it.\n\nSigned-off-by: Adam Langley \u003cagl@imperialviolet.org\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": "b79eeeb9e48457579cb742cd02e162fcd673c4a3",
      "tree": "e804011ae95b5f21eb01732e4b0d768691cfd89d",
      "parents": [
        "75a9cd524c6bb441c61c85bae7020ce5e8b2e807"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Thu May 29 03:25:23 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu May 29 03:25:23 2008 -0700"
      },
      "message": "tcp: Reorganize tcp_sock to fill 64-bit holes \u0026 improve locality\n\nI tried to group recovery related fields nearby (non-CA_Open related\nvariables, to be more accurate) so that one to three cachelines would\nnot be necessary in CA_Open. These are now contiguously deployed:\n\n  struct sk_buff_head        out_of_order_queue;   /*  1968    80 */\n  /* --- cacheline 32 boundary (2048 bytes) --- */\n  struct tcp_sack_block      duplicate_sack[1];    /*  2048     8 */\n  struct tcp_sack_block      selective_acks[4];    /*  2056    32 */\n  struct tcp_sack_block      recv_sack_cache[4];   /*  2088    32 */\n  /* --- cacheline 33 boundary (2112 bytes) was 8 bytes ago --- */\n  struct sk_buff *           highest_sack;         /*  2120     8 */\n  int                        lost_cnt_hint;        /*  2128     4 */\n  int                        retransmit_cnt_hint;  /*  2132     4 */\n  u32                        lost_retrans_low;     /*  2136     4 */\n  u8                         reordering;           /*  2140     1 */\n  u8                         keepalive_probes;     /*  2141     1 */\n\n  /* XXX 2 bytes hole, try to pack */\n\n  u32                        prior_ssthresh;       /*  2144     4 */\n  u32                        high_seq;             /*  2148     4 */\n  u32                        retrans_stamp;        /*  2152     4 */\n  u32                        undo_marker;          /*  2156     4 */\n  int                        undo_retrans;         /*  2160     4 */\n  u32                        total_retrans;        /*  2164     4 */\n\n...and they\u0027re then followed by URG slowpath \u0026 keepalive related\nvariables.\n\nHead of the out_of_order_queue always needed for empty checks, if\nthat\u0027s empty (and TCP is in CA_Open), following ~200 bytes (in 64-bit)\nshouldn\u0027t be necessary for anything. If only OFO queue exists but TCP\nis in CA_Open, selective_acks (and possibly duplicate_sack) are\nnecessary besides the out_of_order_queue but the rest of the block\nagain shouldn\u0027t be (ie., the other direction had losses).\n\nAs the cacheline boundaries depend on many factors in the preceeding\nstuff, trying to align considering them doesn\u0027t make too much sense.\n\nCommented one ordering hazard.\n\nThere are number of low utilized u8/16s that could be combined get 2\nbytes less in total so that the hole could be made to vanish (includes\nat least ecn_flags, urg_data, urg_mode, frto_counter, nonagle).\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nAcked-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4b749440445ebcb6fad402fc762bc35af871f689",
      "tree": "c475a7740ae61ec2916e381df836f1f1c7d76a58",
      "parents": [
        "88860c9ef45963eb69411b0d2ace4e8ba0f7a32f"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Wed May 21 17:40:05 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed May 21 17:40:05 2008 -0700"
      },
      "message": "tcp: Make prior_ssthresh a u32\n\nIf previous window was above representable values of u16,\nstrange things will happen if undo with the truncated value\nis called for. Alternatively, this could be fixed by some\nmax trickery but that would limit undoing high-speed undos.\n\nAdds 16-bit hole but there isn\u0027t anything to fill it with.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\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": "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": "fd6dad616d4fe2f08d690f25ca76b0102158fb3a",
      "tree": "1f6955b224b910172411d58e999743b470ec93b4",
      "parents": [
        "9e10c47cb9fe3154416787523f7a0df02133063f"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Thu Nov 15 19:49:47 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:54:07 2008 -0800"
      },
      "message": "[TCP]: Earlier SACK block verification \u0026 simplify access to them\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": "f78a1b389288d8327db5a0f4526935b0da1d0967",
      "tree": "7f67b2603e79d40250b83e80abf2a81dc76f18c0",
      "parents": [
        "d603d0ab863245050025a79a1f14ff84f2222f09"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Mon Oct 15 12:59:43 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Oct 15 12:59:43 2007 -0700"
      },
      "message": "[TCP]: Make snd_cwnd_cnt 32-bit\n\nVery little point of having 32-bit snd_cnwd if this is not\n32-bit as well, as a number of snd_cwnd incrementation formulas\nassume that snd_cwnd_cnt can be at least as large as snd_cwnd.\n\nWhether 32-bit is useful was discussed when e0ef57cc56c3c96\nwas made:\n  http://marc.info/?l\u003dlinux-netdev\u0026m\u003d117218144409825\u0026w\u003d2\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b08d6cb22c777c8c91c16d8e3b8aafc93c98cbd9",
      "tree": "139b1f2636c42698bd7b0f0ccd61f0e1b8a826ab",
      "parents": [
        "f785a8e28b9d103c7473655743b6ac1bc3cd3a58"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Thu Oct 11 17:36:13 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 11 17:36:13 2007 -0700"
      },
      "message": "[TCP]: Limit processing lost_retrans loop to work-to-do cases\n\nThis addition of lost_retrans_low to tcp_sock might be\nunnecessary, it\u0027s not clear how often lost_retrans worker is\nexecuted when there wasn\u0027t work to do.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c79e3357166a2ca39fd7613b0eb7f493c1ac5e11",
      "tree": "26f55cf53505dd7f52aa35977f1138e9d852cc6e",
      "parents": [
        "29d0a309d11bac9e57af914d0d6a35cde0080861"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Sun Oct 07 23:37:25 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:54:47 2007 -0700"
      },
      "message": "[TCP]: Comment fastpath_cnt_hint off-by-one trap\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "13dae426318aae073028a4b3bd493104a991e800",
      "tree": "29c2265378c70c9d771c8127d960455e8d64dc27",
      "parents": [
        "e60402d0a909ca2e6e2fbdf9ed004ef0fae36d33"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Fri Aug 10 14:31:21 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:48:00 2007 -0700"
      },
      "message": "[TCP]: Update comment about highest_sack validity\n\nThis stale info came from the original idea, which proved to be\nunnecessarily complex, sacked_out \u003e 0 is easy to do and that when\nit\u0027s going to be needed anyway (it _can_ be valid also when\nsacked_out \u003d\u003d 0 but there\u0027s not going to be a guarantee about it\nfor 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": "539d243fdd7900fa5a544c7c154dc3ddf627e840",
      "tree": "68972054f318d614692bdfe76d6d920ae2698a21",
      "parents": [
        "9bff40fda015c4d0b57b444626cdcbf66066dbe7"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Sun May 27 02:03:20 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:47:53 2007 -0700"
      },
      "message": "[TCP]: Access to highest_sack obsoletes forward_cnt_hint\n\nIn addition, added a reference about the purpose of the loop.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d738cd8fca948e45d53120247cb7a5f5be3ca09e",
      "tree": "b2136bcfa2802a21b41de72eb4f6dc338a0bd321",
      "parents": [
        "d961db358f41033a8fc7b62948bc7cff1b4bb1fe"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Sat Mar 24 21:03:23 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:47:50 2007 -0700"
      },
      "message": "[TCP]: Add highest_sack seqno, points to globally highest SACK\n\nIt is guaranteed to be valid only when !tp-\u003esacked_out. In most\ncases this seqno is available in the last ACK but there is no\nguarantee for that. The new fast recovery loss marking algorithm\nneeds this as entry point.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9c70220b73908f64792422a2c39c593c4792f2c5",
      "tree": "2090ea10aaa2714a5e095bae8cc02e743c378a3a",
      "parents": [
        "a27ef749e7be3b06fb58df53d94eb97a21f18707"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Wed Apr 25 18:04:18 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Apr 25 22:25:31 2007 -0700"
      },
      "message": "[SK_BUFF]: Introduce skb_transport_header(skb)\n\nFor the places where we need a pointer to the transport header, it is\nstill legal to touch skb-\u003eh.raw directly if just adding to,\nsubtracting from or setting it to another layer header.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\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": "ab6a5bb6b28a970104a34f0f6959b73cf61bdc72",
      "tree": "54cfa7d4fe00d0c28a60022b075afc0856d6fc2b",
      "parents": [
        "88c7664f13bd1a36acb8566b93892a4c58759ac6"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Sun Mar 18 17:43:48 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Apr 25 22:25:24 2007 -0700"
      },
      "message": "[TCP]: Introduce tcp_hdrlen() and tcp_optlen()\n\nThe ip_hdrlen() buddy, created to reduce the number of skb-\u003eh.th-\u003e uses and to\navoid the longer, open coded equivalent.\n\nDitched a no-op in bnx2 in the process.\n\nI wonder if we should have a BUG_ON(skb-\u003eh.th-\u003edoff \u003c 5) in tcp_optlen()...\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e0ef57cc56c3c96493f9b0d6c77bb9608eeaa173",
      "tree": "df6c7b65456507354b35b7b318332a3c8d11f98e",
      "parents": [
        "54287cc178cf85dbae0decec8b4dc190bff757ad"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Thu Feb 22 22:52:59 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Apr 25 22:23:21 2007 -0700"
      },
      "message": "[TCP]: Make snd_cwnd_clamp a u32.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "54287cc178cf85dbae0decec8b4dc190bff757ad",
      "tree": "44dedf7be5ac37fae65718d359ff598902247753",
      "parents": [
        "cf4c6bf83d0fa070f60b1ba8124dfe0e65fbfbcc"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Thu Feb 22 03:20:44 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Apr 25 22:23:21 2007 -0700"
      },
      "message": "[TCP]: Keep copied_seq, rcv_wup and rcv_next together.\n\nI noticed in oprofile study a cache miss in tcp_rcv_established() to read\ncopied_seq.\n\nffffffff80400a80 \u003ctcp_rcv_established\u003e: /* tcp_rcv_established total: 4034293  \n2.0400 */\n\n 55493  0.0281 :ffffffff80400bc9:   mov    0x4c8(%r12),%eax copied_seq\n543103  0.2746 :ffffffff80400bd1:   cmp    0x3e0(%r12),%eax   rcv_nxt    \n\nif (tp-\u003ecopied_seq \u003d\u003d tp-\u003ercv_nxt \u0026\u0026\n        len - tcp_header_len \u003c\u003d tp-\u003eucopy.len) {\n\nIn this function, the cache line 0x4c0 -\u003e 0x500 is used only for this\nreading \u0027copied_seq\u0027 field.\n\nrcv_wup and copied_seq should be next to rcv_nxt field, to lower number of\nactive cache lines in hot paths. (tcp_rcv_established(), tcp_poll(), ...)\n\nAs you suggested, I changed tcp_create_openreq_child() so that these fields\nare changed together, to avoid adding a new store buffer stall.\n\nPatch is 64bit friendly (no new hole because of alignment constraints)\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6f74651ae626ec672028587bc700538076dfbefb",
      "tree": "e00c9cf21c9d917a2392310980f9119ed9529221",
      "parents": [
        "fda03fbb56bf88f1fb1c57b2474082e5addaa884"
      ],
      "author": {
        "name": "Baruch Even",
        "email": "baruch@ev-en.org",
        "time": "Sun Feb 04 23:36:42 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Thu Feb 08 12:38:49 2007 -0800"
      },
      "message": "[TCP]: Seperate DSACK from SACK fast path\n\nMove DSACK code outside the SACK fast-path checking code. If the DSACK\ndetermined that the information was too old we stayed with a partial cache\ncopied. Most likely this matters very little since the next packet will not be\nDSACK and we will find it in the cache. but it\u0027s still not good form and there\nis little reason to couple the two checks.\n\nSince the SACK receive cache doesn\u0027t need the data to be in host order we also\nremove the ntohl in the checking loop.\n\nSigned-off-by: Baruch Even \u003cbaruch@ev-en.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3a137d2065571864be0301b9ebd72ddb01060997",
      "tree": "43fba0c36b40245ff7b528cc6fec9137a87835e7",
      "parents": [
        "2ff52f282cf287d60e9eda1f3b5ec83e00a86130"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Tue Nov 28 01:12:38 2006 -0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Dec 02 21:30:54 2006 -0800"
      },
      "message": "[TCP]: Renove the __ prefix on the struct tcp_sock members\n\nAs this struct is not userland visible at all.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\n"
    },
    {
      "commit": "2ff52f282cf287d60e9eda1f3b5ec83e00a86130",
      "tree": "1838d36bbe158bb5e82d7f4b5b699e8b685930e1",
      "parents": [
        "5d0dbc4a9b2d325458dcbf9a8329bd1d2cc7bd7e"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Tue Nov 28 00:48:32 2006 -0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Dec 02 21:30:53 2006 -0800"
      },
      "message": "[TCP]: Change tcp_header_len member in tcp_sock to u16\n\nWith this we eliminate the last hole in struct tcp_sock.\n\nEnd result:\n\n[acme@newtoy net-2.6.20]$ codiff -sV /tmp/tcp.o.before net/ipv4/tcp.o\n/pub/scm/linux/kernel/git/acme/net-2.6.20/net/ipv4/tcp.c:\n  struct tcp_sock |   -4\n    tcp_header_len;\n     from: int                   /*  1000(0)     4(0) */\n     to:   u16                   /*  1000(0)     2(0) */\n 1 struct changed\n[acme@newtoy net-2.6.20]$\n\nNow sizeof(tcp_sock) is just...\n\n[acme@newtoy net-2.6.20]$ pahole --sizes ../OUTPUT/qemu/net-2.6.20/net/ipv4/tcp.o | grep -w tcp_sock\nstruct tcp_sock: 1500 0\n\n1500 bytes ;-)\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\n"
    },
    {
      "commit": "9981a0e36a572e9fcf84bfab915fdc93bed0e3c9",
      "tree": "3c64dba5b233b97417f3c46135607bfc19e2182f",
      "parents": [
        "56649d5d3c4cb0fe6dd34808ca9f9208d84130ab"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Nov 14 21:24:30 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Dec 02 21:23:26 2006 -0800"
      },
      "message": "[NET]: Annotate checksums in on-the-wire packets.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "cfb6eeb4c860592edd123fdea908d23c6ad1c7dc",
      "tree": "361c073622faa540ef6602ef1b0a6e8c0a17fc60",
      "parents": [
        "bf6bce71eae386dbc37f93af7e5ad173450d9945"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Tue Nov 14 19:07:45 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Dec 02 21:22:39 2006 -0800"
      },
      "message": "[TCP]: MD5 Signature Option (RFC2385) support.\n\nBased on implementation by Rick Payne.\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ae8064ac32d07f609114d73928cdef803be87134",
      "tree": "a783594abc5ca2f795992664684ab46581625fac",
      "parents": [
        "b52f070c9c3c09ed3b7f699280193aae7e25d816"
      ],
      "author": {
        "name": "John Heffner",
        "email": "jheffner@psc.edu",
        "time": "Wed Oct 18 20:36:48 2006 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Oct 18 20:36:48 2006 -0700"
      },
      "message": "[TCP]: Bound TSO defer time\n\nThis patch limits the amount of time you will defer sending a TSO segment\nto less than two clock ticks, or the time between two acks, whichever is\nlonger.\n\nOn slow links, deferring causes significant bursts.  See attached plots,\nwhich show RTT through a 1 Mbps link with a 100 ms RTT and ~100 ms queue\nfor (a) non-TSO, (b) currnet TSO, and (c) patched TSO.  This burstiness\ncauses significant jitter, tends to overflow queues early (bad for short\nqueues), and makes delay-based congestion control more difficult.\n\nDeferring by a couple clock ticks I believe will have a relatively small\nimpact on performance.\n\nSigned-off-by: John Heffner \u003cjheffner@psc.edu\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "dddc93c05d7dba60b44866486502c155e96ab915",
      "tree": "d8126e1d55e6fd9147d9342896ad9c8e89dc2c79",
      "parents": [
        "269bd27e66037a7932cee6d6aa7ef7defd0bfe38"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Sep 27 18:32:46 2006 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Thu Sep 28 18:02:05 2006 -0700"
      },
      "message": "[TCP]: struct tcp_sock .pred_flags is net-endian\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "269bd27e66037a7932cee6d6aa7ef7defd0bfe38",
      "tree": "92b1694b00ee61777bd6976d32cb283effdf9172",
      "parents": [
        "46a97324a5ebdc1e343a0223d993e79551adab0f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Sep 27 18:32:28 2006 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Thu Sep 28 18:02:04 2006 -0700"
      },
      "message": "[TCP]: struct tcp_sack_block annotations\n\nSome of the instances of tcp_sack_block are host-endian, some - net-endian.\nDefine struct tcp_sack_block_wire identical to struct tcp_sack_block\nwith u32 replaced with __be32; annotate uses of tcp_sack_block replacing\nnet-endian ones with tcp_sack_block_wire.  Change is obviously safe since\nfor cc(1) __be32 is typedefed to u32.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "46a97324a5ebdc1e343a0223d993e79551adab0f",
      "tree": "0d33307b5061a94a2d4324780263b72543e15cd7",
      "parents": [
        "63007727e0bb09e8d906f73d36a09b9fac0d5893"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Sep 27 18:31:51 2006 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Thu Sep 28 18:02:03 2006 -0700"
      },
      "message": "[IPV4]: TCP headers annotated\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c8a553ad7f0bf943047943a758cf07017819cb3c",
      "tree": "df54b3d8c241ca59c1cb626819d06ba5106adc33",
      "parents": [
        "09b8f7a93efd4b2c4ef391e2fbf076f28c6d36d6"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "dwmw2@infradead.org",
        "time": "Thu Jun 22 14:28:09 2006 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Fri Jun 23 02:07:40 2006 -0700"
      },
      "message": "[TCP]: Move inclusion of \u003clinux/dmaengine.h\u003e to correct place in \u003clinux/tcp.h\u003e\n\nThe new \u003clinux/dmaengine.h\u003e header shouldn\u0027t be included from\nthe !__KERNEL__ portion of tcp.h\n\nSigned-off-by: David Woodhouse \u003cdwmw2@infradead.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "cee4cca740d209bcb4b9857baa2253d5ba4e3fbe",
      "tree": "88a23004393ea4a32cad79839479c8e653e401d6",
      "parents": [
        "2edc322d420a4cec8dbc184a1220ecd7fa9f8ae6",
        "9348f0de2d2b541b4ba64fb1f4efee9710a3d731"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jun 20 15:10:08 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jun 20 15:10:08 2006 -0700"
      },
      "message": "Merge git://git.infradead.org/hdrcleanup-2.6\n\n* git://git.infradead.org/hdrcleanup-2.6: (63 commits)\n  [S390] __FD_foo definitions.\n  Switch to __s32 types in joystick.h instead of C99 types for consistency.\n  Add \u003csys/types.h\u003e to headers included for userspace in \u003clinux/input.h\u003e\n  Move inclusion of \u003clinux/compat.h\u003e out of user scope in asm-x86_64/mtrr.h\n  Remove struct fddi_statistics from user view in \u003clinux/if_fddi.h\u003e\n  Move user-visible parts of drivers/s390/crypto/z90crypt.h to include/asm-s390\n  Revert include/media changes: Mauro says those ioctls are only used in-kernel(!)\n  Include \u003clinux/types.h\u003e and use __uXX types in \u003clinux/cramfs_fs.h\u003e\n  Use __uXX types in \u003clinux/i2o_dev.h\u003e, include \u003clinux/ioctl.h\u003e too\n  Remove private struct dx_hash_info from public view in \u003clinux/ext3_fs.h\u003e\n  Include \u003clinux/types.h\u003e and use __uXX types in \u003clinux/affs_hardblocks.h\u003e\n  Use __uXX types in \u003clinux/divert.h\u003e for struct divert_blk et al.\n  Use __u32 for elf_addr_t in \u003casm-powerpc/elf.h\u003e, not u32. It\u0027s user-visible.\n  Remove PPP_FCS from user view in \u003clinux/ppp_defs.h\u003e, remove __P mess entirely\n  Use __uXX types in user-visible structures in \u003clinux/nbd.h\u003e\n  Don\u0027t use \u0027u32\u0027 in user-visible struct ip_conntrack_old_tuple.\n  Use __uXX types for S390 DASD volume label definitions which are user-visible\n  S390 BIODASDREADCMB ioctl should use __u64 not u64 type.\n  Remove unneeded inclusion of \u003clinux/time.h\u003e from \u003clinux/ufs_fs.h\u003e\n  Fix private integer types used in V4L2 ioctls.\n  ...\n\nManually resolve conflict in include/linux/mtd/physmap.h\n"
    },
    {
      "commit": "97fc2f0848c928c63c2ae619deee61a0b1107b69",
      "tree": "651f5ec78128605736d6c777a13697d5e58a1b62",
      "parents": [
        "de5506e155276d385712c2aa1c2d9a27cd4ed947"
      ],
      "author": {
        "name": "Chris Leech",
        "email": "christopher.leech@intel.com",
        "time": "Tue May 23 17:55:33 2006 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Jun 17 21:25:48 2006 -0700"
      },
      "message": "[I/OAT]: Structure changes for TCP recv offload to I/OAT\n\nAdds an async_wait_queue and some additional fields to tcp_sock, and a\ndma_cookie_t to sk_buff.\n\nSigned-off-by: Chris Leech \u003cchristopher.leech@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "62c4f0a2d5a188f73a94f2cb8ea0dba3e7cf0a7f",
      "tree": "e85ca2d0dd43f90dccf758338764c3caa55f333f",
      "parents": [
        "089f26d5e31b7bf42a9a8fefec08b30cd27f4b0e"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "dwmw2@infradead.org",
        "time": "Wed Apr 26 12:56:16 2006 +0100"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@infradead.org",
        "time": "Wed Apr 26 12:56:16 2006 +0100"
      },
      "message": "Don\u0027t include linux/config.h from anywhere else in include/\n\nSigned-off-by: David Woodhouse \u003cdwmw2@infradead.org\u003e\n"
    },
    {
      "commit": "0e7b13685f9a06949ea3070c97c0f0085a08cd37",
      "tree": "3ba0a11d61dc2dd64d7a93bb5cd70d58a46fec39",
      "parents": [
        "1d541ddd74802cfa0eb8a3864668851f6cd79bdf"
      ],
      "author": {
        "name": "John Heffner",
        "email": "jheffner@psc.edu",
        "time": "Mon Mar 20 21:32:58 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Mar 20 21:32:58 2006 -0800"
      },
      "message": "[TCP] mtu probing: move tcp-specific data out of inet_connection_sock\n\nThis moves some TCP-specific MTU probing state out of\ninet_connection_sock back to tcp_sock.\n\nSigned-off-by: John Heffner \u003cjheffner@psc.edu\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d83d8461f902c672bc1bd8fbc6a94e19f092da97",
      "tree": "0534c553ab92baa2eb9dbb5bba64f2c4540b1e89",
      "parents": [
        "22712813620fa8e682dbfb253a60ca0131da1e07"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Tue Dec 13 23:26:10 2005 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Tue Jan 03 13:10:58 2006 -0800"
      },
      "message": "[IP_SOCKGLUE]: Remove most of the tcp specific calls\n\nAs DCCP needs to be called in the same spots.\n\nNow we have a member in inet_sock (is_icsk), set at sock creation time from\nstruct inet_protosw-\u003eflags (if INET_PROTOSW_ICSK is set, like for TCP and\nDCCP) to see if a struct sock instance is a inet_connection_sock for places\nlike the ones in ip_sockglue.c (v4 and v6) where we previously were looking if\nsk_type was SOCK_STREAM, that is insufficient because we now use the same code\nfor DCCP, that has sk_type SOCK_DCCP.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "22712813620fa8e682dbfb253a60ca0131da1e07",
      "tree": "d3ed724002ecb7f028666d7fafbfc4fb96297182",
      "parents": [
        "d8313f5ca2b1f86b7df6c99fc4b3fffa1f84e92b"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Tue Dec 13 23:25:56 2005 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Tue Jan 03 13:10:57 2006 -0800"
      },
      "message": "[TCP]: Move the TCPF_ enum to tcp_states.h\n\nUpcoming patches will make, for instance, ip_sockglue.c need just this enum\nand not all of tcp.h.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8292a17a399ffb7c5c8b083db4ad994e090055f7",
      "tree": "1544436169ba1dc2eface34664a203c2c17a8d65",
      "parents": [
        "ca304b6104ffdd120bb6687a88a0625e58bc71cd"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Tue Dec 13 23:15:52 2005 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Tue Jan 03 13:10:38 2006 -0800"
      },
      "message": "[ICSK]: Rename struct tcp_func to struct inet_connection_sock_af_ops\n\nAnd move it to struct inet_connection_sock. DCCP will use it in the\nupcoming changesets.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6a438bbe68c7013a42d9c5aee5a40d7dafdbe6ec",
      "tree": "09775f0479168cd53494155a5789e78df218b497",
      "parents": [
        "caa20d9abe810be2ede9612b6c9db6ce7d6edf80"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@osdl.org",
        "time": "Thu Nov 10 17:14:59 2005 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 10 17:14:59 2005 -0800"
      },
      "message": "[TCP]: speed up SACK processing\n\nUse \"hints\" to speed up the SACK processing. Various forms \nof this have been used by TCP developers (Web100, STCP, BIC)\nto avoid the 2x linear search of outstanding segments.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@osdl.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9772efb970780aeed488c19d8b4afd46c3b484af",
      "tree": "de016aaa29c8a95e98c7abaa70c8b590160e2886",
      "parents": [
        "7faffa1c7fb9b8e8917e3225d4e2638270c0a48b"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@osdl.org",
        "time": "Thu Nov 10 17:09:53 2005 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 10 17:09:53 2005 -0800"
      },
      "message": "[TCP]: Appropriate Byte Count support\n\nThis is an updated version of the RFC3465 ABC patch originally\nfor Linux 2.6.11-rc4 by Yee-Ting Li. ABC is a way of counting\nbytes ack\u0027d rather than packets when updating congestion control.\n\nThe orignal ABC described in the RFC applied to a Reno style\nalgorithm. For advanced congestion control there is little\nchange after leaving slow start.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@osdl.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6687e988d9aeaccad6774e6a8304f681f3ec0a03",
      "tree": "ecd3d28f9989847aa1dcde4782de0210aeadc290",
      "parents": [
        "64ce207306debd7157f47282be94770407bec01c"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Wed Aug 10 04:03:31 2005 -0300"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Mon Aug 29 15:56:18 2005 -0700"
      },
      "message": "[ICSK]: Move TCP congestion avoidance members to icsk\n\nThis changeset basically moves tcp_sk()-\u003e{ca_ops,ca_state,etc} to inet_csk(),\nminimal renaming/moving done in this changeset to ease review.\n\nMost of it is just changes of struct tcp_sock * to struct sock * parameters.\n\nWith this we move to a state closer to two interesting goals:\n\n1. Generalisation of net/ipv4/tcp_diag.c, becoming inet_diag.c, being used\n   for any INET transport protocol that has struct inet_hashinfo and are\n   derived from struct inet_connection_sock. Keeps the userspace API, that will\n   just not display DCCP sockets, while newer versions of tools can support\n   DCCP.\n\n2. INET generic transport pluggable Congestion Avoidance infrastructure, using\n   the current TCP CA infrastructure with DCCP.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "295f7324ff8d9ea58b4d3ec93b1aaa1d80e048a9",
      "tree": "509c113d2622a28836303590ba1a40cecea59d3b",
      "parents": [
        "0a5578cf8e5e045aaa68643c17ce885426697c6b"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@ghostprotocols.net",
        "time": "Tue Aug 09 20:11:56 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Mon Aug 29 15:49:29 2005 -0700"
      },
      "message": "[ICSK]: Introduce reqsk_queue_prune from code in tcp_synack_timer\n\nWith this we\u0027re very close to getting all of the current TCP\nrefactorings in my dccp-2.6 tree merged, next changeset will export\nsome functions needed by the current DCCP code and then dccp-2.6.git\nwill be born!\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "463c84b97f24010a67cd871746d6a7e4c925a5f9",
      "tree": "48df67ede4ebb5d12b3c0ae55d72531574bd51a6",
      "parents": [
        "87d11ceb9deb7a3f13fdee6e89d9bb6be7d27a71"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@ghostprotocols.net",
        "time": "Tue Aug 09 20:10:42 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Mon Aug 29 15:43:19 2005 -0700"
      },
      "message": "[NET]: Introduce inet_connection_sock\n\nThis creates struct inet_connection_sock, moving members out of struct\ntcp_sock that are shareable with other INET connection oriented\nprotocols, such as DCCP, that in my private tree already uses most of\nthese members.\n\nThe functions that operate on these members were renamed, using a\ninet_csk_ prefix while not being moved yet to a new file, so as to\nease the review of these changes.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8feaf0c0a5488b3d898a9c207eb6678f44ba3f26",
      "tree": "ddd004afe2f7c8295f6fdb94d34f78a42b5961cb",
      "parents": [
        "33b62231908c58ae04185e4f1063d1e35a7c8576"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@ghostprotocols.net",
        "time": "Tue Aug 09 20:09:30 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Mon Aug 29 15:42:13 2005 -0700"
      },
      "message": "[INET]: Generalise tcp_tw_bucket, aka TIME_WAIT sockets\n\nThis paves the way to generalise the rest of the sock ID lookup\nroutines and saves some bytes in TCPv4 TIME_WAIT sockets on distro\nkernels (where IPv6 is always built as a module):\n\n[root@qemu ~]# grep tw_sock /proc/slabinfo\ntw_sock_TCPv6  0  0  128  31  1\ntw_sock_TCP    0  0   96  41  1\n[root@qemu ~]#\n\nNow if a protocol wants to use the TIME_WAIT generic infrastructure it\nonly has to set the sk_prot-\u003etwsk_obj_size field with the size of its\ninet_timewait_sock derived sock and proto_register will create\nsk_prot-\u003etwsk_slab, for now its only for INET sockets, but we can\nintroduce timewait_sock later if some non INET transport protocolo\nwants to use this stuff.\n\nNext changesets will take advantage of this new infrastructure to\ngeneralise even more TCP code.\n\n[acme@toy net-2.6.14]$ grep built-in /tmp/before.size /tmp/after.size\n/tmp/before.size: 188646   11764    5068  205478   322a6 net/ipv4/built-in.o\n/tmp/after.size:  188144   11764    5068  204976   320b0 net/ipv4/built-in.o\n[acme@toy net-2.6.14]$\n\nTested with both IPv4 \u0026 IPv6 (::1 (localhost) \u0026 ::ffff:172.20.0.1\n(qemu host)).\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c752f0739f09b803aed191c4765a3b6650a08653",
      "tree": "33dcc7acf66ec51952b76276c758e38811f4f708",
      "parents": [
        "f3f05f7046e7c85b04af390d95a82a27160dd5d0"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@ghostprotocols.net",
        "time": "Tue Aug 09 20:08:28 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Mon Aug 29 15:41:54 2005 -0700"
      },
      "message": "[TCP]: Move the tcp sock states to net/tcp_states.h\n\nLots of places just needs the states, not even linux/tcp.h, where this\nenum was, needs it.\n\nThis speeds up development of the refactorings as less sources are\nrebuilt when things get moved from net/tcp.h.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a55ebcc4c4532107ad9eee1c9bb698ab5f12c00f",
      "tree": "964be5918610e6f89cc7f2fee48418979b48773b",
      "parents": [
        "77d8bf9c6208eb535f05718168ffcc476be0ca8c"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@ghostprotocols.net",
        "time": "Tue Aug 09 20:01:14 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Mon Aug 29 15:38:48 2005 -0700"
      },
      "message": "[INET]: Move bind_hash from tcp_sk to inet_sk\n\nThis should really be in a inet_connection_sock, but I\u0027m leaving it\nfor a later optimization, when some more fields common to INET\ntransport protocols now in tcp_sk or inet_sk will be chunked out into\ninet_connection_sock, for now its better to concentrate on getting the\nchanges in the core merged to leave the DCCP tree with only DCCP\nspecific code.\n\nNext changesets will take advantage of this move to generalise things\nlike tcp_bind_hash, tcp_put_port, tcp_inherit_port, making the later\nreceive a inet_hashinfo parameter, and even __tcp_tw_hashdance, etc in\nthe future, when tcp_tw_bucket gets transformed into the struct\ntimewait_sock hierarchy.\n\ntcp_destroy_sock also is eligible as soon as tcp_orphan_count gets\nmoved to sk_prot.\n\nA cascade of incremental changes will ultimately make the tcp_lookup\nfunctions be fully generic.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0f7ff9274e72fd254fbd1ab117bbc1db6e7cdb34",
      "tree": "95736729a2f5302666604c4287a2af97ececd734",
      "parents": [
        "304a16180fb6d2b153b45f6fbbcec1fa814496e5"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@ghostprotocols.net",
        "time": "Tue Aug 09 19:59:44 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Mon Aug 29 15:38:32 2005 -0700"
      },
      "message": "[INET]: Just rename the TCP hashtable functions/structs to inet_\n\nThis is to break down the complexity of the series of patches,\nmaking it very clear that this one just does:\n\n1. renames tcp_ prefixed hashtable functions and data structures that\n   were already mostly generic to inet_ to share it with DCCP and\n   other INET transport protocols.\n\n2. Removes not used functions (__tb_head \u0026 tb_head)\n\n3. Removes some leftover prototypes in the headers (tcp_bucket_unlock \u0026\n   tcp_v4_build_header)\n\nNext changesets will move tcp_sk(sk)-\u003ebind_hash to inet_sock so that we can\nmake functions such as tcp_inherit_port, __tcp_inherit_port, tcp_v4_get_port,\n__tcp_put_port,  generic and get others like tcp_destroy_sock closer to generic\n(tcp_orphan_count will go to sk-\u003esk_prot to allow this).\n\nEventually most of these functions will be used passing the transport protocol\ninet_hashinfo structure.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c1b4a7e69576d65efc31a8cea0714173c2841244",
      "tree": "92082532651cddc6f0649a9d7ca9ca63e381d310",
      "parents": [
        "0d9901df62fe4820aee86b49f1a074cdb5c6928e"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 05 15:24:38 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 05 15:24:38 2005 -0700"
      },
      "message": "[TCP]: Move to new TSO segmenting scheme.\n\nMake TSO segment transmit size decisions at send time not earlier.\n\nThe basic scheme is that we try to build as large a TSO frame as\npossible when pulling in the user data, but the size of the TSO frame\noutput to the card is determined at transmit time.\n\nThis is guided by tp-\u003exmit_size_goal.  It is always set to a multiple\nof MSS and tells sendmsg/sendpage how large an SKB to try and build.\n\nLater, tcp_write_xmit() and tcp_push_one() chop up the packet if\nnecessary and conditions warrant.  These routines can also decide to\n\"defer\" in order to wait for more ACKs to arrive and thus allow larger\nTSO frames to be emitted.\n\nA general observation is that TSO elongates the pipe, thus requiring a\nlarger congestion window and larger buffering especially at the sender\nside.  Therefore, it is important that applications 1) get a large\nenough socket send buffer (this is accomplished by our dynamic send\nbuffer expansion code) 2) do large enough writes.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5f8ef48d240963093451bcf83df89f1a1364f51d",
      "tree": "cecb30c2f59778f7f509a84b3aa7ea097c3f2b27",
      "parents": [
        "51b0bdedb8e784d0d969a6b77151911130812400"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@osdl.org",
        "time": "Thu Jun 23 20:37:36 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jun 23 20:37:36 2005 -0700"
      },
      "message": "[TCP]: Allow choosing TCP congestion control via sockopt.\n\nAllow using setsockopt to set TCP congestion control to use on a per\nsocket basis.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@osdl.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "317a76f9a44b437d6301718f4e5d08bd93f98da7",
      "tree": "caeba9839dee264f59b035b81c3d13d6c61b638e",
      "parents": [
        "a8ad86f2dc46356f87be1327dabc18bdbda32f50"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@osdl.org",
        "time": "Thu Jun 23 12:19:55 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jun 23 12:19:55 2005 -0700"
      },
      "message": "[TCP]: Add pluggable congestion control algorithm infrastructure.\n\nAllow TCP to have multiple pluggable congestion control algorithms.\nAlgorithms are defined by a set of operations and can be built in\nor modules.  The legacy \"new RENO\" algorithm is used as a starting\npoint and fallback.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@osdl.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0e87506fcc734647c7b2497eee4eb81e785c857a",
      "tree": "bb8863c59fdef2628f17b6773c52801792a57722",
      "parents": [
        "60236fdd08b2169045a3bbfc5ffe1576e6c3c17b"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@ghostprotocols.net",
        "time": "Sat Jun 18 22:47:59 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jun 18 22:47:59 2005 -0700"
      },
      "message": "[NET] Generalise tcp_listen_opt\n\nThis chunks out the accept_queue and tcp_listen_opt code and moves\nthem to net/core/request_sock.c and include/net/request_sock.h, to\nmake it useful for other transport protocols, DCCP being the first one\nto use it.\n\nNext patches will rename tcp_listen_opt to accept_sock and remove the\ninline tcp functions that just call a reqsk_queue_ function.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "60236fdd08b2169045a3bbfc5ffe1576e6c3c17b",
      "tree": "4541c682cc72daf560ec516e2b5868089a88b6ea",
      "parents": [
        "2e6599cb899ba4b133f42cbf9d2b1883d2dc583a"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@ghostprotocols.net",
        "time": "Sat Jun 18 22:47:21 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jun 18 22:47:21 2005 -0700"
      },
      "message": "[NET] Rename open_request to request_sock\n\nOk, this one just renames some stuff to have a better namespace and to\ndissassociate it from TCP:\n\nstruct open_request  -\u003e struct request_sock\ntcp_openreq_alloc    -\u003e reqsk_alloc\ntcp_openreq_free     -\u003e reqsk_free\ntcp_openreq_fastfree -\u003e __reqsk_free\n\nWith this most of the infrastructure closely resembles a struct\nsock methods subset.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2e6599cb899ba4b133f42cbf9d2b1883d2dc583a",
      "tree": "b5d4fcca4d2a515fc3d3d20cefaaeebd8dbf661f",
      "parents": [
        "1944972d3bb651474a5021c9da8d0166ae19f1eb"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@ghostprotocols.net",
        "time": "Sat Jun 18 22:46:52 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jun 18 22:46:52 2005 -0700"
      },
      "message": "[NET] Generalise TCP\u0027s struct open_request minisock infrastructure\n\nKept this first changeset minimal, without changing existing names to\nease peer review.\n\nBasicaly tcp_openreq_alloc now receives the or_calltable, that in turn\nhas two new members:\n\n-\u003eslab, that replaces tcp_openreq_cachep\n-\u003eobj_size, to inform the size of the openreq descendant for\n  a specific protocol\n\nThe protocol specific fields in struct open_request were moved to a\nclass hierarchy, with the things that are common to all connection\noriented PF_INET protocols in struct inet_request_sock, the TCP ones\nin tcp_request_sock, that is an inet_request_sock, that is an\nopen_request.\n\nI.e. this uses the same approach used for the struct sock class\nhierarchy, with sk_prot indicating if the protocol wants to use the\nopen_request infrastructure by filling in sk_prot-\u003ersk_prot with an\nor_calltable.\n\nResults? Performance is improved and TCP v4 now uses only 64 bytes per\nopen request minisock, down from 96 without this patch :-)\n\nNext changeset will rename some of the structs, fields and functions\nmentioned above, struct or_calltable is way unclear, better name it\nstruct request_sock_ops, s/struct open_request/struct request_sock/g,\netc.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
