)]}'
{
  "log": [
    {
      "commit": "008d23e4852d78bb2618f2035f8b2110b6a6b968",
      "tree": "81c88f744f6f3fc84132527c1ddc0b4da410c5e2",
      "parents": [
        "8f685fbda43deccd130d192c9fcef1444649eaca",
        "bfc672dcf323877228682aff79dff8ecd9f30ff8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:05:56 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:05:56 2011 -0800"
      },
      "message": "Merge branch \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (43 commits)\n  Documentation/trace/events.txt: Remove obsolete sched_signal_send.\n  writeback: fix global_dirty_limits comment runtime -\u003e real-time\n  ppc: fix comment typo singal -\u003e signal\n  drivers: fix comment typo diable -\u003e disable.\n  m68k: fix comment typo diable -\u003e disable.\n  wireless: comment typo fix diable -\u003e disable.\n  media: comment typo fix diable -\u003e disable.\n  remove doc for obsolete dynamic-printk kernel-parameter\n  remove extraneous \u0027is\u0027 from Documentation/iostats.txt\n  Fix spelling milisec -\u003e ms in snd_ps3 module parameter description\n  Fix spelling mistakes in comments\n  Revert conflicting V4L changes\n  i7core_edac: fix typos in comments\n  mm/rmap.c: fix comment\n  sound, ca0106: Fix assignment to \u0027channel\u0027.\n  hrtimer: fix a typo in comment\n  init/Kconfig: fix typo\n  anon_inodes: fix wrong function name in comment\n  fix comment typos concerning \"consistent\"\n  poll: fix a typo in comment\n  ...\n\nFix up trivial conflicts in:\n - drivers/net/wireless/iwlwifi/iwl-core.c (moved to iwl-legacy.c)\n - fs/ext4/ext4.h\n\nAlso fix missed \u0027diabled\u0027 typo in drivers/net/bnx2x/bnx2x.h while at it.\n"
    },
    {
      "commit": "bfbb23466adcbc77facea3046b44f75530079472",
      "tree": "31e28ac15e808861cd261e9600c4e7642d8aa73f",
      "parents": [
        "763dadd47c884853a22f2f19ea27e58431303ff3"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Jan 02 18:15:58 2011 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Fri Jan 07 12:22:44 2011 +0100"
      },
      "message": "dccp: make upper bound for seq_window consistent on 32/64 bit\n\nThe \u0027seq_window\u0027 sysctl sets the initial value for the DCCP Sequence Window,\nwhich may range from 32..2^46-1 (RFC 4340, 7.5.2). The patch sets the upper\nbound consistently to 2^32-1 on both 32 and 64 bit systems, which should be\nsufficient - with a RTT of 1sec and 1-byte packets, a seq_window of 2^32-1\ncorresponds to a link speed of 34 Gbps.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "763dadd47c884853a22f2f19ea27e58431303ff3",
      "tree": "9ee3daff6fe649578d3fabdc0a1fcf8252b7b660",
      "parents": [
        "2cf5be93d1b704f342ad423a49f0e78d73939e66"
      ],
      "author": {
        "name": "Samuel Jero",
        "email": "sj323707@ohio.edu",
        "time": "Thu Dec 30 12:15:41 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Fri Jan 07 12:22:43 2011 +0100"
      },
      "message": "dccp: fix bug in updating the GSR\n\nCurrently dccp_check_seqno allows any valid packet to update the Greatest\nSequence Number Received, even if that packet\u0027s sequence number is less than\nthe current GSR. This patch adds a check to make sure that the new packet\u0027s\nsequence number is greater than GSR.\n\nSigned-off-by: Samuel Jero \u003csj323707@ohio.edu\u003e\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "2cf5be93d1b704f342ad423a49f0e78d73939e66",
      "tree": "5d0e0435c71e775134d0e2374c97db78a46d3198",
      "parents": [
        "4e3dbdb1392a83bd21a6ff8f6bc785495058d37c"
      ],
      "author": {
        "name": "Samuel Jero",
        "email": "sj323707@ohio.edu",
        "time": "Thu Dec 30 12:15:16 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Fri Jan 07 12:22:43 2011 +0100"
      },
      "message": "dccp: fix return value for sequence-invalid packets\n\nCurrently dccp_check_seqno returns 0 (indicating a valid packet) if the\nacknowledgment number is out of bounds and the sync that RFC 4340 mandates at\nthis point is currently being rate-limited. This function should return -1,\nindicating an invalid packet.\n\nSigned-off-by: Samuel Jero \u003csj323707@ohio.edu\u003e\nAcked-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "4b7bd364700d9ac8372eff48832062b936d0793b",
      "tree": "0dbf78c95456a0b02d07fcd473281f04a87e266d",
      "parents": [
        "c0d8768af260e2cbb4bf659ae6094a262c86b085",
        "90a8a73c06cc32b609a880d48449d7083327e11a"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Dec 22 18:57:02 2010 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Dec 22 18:57:02 2010 +0100"
      },
      "message": "Merge branch \u0027master\u0027 into for-next\n\nConflicts:\n\tMAINTAINERS\n\tarch/arm/mach-omap2/pm24xx.c\n\tdrivers/scsi/bfa/bfa_fcpim.c\n\nNeeded to update to apply fixes for which the old branch was too\noutdated.\n"
    },
    {
      "commit": "b7ec19af63b467e30189984fb24e6157603608e3",
      "tree": "670f4a450bd1a49072c0958a66e32fc8a349d9dc",
      "parents": [
        "84b3cdc38cd2882d7ac3c2ae4b6faf5c199874e3"
      ],
      "author": {
        "name": "Shan Wei",
        "email": "shanwei@cn.fujitsu.com",
        "time": "Fri Dec 10 12:49:23 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Fri Dec 10 12:49:23 2010 +0100"
      },
      "message": "dccp: remove unused macros\n\nRemove macros which have been unused since the initial implementation\n(commit 7c657876b63cb1d8a2ec06f8fc6c37bb8412e66c, [DCCP]: Initial\n implementation from Tue Aug 9 20:14:34 2005 -0700).\n\nSigned-off-by: Shan Wei \u003cshanwei@cn.fujitsu.com\u003e\nAcked-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "fe6c791570efe717946ea7b7dd50aec96b70d551",
      "tree": "1becb5e8aea7a9c9a7d78f987bd73b0a5d8ee434",
      "parents": [
        "f8bf5681cf15f77692c8ad8cb95d059ff7c622c9",
        "f19872575ff7819a3723154657a497d9bca66b33"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Dec 08 13:15:38 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Dec 08 13:47:38 2010 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/net/wireless/ath/ath9k/ar9003_eeprom.c\n\tnet/llc/af_llc.c\n"
    },
    {
      "commit": "04910265078f08a73208beab70ed2a3cce4a919f",
      "tree": "cc7e1c927ceda1ddf5f86d50f8ee22a1a4e32fe6",
      "parents": [
        "871a2c16c21b988688b4ab1a78eadd969765c0a3"
      ],
      "author": {
        "name": "Tomasz Grobelny",
        "email": "tomasz@grobelny.oswiecenia.net",
        "time": "Sat Dec 04 13:39:13 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Dec 07 13:47:12 2010 +0100"
      },
      "message": "dccp qpolicy: Parameter checking of cmsg qpolicy parameters\n\nEnsure that cmsg-\u003ecmsg_type value is valid for qpolicy\nthat is currently in use.\n\nSigned-off-by: Tomasz Grobelny \u003ctomasz@grobelny.oswiecenia.net\u003e\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "871a2c16c21b988688b4ab1a78eadd969765c0a3",
      "tree": "34ffb3be1402747ef3b7fdb754fb99778bd45728",
      "parents": [
        "cfa969e385a23e4c85f50e0ed5de25a2e18bf9d4"
      ],
      "author": {
        "name": "Tomasz Grobelny",
        "email": "tomasz@grobelny.oswiecenia.net",
        "time": "Sat Dec 04 13:38:01 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Dec 07 13:47:12 2010 +0100"
      },
      "message": "dccp: Policy-based packet dequeueing infrastructure\n\nThis patch adds a generic infrastructure for policy-based dequeueing of\nTX packets and provides two policies:\n * a simple FIFO policy (which is the default) and\n * a priority based policy (set via socket options).\nBoth policies honour the tx_qlen sysctl for the maximum size of the write\nqueue (can be overridden via socket options).\n\nThe priority policy uses skb-\u003epriority internally to assign an u32 priority\nidentifier, using the same ranking as SO_PRIORITY. The skb-\u003epriority field\nis set to 0 when the packet leaves DCCP. The priority is supplied as ancillary\ndata using cmsg(3), the patch also provides the requisite parsing routines.\n\nSigned-off-by: Tomasz Grobelny \u003ctomasz@grobelny.oswiecenia.net\u003e\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "0ac78870220b6e0ac74dd9292bcfa7b18718babd",
      "tree": "19b0359b9a805857acf9ab713afd4e485e4da692",
      "parents": [
        "a301e1703edc088592f8c5c16f9bdd34a0792776"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Nov 23 02:36:56 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 28 11:29:27 2010 -0800"
      },
      "message": "dccp: fix error in updating the GAR\n\nThis fixes a bug in updating the Greatest Acknowledgment number Received (GAR):\nthe current implementation does not track the greatest received value -\nlower values in the range AWL..AWH (RFC 4340, 7.5.1) erase higher ones.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f72f2f4cdeb67bc262d80a6d474292f00182a4dc",
      "tree": "9e027a91937f3adf75205839168042f4472c7f40",
      "parents": [
        "866f3b25a2eb60d7529c227a0ecd80c3aba443fd"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Nov 18 09:37:07 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 18 09:37:07 2010 -0800"
      },
      "message": "dccp ccid-2: whitespace fix-up\n\nThis fixes whitespace noise introduced in commit \"dccp ccid-2: Algorithm to\nupdate buffer state\", 5753fdfe8bd8e9a2ff9e5af19b0ffc78bfcd502a, 14 Nov 2010.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5811662b15db018c740c57d037523683fd3e6123",
      "tree": "f820610a6024799a26699f22dc9a4ef5dee07978",
      "parents": [
        "dd68ad2235b4625e0dc928b2b4c614d265f976d3"
      ],
      "author": {
        "name": "Changli Gao",
        "email": "xiaosuo@gmail.com",
        "time": "Fri Nov 12 18:43:55 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 17 12:27:45 2010 -0800"
      },
      "message": "net: use the macros defined for the members of flowi\n\nUse the macros defined for the members of flowi to clean the code up.\n\nSigned-off-by: Changli Gao \u003cxiaosuo@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c996d8b9a8f37bd1b4dd7823abc42780b20998f8",
      "tree": "6f800886bdedd27876fdd3d97f2529558e66a1a9",
      "parents": [
        "e987fa357a4c585e4f43fc3e0ab15ba9e908e233"
      ],
      "author": {
        "name": "Michael Witten",
        "email": "mfwitten@gmail.com",
        "time": "Mon Nov 15 19:55:34 2010 +0000"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Nov 15 23:50:13 2010 +0100"
      },
      "message": "Docs/Kconfig: Update: osdl.org -\u003e linuxfoundation.org\n\nSome of the documentation refers to web pages under\nthe domain `osdl.org\u0027. However, `osdl.org\u0027 now\nredirects to `linuxfoundation.org\u0027.\n\nRather than rely on redirections, this patch updates\nthe addresses appropriately; for the most part, only\ndocumentation that is meant to be current has been\nupdated.\n\nThe patch should be pretty quick to scan and check;\neach new web-page url was gotten by trying out the\noriginal URL in a browser and then simply copying the\nthe redirected URL (formatting as necessary).\n\nThere is some conflict as to which one of these domain\nnames is preferred:\n\n  linuxfoundation.org\n  linux-foundation.org\n\nSo, I wrote:\n\n  info@linuxfoundation.org\n\nand got this reply:\n\n  Message-ID: \u003c4CE17EE6.9040807@linuxfoundation.org\u003e\n  Date: Mon, 15 Nov 2010 10:41:42 -0800\n  From: David Ames \u003cdavid@linuxfoundation.org\u003e\n\n  ...\n\n  linuxfoundation.org is preferred. The canonical name for our web site is\n  www.linuxfoundation.org. Our list site is actually\n  lists.linux-foundation.org.\n\n  Regarding email linuxfoundation.org is preferred there are a few people\n  who choose to use linux-foundation.org for their own reasons.\n\nConsequently, I used `linuxfoundation.org\u0027 for web pages and\n`lists.linux-foundation.org\u0027 for mailing-list web pages and email addresses;\nthe only personal email address I updated from `@osdl.org\u0027 was that of\nAndrew Morton, who prefers `linux-foundation.org\u0027 according `git log\u0027.\n\nSigned-off-by: Michael Witten \u003cmfwitten@gmail.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "7e87fe84303cc54ecf3c7b688cb08ca24322a41d",
      "tree": "df764cbfefe19e628e92a8353d331d91c33212b6",
      "parents": [
        "52394eecec4e6fa677a61af26f0bd35de665344e"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Nov 14 17:26:13 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Nov 15 07:12:01 2010 +0100"
      },
      "message": "dccp ccid-2: Separate option parsing from CCID processing\n\nThis patch replaces an almost identical replication of code: large parts\nof dccp_parse_options() re-appeared as ccid2_ackvector() in ccid2.c.\n\nApart from the duplication, this caused two more problems:\n 1. CCIDs should not need to be concerned with parsing header options;\n 2. one can not assume that Ack Vectors appear as a contiguous area within an\n    skb, it is legal to insert other options and/or padding in between. The\n    current code would throw an error and stop reading in such a case.\n\nSince Ack Vectors provide CCID-specific information, they are now processed\nby the CCID directly, separating this functionality from the main DCCP code.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "52394eecec4e6fa677a61af26f0bd35de665344e",
      "tree": "283c99722c63a05a748916caaec876732309ceaf",
      "parents": [
        "d83447f0944e73d690218d79c07762ffa4ceb9e4"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Nov 14 17:26:02 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Nov 15 07:12:00 2010 +0100"
      },
      "message": "dccp ccid-2: Remove old infrastructure\n\nThis removes\n * functions for which updates have been provided in the preceding patches and\n * the @av_vec_len field - it is no longer necessary since the buffer length is\n   now always computed dynamically.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "d83447f0944e73d690218d79c07762ffa4ceb9e4",
      "tree": "2a9adf943eee50d8c495ac9302692a277d862d92",
      "parents": [
        "18219463c884bfdb7954d298b9edb5194b14d621"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Nov 14 17:25:46 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Nov 15 07:12:00 2010 +0100"
      },
      "message": "dccp ccid-2: Schedule Sync as out-of-band mechanism\n\nThe problem with Ack Vectors is that\n  i) their length is variable and can in principle grow quite large,\n ii) it is hard to predict exactly how large they will be.\n\nDue to the second point it seems not a good idea to reduce the MPS; in\nparticular when on average there is enough room for the Ack Vector and an\nincrease in length is momentarily due to some burst loss, after which the\nAck Vector returns to its normal/average length.\n\nThe solution taken by this patch is to subtract a minimum-expected Ack Vector\nlength from the MPS, and to defer any larger Ack Vectors onto a separate\nSync - but only if indeed there is no space left on the skb.\n\nThis patch provides the infrastructure to schedule Sync-packets for transporting\n(urgent) out-of-band data. Its signalling is quicker than scheduling an Ack, since\nit does not need to wait for new application data.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "18219463c884bfdb7954d298b9edb5194b14d621",
      "tree": "d153af455b44eaf2fbf474515a2a7bb33b1b4b07",
      "parents": [
        "3802408644515e29fb723d51a5317301b212cf3a"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Nov 14 17:25:36 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Nov 15 07:11:59 2010 +0100"
      },
      "message": "dccp ccid-2: Consolidate Ack-Vector processing within main DCCP module\n\nThis aggregates Ack Vector processing (handling input and clearing old state)\ninto one function, for the following reasons and benefits:\n * all Ack Vector-specific processing is now in one place;\n * duplicated code is removed;\n * ensuring sanity: from an Ack Vector point of view, it is better to clear the\n                    old state first before entering new state;\n * Ack Event handling happens mostly within the CCIDs, not the main DCCP module.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "3802408644515e29fb723d51a5317301b212cf3a",
      "tree": "834533b0cf43366747ea237b43f06e4462aed94e",
      "parents": [
        "5753fdfe8bd8e9a2ff9e5af19b0ffc78bfcd502a"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Nov 14 17:25:23 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Nov 15 07:11:59 2010 +0100"
      },
      "message": "dccp ccid-2: Update code for the Ack Vector input/registration routine\n\nThis patch updates the code which registers new packets as received, using the\nnew circular buffer interface. It contributes a new algorithm which\n * supports both tail/head pointers and buffer wrap-around and\n * deals with overflow (head/tail move in lock-step).\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "5753fdfe8bd8e9a2ff9e5af19b0ffc78bfcd502a",
      "tree": "2a694538aef985ffffd140a861df7efdc73aeddf",
      "parents": [
        "c25ecd0a21d5e08160cb5cc984f9e2b8ee347443"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Nov 14 17:25:11 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Nov 15 07:11:59 2010 +0100"
      },
      "message": "dccp ccid-2: Algorithm to update buffer state\n\nThis provides a routine to consistently update the buffer state when the\npeer acknowledges receipt of Ack Vectors; updating state in the list of Ack\nVectors as well as in the circular buffer.\n\nWhile based on RFC 4340, several additional (and necessary) precautions were\nadded to protect the consistency of the buffer state. These additions are\nessential, since analysis and experience showed that the basic algorithm was\ninsufficient for this task (which lead to problems that were hard to debug).\n\nThe algorithm now\n * deals with HC-sender acknowledging to HC-receiver and vice versa,\n * keeps track of the last unacknowledged but received seqno in tail_ackno,\n * has special cases to reset the overflow condition when appropriate,\n * is protected against receiving older information (would mess up buffer state).\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "b3d14bff12a38ad13a174eb0cc83d2ac7169eee4",
      "tree": "2248e4d994ce857113c34ce5f754c554e17d8d9e",
      "parents": [
        "7d870936602533836bba821bd5c679c62c52a95f"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Nov 10 21:21:35 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Nov 10 21:21:35 2010 +0100"
      },
      "message": "dccp ccid-2: Implementation of circular Ack Vector buffer with overflow handling\n\nThis completes the implementation of a circular buffer for Ack Vectors, by\nextending the current (linear array-based) implementation.  The changes are:\n\n (a) An `overflow\u0027 flag to deal with the case of overflow. As before, dynamic\n     growth of the buffer will not be supported; but code will be added to deal\n     robustly with overflowing Ack Vector buffers.\n\n (b) A `tail_seqno\u0027 field. When naively implementing the algorithm of Appendix A\n     in RFC 4340, problems arise whenever subsequent Ack Vector records overlap,\n     which can bring the entire run length calculation completely out of synch.\n     (This is documented on http://www.erg.abdn.ac.uk/users/gerrit/dccp/notes/\\\n                                             ack_vectors/tracking_tail_ackno/ .)\n (c) The buffer length is now computed dynamically (i.e. current fill level),\n     as the span between head to tail.\n\nAs a result, dccp_ackvec_pending() is now simpler - the #ifdef is no longer\nnecessary since buf_empty is always true when IP_DCCP_ACKVEC is not configured.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "7d870936602533836bba821bd5c679c62c52a95f",
      "tree": "35ffc317699b1700b27dfd8c5da4512d87848e65",
      "parents": [
        "f17a37c9b8c4b32c01e501a84fa6f30e344c6110"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Nov 10 21:21:02 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Nov 10 21:21:02 2010 +0100"
      },
      "message": "dccp ccid-2: Separate internals of Ack Vectors from option-parsing code\n\nThis patch\n * separates Ack Vector housekeeping code from option-insertion code;\n * shifts option-specific code from ackvec.c into options.c;\n * introduces a dedicated routine to take care of the Ack Vector records;\n * simplifies the dccp_ackvec_insert_avr() routine: the BUG_ON was redundant,\n   since the list is automatically arranged in descending order of ack_seqno.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "f17a37c9b8c4b32c01e501a84fa6f30e344c6110",
      "tree": "7ff8e9a232aaddcd33c302c5c6a577af26634212",
      "parents": [
        "973a34aa8593dbfe84386343c694f5beecb51d8a"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Nov 10 21:20:07 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Nov 10 21:20:07 2010 +0100"
      },
      "message": "dccp ccid-2: Ack Vector interface clean-up\n\nThis patch brings the Ack Vector interface up to date. Its main purpose is\nto lay the basis for the subsequent patches of this set, which will use the\nnew data structure fields and routines.\n\nThere are no real algorithmic changes, rather an adaptation:\n\n (1) Replaced the static Ack Vector size (2) with a #define so that it can\n     be adapted (with low loss / Ack Ratio, a value of 1 works, so 2 seems\n     to be sufficient for the moment) and added a solution so that computing\n     the ECN nonce will continue to work - even with larger Ack Vectors.\n\n (2) Replaced the #defines for Ack Vector states with a complete enum.\n\n (3) Replaced #defines to compute Ack Vector length and state with general\n     purpose routines (inlines), and updated code to use these.\n\n (4) Added a `tail\u0027 field (conversion to circular buffer in subsequent patch).\n\n (5) Updated the (outdated) documentation for Ack Vector struct.\n\n (6) All sequence number containers now trimmed to 48 bits.\n\n (7) Removal of unused bits:\n     * removed dccpav_ack_nonce from struct dccp_ackvec, since this is already\n       redundantly stored in the `dccpavr_ack_nonce\u0027 (of Ack Vector record);\n     * removed Elapsed Time for Ack Vectors (it was nowhere used);\n     * replaced semantics of dccpavr_sent_len with dccpavr_ack_runlen, since\n       the code needs to be able to remember the old run length;\n     * reduced the de-/allocation routines (redundant / duplicate tests).\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "1c0e0a0569e925220c2948ea9b92fc013895917f",
      "tree": "533f97f037679a7ba92867baf816dda21a3c9f84",
      "parents": [
        "b1fcf55eea541af9efa5d39f5a0d1aec8ceca55d"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Oct 27 19:16:28 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 28 10:27:01 2010 -0700"
      },
      "message": "dccp ccid-2: Stop polling\n\nThis updates CCID-2 to use the CCID dequeuing mechanism, converting from\nprevious continuous-polling to a now event-driven mechanism.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b1fcf55eea541af9efa5d39f5a0d1aec8ceca55d",
      "tree": "a021b6abde9c784d67ee0de3bb7fb31f7d5b2e9f",
      "parents": [
        "dc841e30eaea9f9f83c9ab1ee0b3ef9e5c95ce8a"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Oct 27 19:16:27 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 28 10:27:01 2010 -0700"
      },
      "message": "dccp: Refine the wait-for-ccid mechanism\n\nThis extends the existing wait-for-ccid routine so that it may be used with\ndifferent types of CCID, addressing the following problems:\n\n 1) The queue-drain mechanism only works with rate-based CCIDs. If CCID-2 for\n    example has a full TX queue and becomes network-limited just as the\n    application wants to close, then waiting for CCID-2 to become unblocked\n    could lead to an indefinite  delay (i.e., application \"hangs\").\n 2) Since each TX CCID in turn uses a feedback mechanism, there may be changes\n    in its sending policy while the queue is being drained. This can lead to\n    further delays during which the application will not be able to terminate.\n 3) The minimum wait time for CCID-3/4 can be expected to be the queue length\n    times the current inter-packet delay. For example if tx_qlen\u003d100 and a delay\n    of 15 ms is used for each packet, then the application would have to wait\n    for a minimum of 1.5 seconds before being allowed to exit.\n 4) There is no way for the user/application to control this behaviour. It would\n    be good to use the timeout argument of dccp_close() as an upper bound. Then\n    the maximum time that an application is willing to wait for its CCIDs to can\n    be set via the SO_LINGER option.\n\nThese problems are addressed by giving the CCID a grace period of up to the\n`timeout\u0027 value.\n\nThe wait-for-ccid function is, as before, used when the application\n (a) has read all the data in its receive buffer and\n (b) if SO_LINGER was set with a non-zero linger time, or\n (c) the socket is either in the OPEN (active close) or in the PASSIVE_CLOSEREQ\n     state (client application closes after receiving CloseReq).\n\nIn addition, there is a catch-all case of __skb_queue_purge() after waiting for\nthe CCID. This is necessary since the write queue may still have data when\n (a) the host has been passively-closed,\n (b) abnormal termination (unread data, zero linger time),\n (c) wait-for-ccid could not finish within the given time limit.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "dc841e30eaea9f9f83c9ab1ee0b3ef9e5c95ce8a",
      "tree": "921458d0ea02f1478dbac9305c1925dbea8c0dd9",
      "parents": [
        "fe84f4140f0d24deca8591e38926b95cfd097e62"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Oct 27 19:16:26 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 28 10:27:00 2010 -0700"
      },
      "message": "dccp: Extend CCID packet dequeueing interface\n\nThis extends the packet dequeuing interface of dccp_write_xmit() to allow\n 1. CCIDs to take care of timing when the next packet may be sent;\n 2. delayed sending (as before, with an inter-packet gap up to 65.535 seconds).\n\nThe main purpose is to take CCID-2 out of its polling mode (when it is network-\nlimited, it tries every millisecond to send, without interruption).\n\nThe mode of operation for (2) is as follows:\n * new packet is enqueued via dccp_sendmsg() \u003d\u003e dccp_write_xmit(),\n * ccid_hc_tx_send_packet() detects that it may not send (e.g. window full),\n * it signals this condition via `CCID_PACKET_WILL_DEQUEUE_LATER\u0027,\n * dccp_write_xmit() returns without further action;\n * after some time the wait-condition for CCID becomes true,\n * that CCID schedules the tasklet,\n * tasklet function calls ccid_hc_tx_send_packet() via dccp_write_xmit(),\n * since the wait-condition is now true, ccid_hc_tx_packet() returns \"send now\",\n * packet is sent, and possibly more (since dccp_write_xmit() loops).\n\nCode reuse: the taskled function calls dccp_write_xmit(), the timer function\n            reduces to a wrapper around the same code.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "fe84f4140f0d24deca8591e38926b95cfd097e62",
      "tree": "5b4c809f131105fddb533776632ff1d546b604a7",
      "parents": [
        "de7fe7874dc55e8226245c50f07dec3c7b285044"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Oct 27 19:16:25 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 28 10:27:00 2010 -0700"
      },
      "message": "dccp: Return-value convention of hc_tx_send_packet()\n\nThis patch reorganises the return value convention of the CCID TX sending\nfunction, to permit more flexible schemes, as required by subsequent patches.\n\nCurrently the convention is\n * values \u003c 0     mean error,\n * a value \u003d\u003d 0   means \"send now\", and\n * a value x \u003e 0  means \"send in x milliseconds\".\n\nThe patch provides symbolic constants and a function to interpret return values.\n\nIn addition, it caps the maximum positive return value to 0xFFFF milliseconds,\ncorresponding to 65.535 seconds.  This is possible since in CCID-3/4 the\nmaximum possible inter-packet gap is fixed at t_mbi \u003d 64 sec.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5f05647dd81c11a6a165ccc8f0c1370b16f3bcb0",
      "tree": "7851ef1c93aa1aba7ef327ca4b75fd35e6d10f29",
      "parents": [
        "02f36038c568111ad4fc433f6fa760ff5e38fab4",
        "ec37a48d1d16c30b655ac5280209edf52a6775d4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 23 11:47:02 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 23 11:47:02 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1699 commits)\n  bnx2/bnx2x: Unsupported Ethtool operations should return -EINVAL.\n  vlan: Calling vlan_hwaccel_do_receive() is always valid.\n  tproxy: use the interface primary IP address as a default value for --on-ip\n  tproxy: added IPv6 support to the socket match\n  cxgb3: function namespace cleanup\n  tproxy: added IPv6 support to the TPROXY target\n  tproxy: added IPv6 socket lookup function to nf_tproxy_core\n  be2net: Changes to use only priority codes allowed by f/w\n  tproxy: allow non-local binds of IPv6 sockets if IP_TRANSPARENT is enabled\n  tproxy: added tproxy sockopt interface in the IPV6 layer\n  tproxy: added udp6_lib_lookup function\n  tproxy: added const specifiers to udp lookup functions\n  tproxy: split off ipv6 defragmentation to a separate module\n  l2tp: small cleanup\n  nf_nat: restrict ICMP translation for embedded header\n  can: mcp251x: fix generation of error frames\n  can: mcp251x: fix endless loop in interrupt handler if CANINTF_MERRF is set\n  can-raw: add msg_flags to distinguish local traffic\n  9p: client code cleanup\n  rds: make local functions/variables static\n  ...\n\nFix up conflicts in net/core/dev.c, drivers/net/pcmcia/smc91c92_cs.c and\ndrivers/net/wireless/ath/ath9k/debug.c as per David\n"
    },
    {
      "commit": "9941fb62762253774cc6177d0b9172ece5133fe1",
      "tree": "641fc2b376e2f84c7023aa0cd8b9d76f954cc3a1",
      "parents": [
        "a5190b4eea1f1c53ee26b3d1176441cafa8e7f79",
        "3b1a1ce6f418cb7ab35eb55c8a6575987a524e30"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 21 08:21:34 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 21 08:21:34 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6\n"
    },
    {
      "commit": "093d282321daeb19c107e5f1f16d7f68484f3ade",
      "tree": "36e9eed23573068819bf67a91caac6ebf60d0d7c",
      "parents": [
        "6006db84a91838813cdad8a6622a4e39efe9ea47"
      ],
      "author": {
        "name": "Balazs Scheidler",
        "email": "bazsi@balabit.hu",
        "time": "Thu Oct 21 13:06:43 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Thu Oct 21 13:06:43 2010 +0200"
      },
      "message": "tproxy: fix hash locking issue when using port redirection in __inet_inherit_port()\n\nWhen __inet_inherit_port() is called on a tproxy connection the wrong locks are\nheld for the inet_bind_bucket it is added to. __inet_inherit_port() made an\nimplicit assumption that the listener\u0027s port number (and thus its bind bucket).\nUnfortunately, if you\u0027re using the TPROXY target to redirect skbs to a\ntransparent proxy that assumption is not true anymore and things break.\n\nThis patch adds code to __inet_inherit_port() so that it can handle this case\nby looking up or creating a new bind bucket for the child socket and updates\ncallers of __inet_inherit_port() to gracefully handle __inet_inherit_port()\nfailing.\n\nReported by and original patch from Stephen Buck \u003cstephen.buck@exinda.com\u003e.\nSee http://marc.info/?t\u003d128169268200001\u0026r\u003d1\u0026w\u003d2 for the original discussion.\n\nSigned-off-by: KOVACS Krisztian \u003chidden@balabit.hu\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "6038f373a3dc1f1c26496e60b6c40b164716f07e",
      "tree": "a0d3bbd026eea41b9fc36b8c722cbaf56cd9f825",
      "parents": [
        "1ec5584e3edf9c4bf2c88c846534d19cf986ba11"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sun Aug 15 18:52:59 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Fri Oct 15 15:53:27 2010 +0200"
      },
      "message": "llseek: automatically add .llseek fop\n\nAll file_operations should get a .llseek operation so we can make\nnonseekable_open the default for future file operations without a\n.llseek pointer.\n\nThe three cases that we can automatically detect are no_llseek, seq_lseek\nand default_llseek. For cases where we can we can automatically prove that\nthe file offset is always ignored, we use noop_llseek, which maintains\nthe current behavior of not returning an error from a seek.\n\nNew drivers should normally not use noop_llseek but instead use no_llseek\nand call nonseekable_open at open time.  Existing drivers can be converted\nto do the same when the maintainer knows for certain that no user code\nrelies on calling seek on the device file.\n\nThe generated code is often incorrectly indented and right now contains\ncomments that clarify for each added line why a specific variant was\nchosen. In the version that gets submitted upstream, the comments will\nbe gone and I will manually fix the indentation, because there does not\nseem to be a way to do that using coccinelle.\n\nSome amount of new code is currently sitting in linux-next that should get\nthe same modifications, which I will do at the end of the merge window.\n\nMany thanks to Julia Lawall for helping me learn to write a semantic\npatch that does all this.\n\n\u003d\u003d\u003d\u003d\u003d begin semantic patch \u003d\u003d\u003d\u003d\u003d\n// This adds an llseek\u003d method to all file operations,\n// as a preparation for making no_llseek the default.\n//\n// The rules are\n// - use no_llseek explicitly if we do nonseekable_open\n// - use seq_lseek for sequential files\n// - use default_llseek if we know we access f_pos\n// - use noop_llseek if we know we don\u0027t access f_pos,\n//   but we still want to allow users to call lseek\n//\n@ open1 exists @\nidentifier nested_open;\n@@\nnested_open(...)\n{\n\u003c+...\nnonseekable_open(...)\n...+\u003e\n}\n\n@ open exists@\nidentifier open_f;\nidentifier i, f;\nidentifier open1.nested_open;\n@@\nint open_f(struct inode *i, struct file *f)\n{\n\u003c+...\n(\nnonseekable_open(...)\n|\nnested_open(...)\n)\n...+\u003e\n}\n\n@ read disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n   *off \u003d E\n|\n   *off +\u003d E\n|\n   func(..., off, ...)\n|\n   E \u003d *off\n)\n...+\u003e\n}\n\n@ read_no_fpos disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ write @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n  *off \u003d E\n|\n  *off +\u003d E\n|\n  func(..., off, ...)\n|\n  E \u003d *off\n)\n...+\u003e\n}\n\n@ write_no_fpos @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ fops0 @\nidentifier fops;\n@@\nstruct file_operations fops \u003d {\n ...\n};\n\n@ has_llseek depends on fops0 @\nidentifier fops0.fops;\nidentifier llseek_f;\n@@\nstruct file_operations fops \u003d {\n...\n .llseek \u003d llseek_f,\n...\n};\n\n@ has_read depends on fops0 @\nidentifier fops0.fops;\nidentifier read_f;\n@@\nstruct file_operations fops \u003d {\n...\n .read \u003d read_f,\n...\n};\n\n@ has_write depends on fops0 @\nidentifier fops0.fops;\nidentifier write_f;\n@@\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n...\n};\n\n@ has_open depends on fops0 @\nidentifier fops0.fops;\nidentifier open_f;\n@@\nstruct file_operations fops \u003d {\n...\n .open \u003d open_f,\n...\n};\n\n// use no_llseek if we call nonseekable_open\n////////////////////////////////////////////\n@ nonseekable1 depends on !has_llseek \u0026\u0026 has_open @\nidentifier fops0.fops;\nidentifier nso ~\u003d \"nonseekable_open\";\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d nso, ...\n+.llseek \u003d no_llseek, /* nonseekable */\n};\n\n@ nonseekable2 depends on !has_llseek @\nidentifier fops0.fops;\nidentifier open.open_f;\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d open_f, ...\n+.llseek \u003d no_llseek, /* open uses nonseekable */\n};\n\n// use seq_lseek for sequential files\n/////////////////////////////////////\n@ seq depends on !has_llseek @\nidentifier fops0.fops;\nidentifier sr ~\u003d \"seq_read\";\n@@\nstruct file_operations fops \u003d {\n...  .read \u003d sr, ...\n+.llseek \u003d seq_lseek, /* we have seq_read */\n};\n\n// use default_llseek if there is a readdir\n///////////////////////////////////////////\n@ fops1 depends on !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier readdir_e;\n@@\n// any other fop is used that changes pos\nstruct file_operations fops \u003d {\n... .readdir \u003d readdir_e, ...\n+.llseek \u003d default_llseek, /* readdir is present */\n};\n\n// use default_llseek if at least one of read/write touches f_pos\n/////////////////////////////////////////////////////////////////\n@ fops2 depends on !fops1 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read.read_f;\n@@\n// read fops use offset\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d default_llseek, /* read accesses f_pos */\n};\n\n@ fops3 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+\t.llseek \u003d default_llseek, /* write accesses f_pos */\n};\n\n// Use noop_llseek if neither read nor write accesses f_pos\n///////////////////////////////////////////////////////////\n\n@ fops4 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !fops3 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\nidentifier write_no_fpos.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n .read \u003d read_f,\n...\n+.llseek \u003d noop_llseek, /* read and write both use no f_pos */\n};\n\n@ depends on has_write \u0026\u0026 !has_read \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write_no_fpos.write_f;\n@@\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+.llseek \u003d noop_llseek, /* write uses no f_pos */\n};\n\n@ depends on has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\n@@\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d noop_llseek, /* read uses no f_pos */\n};\n\n@ depends on !has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\n@@\nstruct file_operations fops \u003d {\n...\n+.llseek \u003d noop_llseek, /* no read or write fn */\n};\n\u003d\u003d\u003d\u003d\u003d End semantic patch \u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "2f34b32977ade4249601f35f7eb0cdd56b4e0f89",
      "tree": "cacdef9003d861cc0b3d5feaf3080ea5cad11ed7",
      "parents": [
        "ecdfbdabbe4e0cf0443cbbea2df1bf51bf67f3f3"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Oct 11 20:44:42 2010 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Oct 12 06:57:43 2010 +0200"
      },
      "message": "dccp: cosmetics - warning format\n\nThis  omits the redundant \"DCCP:\" in warning messages, since DCCP_WARN() already\nechoes the function name, avoiding messages like\n\n   kernel: [10988.766503] dccp_close: DCCP: ABORT -- 209 bytes unread\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "ecdfbdabbe4e0cf0443cbbea2df1bf51bf67f3f3",
      "tree": "1c71220ce0627db499da079eb3d0577c2dd8d064",
      "parents": [
        "d196c9a5d4e150cdff675662214c80c69b906958"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Oct 11 20:41:13 2010 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Oct 12 06:57:43 2010 +0200"
      },
      "message": "dccp: schedule an Ack when receiving timestamps\n\nThis schedules an Ack when receiving a timestamp, exploiting the\nexisting inet_csk_schedule_ack() function, saving one case in the\n`dccp_ack_pending()\u0027 function.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "d196c9a5d4e150cdff675662214c80c69b906958",
      "tree": "0819ea92cdfe9c2ae9716a3eef920849a98c01b9",
      "parents": [
        "baf9e782e1dc4991edecfa3b8700cf8739c40259"
      ],
      "author": {
        "name": "Ivo Calado",
        "email": "ivocalado@embedded.ufcg.edu.br",
        "time": "Mon Oct 11 20:40:04 2010 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Oct 12 06:57:42 2010 +0200"
      },
      "message": "dccp: generalise data-loss condition\n\nThis patch generalises the task of determining data loss from RFC 4340, 7.7.1.\n\nLet S_A, S_B be sequence numbers such that S_B is \"after\" S_A, and let\nN_B be the NDP count of packet S_B. Then, using modulo-2^48 arithmetic,\n D \u003d S_B - S_A - 1  is an upper bound of the number of lost data packets,\n D - N_B            is an approximation of the number of lost data packets\n                    (there are cases where this is not exact).\n\nThe patch implements this as\n dccp_loss_count(S_A, S_B, N_B) :\u003d max(S_B - S_A - 1 - N_B, 0)\n\nSigned-off-by: Ivo Calado \u003civocalado@embedded.ufcg.edu.br\u003e\nSigned-off-by: Erivaldo Xavier \u003cdesadoc@gmail.com\u003e\nSigned-off-by: Leandro Sales \u003cleandroal@gmail.com\u003e\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "baf9e782e1dc4991edecfa3b8700cf8739c40259",
      "tree": "1715d02df95b82af9eb79633d9a498084fd678c3",
      "parents": [
        "93344af44c0f649582bf1e3b5ecc45b3d19e98c2"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Oct 11 20:37:38 2010 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Oct 12 06:57:41 2010 +0200"
      },
      "message": "dccp: remove unused argument in CCID tx function\n\nThis removes the argument `more\u0027 from ccid_hc_tx_packet_sent, since it was\nnowhere used in the entire code.\n\n(Btw, this argument was not even used in the original KAME code where the\n function initially came from; compare the variable moreToSend in the\n freebsd61-dccp-kame-28.08.2006.patch kept by Emmanuel Lochin.)\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "93344af44c0f649582bf1e3b5ecc45b3d19e98c2",
      "tree": "582193ad30a6b0f2523b667bd0a39ca70d9dcba0",
      "parents": [
        "0b53d4604ac2b4f2faa9a62a04ea9b383ad2efe0"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Oct 11 20:36:33 2010 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Oct 12 06:57:40 2010 +0200"
      },
      "message": "dccp: merge now-reduced connect_init() function\n\nAfter moving the assignment of GAR/ISS from dccp_connect_init() to\ndccp_transmit_skb(), the former function becomes very small, so that\na merger with dccp_connect() suggests itself.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "0b53d4604ac2b4f2faa9a62a04ea9b383ad2efe0",
      "tree": "70ed0d136ef719f33655f78b31650d1c88cd3e00",
      "parents": [
        "0ed8ddf4045fcfcac36bad753dc4046118c603ec"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Oct 11 20:35:40 2010 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Oct 12 06:57:40 2010 +0200"
      },
      "message": "dccp: fix the adjustments to AWL and SWL\n\nThis fixes a problem and a potential loophole with regard to seqno/ackno\nvalidity: currently the initial adjustments to AWL/SWL are only performed\nonce at the begin of the connection, during the handshake.\n\nSince the Sequence Window feature is always greater than Wmin\u003d32 (7.5.2),\nit is however necessary to perform these adjustments at least for the first\nW/W\u0027 (variables as per 7.5.1) packets in the lifetime of a connection.\n\nThis requirement is complicated by the fact that W/W\u0027 can change at any time\nduring the lifetime of a connection.\n\nTherefore it is better to perform that safety check each time SWL/AWL are\nupdated, as implemented by the patch.\n\nA second problem solved by this patch is that the remote/local Sequence Window\nfeature values (which set the bounds for AWL/SWL/SWH) are undefined until the\nfeature negotiation has completed.\n\nDuring the initial handshake we have more stringent sequence number protection;\nthe changes added by this patch effect that {A,S}W{L,H} are within the correct\nbounds at the instant that feature negotiation completes (since the SeqWin\nfeature activation handlers call dccp_update_gsr/gss()).\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "1f4f0f645cc1d7f1187fcdb0ac22c2e69bd68050",
      "tree": "6db6ea3a0bb27188d06db6bbf093842d7007f836",
      "parents": [
        "10e7e9c44d442275951d1cfc892c1c6606c85c94"
      ],
      "author": {
        "name": "stephen hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Tue Oct 05 04:24:09 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Oct 06 23:12:07 2010 -0700"
      },
      "message": "dccp: Kill dead code and add static markers.\n\nRemove dead code and make some functions static.\nCompile tested only.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a02cec2155fbea457eca8881870fd2de1a4c4c76",
      "tree": "cfbfc4b32bfe10f9cd803d46c31607d13f1858f5",
      "parents": [
        "6a08d194ee40806e0ccd5f36ed768e64cbfc979f"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Sep 22 20:43:57 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 23 14:33:39 2010 -0700"
      },
      "message": "net: return operator cleanup\n\nChange \"return (EXPR);\" to \"return EXPR;\"\n\nreturn is not a function, parentheses are not required.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "536bb20b45dee3f9b77b0d250f8ed0733a5cb025",
      "tree": "cb28f25c7c4c70f6d3c110fd7ddcf0666a5b04af",
      "parents": [
        "792e6d3389061ad449429b9ba228eb758c247ea0"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Sep 19 20:14:23 2010 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Sep 21 12:14:26 2010 +0200"
      },
      "message": "dccp ccid-3: Remove redundant \u0027options_received\u0027 struct\n\nThe `options_received\u0027 struct is redundant, since it re-duplicates the existing\n`p\u0027 and `x_recv\u0027 fields. This patch removes the sub-struct and migrates the\nformat conversion operations to ccid3_hc_tx_parse_options().\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "792e6d3389061ad449429b9ba228eb758c247ea0",
      "tree": "31a238fb2fc28e465e95b7d98b5e0698461cdadf",
      "parents": [
        "80763dfbac4ed1e6dfe6ec08ef748e0e9aec3260"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Sep 19 20:10:52 2010 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Sep 21 12:14:26 2010 +0200"
      },
      "message": "dccp tfrc/ccid-3: computing the loss rate from the Loss Event Rate\n\nThis adds a function to take care of the following, separate cases occurring in\nthe computation of the Loss Rate p:\n\n * 1/(2^32-1) is mapped into 0% as per RFC 4342, 8.5;\n * 1/0        is mapped into 100%, the maximum;\n * to avoid that p \u003d 1/x is rounded down to 0 when x is very large, since this\n   means accidentally re-entering slow-start indicated by p \u003d\u003d 0, the minimum\n   resolution value of p is now returned instead;\n * a bug in ccid3_hc_rx_getsockopt is fixed: 1/0 was mapped into ~0U.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "80763dfbac4ed1e6dfe6ec08ef748e0e9aec3260",
      "tree": "fc86c8b1b6806234115e4dbe792070045056c135",
      "parents": [
        "a18213d1d2a469956845b437f5d1d0401ab22e8b"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Sep 19 20:08:24 2010 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Sep 21 12:14:26 2010 +0200"
      },
      "message": "dccp ccid-3: remove dead states\n\nThis patch is thanks to an investigation by Leandro Sales de Melo and his\ncolleagues. They worked out two state diagrams which highlight the fact that\nthe xxx_TERM states in CCID-3/4 are in fact not necessary.\n\nAnd this can be confirmed by in turn looking at the code: the xxx_TERM states\nare only ever set in ccid3_hc_{rx,tx}_exit(): when CCID-3 sets the state\nto xxx_TERM, it is at a time where no more processing should be going on,\nhence it is not necessary to introduce a dedicated exit state - this is already\nimplied by unloading the CCID.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "a18213d1d2a469956845b437f5d1d0401ab22e8b",
      "tree": "8a0635d19a9e58cf7861666eefd07e949db09e3f",
      "parents": [
        "4874c131d79695e3d372042781a408a1a8a762d8"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Sep 19 20:08:00 2010 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Sep 21 12:14:25 2010 +0200"
      },
      "message": "dccp: Replace magic CCID-specific numbers by symbolic constants\n\nThe constants DCCPO_{MIN,MAX}_CCID_SPECIFIC are nowhere used in the code, but\ninstead for the CCID-specific options numbers are used.\n\nThis patch unifies the use of CCID-specific option numbers, by adding symbolic\nnames reflecting the definitions in RFC 4340, 10.3.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "4874c131d79695e3d372042781a408a1a8a762d8",
      "tree": "e3c6bf89f191b47e019f063d16c3e5d6c4fc0623",
      "parents": [
        "462fb2af9788a82a534f8184abfde31574e1cfa0"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Sep 19 20:06:50 2010 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Sep 21 12:14:25 2010 +0200"
      },
      "message": "dccp: Add packet type information to CCID-specific option parsing\n\nThis\n 1. adds packet type information to ccid_hc_{rx,tx}_parse_options(). This is\n    necessary, since table 3 in RFC 4340, 5.8 leaves it to the CCIDs to state\n    which options may (not) appear on what packet type.\n\n 2. adds such a check for CCID-3\u0027s {Loss Event, Receive} Rate as specified in\n    RFC 4340 8.3 (\"Receive Rate options MUST NOT be sent on DCCP-Data packets\")\n    and 8.5 (\"Loss Event Rate options MUST NOT be sent on DCCP-Data packets\").\n\n 3. removes an unused argument `idx\u0027 from ccid_hc_{rx,tx}_parse_options(). This\n    is also no longer necessary, since the CCID-specific option-parsing routines\n    are passed every single parameter of the type-length-value option encoding.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "37efb03fbd0935f5f85a0538c46b53be5cf40504",
      "tree": "c0335ed0e231bbf081442d380e5dd945d51e0e80",
      "parents": [
        "d2c726309d88df3c5568486e4b5b9e4c3150903f"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Sep 14 20:21:29 2010 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Sep 15 12:36:02 2010 +0200"
      },
      "message": "dccp ccid-3: Simplify and consolidate tx_parse_options\n\nThis simplifies and consolidates the TX option-parsing code:\n\n 1. The Loss Intervals option is not currently used, so dead code related to\n    this option is removed. I am aware of no plans to support the option, but\n    if someone wants to implement it (e.g. for inter-op tests), it is better\n    to start afresh than having to also update currently unused code.\n\n 2. The Loss Event and Receive Rate options have a lot of code in common (both\n    are 32 bit, both have same length etc.), so this is consolidated.\n\n 3. The test against GSR is not necessary, because\n    - on first loading CCID3, ccid_new() zeroes out all fields in the socket;\n    - ccid3_hc_tx_packet_recv() treats 0 and ~0U equivalently, due to\n\n\tpinv \u003d opt_recv-\u003eccid3or_loss_event_rate;\n\tif (pinv \u003d\u003d ~0U || pinv \u003d\u003d 0)\n\t\thctx-\u003ep \u003d 0;\n\n    - as a result, the sequence number field is removed from opt_recv.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "d2c726309d88df3c5568486e4b5b9e4c3150903f",
      "tree": "f4aab69a2cd3f76a1cf483a20eb11295a2ea1395",
      "parents": [
        "20cbd3e120a0c20bebe420e1fed0e816730bb988"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Sep 14 20:18:00 2010 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Sep 15 12:36:02 2010 +0200"
      },
      "message": "dccp ccid-3: remove buggy RTT-sampling history lookup\n\nThis removes the RTT-sampling function tfrc_tx_hist_rtt(), since\n\n 1. it suffered from complex passing of return values (the return value both\n    indicated successful lookup while the value doubled as RTT sample);\n\n 2. when for some odd reason the sample value equalled 0, this triggered a bug\n    warning about \"bogus Ack\", due to the ambiguity of the return value;\n\n 3. on a passive host which has not sent anything the TX history is empty and\n    thus will lead to unwanted \"bogus Ack\" warnings such as\n    ccid3_hc_tx_packet_recv: server(e7b7d518): DATAACK with bogus ACK-28197148\n    ccid3_hc_tx_packet_recv: server(e7b7d518): DATAACK with bogus ACK-26641606.\n\nThe fix is to replace the implicit encoding by performing the steps manually.\n\nFurthermore, the \"bogus Ack\" warning has been removed, since it can actually be\ntriggered due to several reasons (network reordering, old packet, (3) above),\nhence it is not very useful.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "20cbd3e120a0c20bebe420e1fed0e816730bb988",
      "tree": "1c58cf0b974fd0bb4b5a17846e4711e109901096",
      "parents": [
        "068e8a30320e33b1f8d15df9eaef84f04258f96d"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Sep 14 20:16:59 2010 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Sep 15 12:36:01 2010 +0200"
      },
      "message": "dccp ccid-3: A lower bound for the inter-packet scheduling algorithm\n\nThis fixes a subtle bug in the calculation of the inter-packet gap and shows\nthat t_delta, as it is currently used, is not needed.\n\nThe algorithm from RFC 5348, 8.3 below continually computes a send time t_nom,\nwhich is initialised with the current time t_now; t_gran \u003d 1E6 / HZ specifies\nthe scheduling granularity, s the packet size, and X the sending rate:\n\n  t_distance \u003d t_nom - t_now;\t\t// in microseconds\n  t_delta    \u003d min(t_ipi, t_gran) / 2;\t// `delta\u0027 parameter in microseconds\n\n  if (t_distance \u003e\u003d t_delta) {\n\treschedule after (t_distance / 1000) milliseconds;\n  } else {\n  \tt_ipi  \u003d s / X;\t\t\t// inter-packet interval in usec\n\tt_nom +\u003d t_ipi;\t\t\t// compute the next send time\n\tsend packet now;\n  }\n\nProblem:\n--------\nRescheduling requires a conversion into milliseconds (sk_reset_timer()). The\nhighest jiffy resolution with HZ\u003d1000 is 1 millisecond, so using a higher\ngranularity does not make much sense here.\n\nAs a consequence, values of t_distance \u003c 1000 are truncated to 0. This issue\nhas so far been resolved by using instead\n\n  if (t_distance \u003e\u003d t_delta + 1000)\n\treschedule after (t_distance / 1000) milliseconds;\n\nThis is unnecessarily large, a lower bound is t_delta\u0027 \u003d max(t_delta, 1000).\nAnd it implies a further simplification:\n\n a) when HZ \u003e\u003d 500, then t_delta \u003c\u003d t_gran/2 \u003d 10^6/(2*HZ) \u003c\u003d 1000, so that\n    t_delta\u0027 \u003d MAX(1000, t_delta) \u003d 1000 (constant value);\n\n b) when HZ \u003c 500, then t_delta \u003d 1/2*MIN(rtt, t_ipi, t_gran) \u003c\u003d t_gran/2,\n    so that 1000 \u003c\u003d t_delta\u0027 \u003c\u003d t_gran/2.\n\nThe maximum error of using a constant t_delta in (b) is less than half a jiffy.\n\nFix:\n----\nThe patch replaces t_delta with a constant, whose value depends on CONFIG_HZ,\nchanging the above algorithm to:\n\n  if (t_distance \u003e\u003d t_delta\u0027)\n\treschedule after (t_distance / 1000) milliseconds;\n\nwhere t_delta\u0027 \u003d 10^6/(2*HZ) if HZ \u003c 500, and t_delta\u0027 \u003d 1000 otherwise.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "89858ad14307a398961a0f1414b04053c1475e4f",
      "tree": "860eca4c0fb4c9c470d407407ba051ae814c9dfa",
      "parents": [
        "4886fcad6e12572afbd230dfab1b268eace20d6d"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Aug 29 19:23:14 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Aug 30 13:45:28 2010 -0700"
      },
      "message": "dccp ccid-3: use per-route RTO or TCP RTO as fallback\n\nThis makes RTAX_RTO_MIN also available to CCID-3, replacing the compile-time\nRTO lower bound with a per-route tunable value.\n\nThe original Kconfig option solved the problem that a very low RTT (in the\norder of HZ) can trigger too frequent and unnecessary reductions of the\nsending rate.\n\nThis tunable does not affect the initial RTO value of 2 seconds specified in\nRFC 5348, section 4.2 and Appendix B. But like the hardcoded Kconfig value,\nit allows to adapt to network conditions.\n\nThe same effect as the original Kconfig option of 100ms is now achieved by\n\n\u003e ip route replace to unicast 192.168.0.0/24 rto_min 100j dev eth0\n\n(assuming HZ\u003d1000).\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4886fcad6e12572afbd230dfab1b268eace20d6d",
      "tree": "c0ac7dc930a8de315083ec3882ff78a325747e70",
      "parents": [
        "22b71c8f4f3db8df92f5e7b081c265bc56c0bd2f"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Aug 29 19:23:13 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Aug 30 13:45:27 2010 -0700"
      },
      "message": "dccp ccid-2: Share TCP\u0027s minimum RTO code\n\nUsing a fixed RTO_MIN of 0.2 seconds was found to cause problems for CCID-2\nover 802.11g: at least once per session there was a spurious timeout. It\nhelped to then increase the the value of RTO_MIN over this link.\n\nSince the problem is the same as in TCP, this patch makes the solution from\ncommit \"05bb1fad1cde025a864a90cfeb98dcbefe78a44a\"\n       \"[TCP]: Allow minimum RTO to be configurable via routing metrics.\"\navailable to DCCP.\n\nThis avoids reinventing the wheel, so that e.g. the following works in the\nexpected way now also for CCID-2:\n\n\u003e ip route change 10.0.0.2 rto_min 800 dev ath0\n\nLuckily this useful rto_min function was recently moved to net/tcp.h,\nwhich simplifies sharing code originating from TCP.\n\nDocumentation also updated (plus minor whitespace fixes).\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "22b71c8f4f3db8df92f5e7b081c265bc56c0bd2f",
      "tree": "b913f63369b09ad703ed52a42b367455785ef3af",
      "parents": [
        "d26eeb07fd02de31848b59d19687daff0e93532f"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Aug 29 19:23:12 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Aug 30 13:45:26 2010 -0700"
      },
      "message": "tcp/dccp: Consolidate common code for RFC 3390 conversion\n\nThis patch consolidates initial-window 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\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d26eeb07fd02de31848b59d19687daff0e93532f",
      "tree": "8017b04b5e2aacb9d73334b4610d623c28a957d5",
      "parents": [
        "d82b6f85c1d73340ef4a26bd0b247ac14610cd83"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Aug 29 19:23:11 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Aug 30 13:45:26 2010 -0700"
      },
      "message": "dccp ccid-2: Remove wrappers around sk_{reset,stop}_timer()\n\nThis removes the wrappers around the sk timer functions, since not much is\ngained from using them: the BUG_ON in start_rto_timer will never trigger\nsince that function is called only if:\n\n * the RTO timer expires (rto_expire, and then timer_pending() is false);\n * in tx_packet_sent only if !timer_pending() (BUG_ON is redundant here);\n * previously in new_ack, after stopping the timer (timer_pending() false).\n\nRemoving the wrappers also clears the way for eventually replacing the\nRTO timer with the icsk-retransmission-timer, as it is already part of the\nDCCP socket.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d82b6f85c1d73340ef4a26bd0b247ac14610cd83",
      "tree": "633b7aa259c75a1620783cd65130436b5179a9fa",
      "parents": [
        "dca43c75e7e545694a9dd6288553f55c53e2a3a3"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Aug 29 19:23:10 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Aug 30 13:45:25 2010 -0700"
      },
      "message": "dccp ccid-2: Use u32 timestamps uniformly\n\nSince CCID-2 is de facto a mini implementation of TCP, it makes sense to share\nas much code as possible.\n\nHence this patch aligns CCID-2 timestamping with TCP timestamping.\nThis also halves the space consumption (on 64-bit systems).\n\nThe necessary include file \u003cnet/tcp.h\u003e is already included by way of\nnet/dccp.h. Redundant includes have been removed.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "231cc2aaf14bad3b2325be0b19b8385ff5e75485",
      "tree": "0836d99d5c6fedca5793db99799a41ba35863b38",
      "parents": [
        "c38c92a84a9291a3d0eaf6a13650a11961ae964f"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Aug 22 19:41:40 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Aug 23 20:13:31 2010 -0700"
      },
      "message": "dccp ccid-2: Replace broken RTT estimator with better algorithm\n\nThe current CCID-2 RTT estimator code is in parts broken and lags behind the\nsuggestions in RFC2988 of using scaled variants for SRTT/RTTVAR.\n\nThat code is replaced by the present patch, which reuses the Linux TCP RTT\nestimator code.\n\nFurther details:\n----------------\n 1. The minimum RTO of previously one second has been replaced with TCP\u0027s, since\n    RFC4341, sec. 5 says that the minimum of 1 sec. (suggested in RFC2988, 2.4)\n    is not necessary. Instead, the TCP_RTO_MIN is used, which agrees with DCCP\u0027s\n    concept of a default RTT (RFC 4340, 3.4).\n 2. The maximum RTO has been set to DCCP_RTO_MAX (64 sec), which agrees with\n    RFC2988, (2.5).\n 3. De-inlined the function ccid2_new_ack().\n 4. Added a FIXME: the RTT is sampled several times per Ack Vector, which will\n    give the wrong estimate. It should be replaced with one sample per Ack.\n    However, at the moment this can not be resolved easily, since\n    - it depends on TX history code (which also needs some work),\n    - the cleanest solution is not to use the `sent\u0027 time at all (saves 4 bytes\n      per entry) and use DCCP timestamps / elapsed time to estimated the RTT,\n      which however is non-trivial to get right (but needs to be done).\n\nReasons for reusing the Linux TCP estimator algorithm:\n------------------------------------------------------\nSome time was spent to find a better alternative, using basic RFC2988 as a first\nstep. Further analysis and experimentation showed that the Linux TCP RTO\nestimator is superior to a basic RFC2988 implementation. A summary is on\nhttp://www.erg.abdn.ac.uk/users/gerrit/dccp/notes/ccid2/rto_estimator/\n\nIn addition, this estimator fared well in a recent empirical evaluation:\n\n    Rewaskar, Sushant, Jasleen Kaur and F. Donelson Smith.\n    A Performance Study of Loss Detection/Recovery in Real-world TCP\n    Implementations. Proceedings of 15th IEEE International\n    Conference on Network Protocols (ICNP-07), 2007.\n\nThus there is significant benefit in reusing the existing TCP code.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c38c92a84a9291a3d0eaf6a13650a11961ae964f",
      "tree": "10ecb23a7da317f7c18d1388bb1b97f3e82b65de",
      "parents": [
        "30564e355511b434613aa42375317b5a07fc9f23"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Aug 22 19:41:39 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Aug 23 20:13:31 2010 -0700"
      },
      "message": "dccp ccid-2: Simplify dec_pipe and rearming of RTO timer\n\nThis removes the dec_pipe function and improves the way the RTO timer is rearmed\nwhen a new acknowledgment comes in.\n\nDetails and justification for removal:\n--------------------------------------\n 1) The BUG_ON in dec_pipe is never triggered: pipe is only decremented for TX\n    history entries between tail and head, for which it had previously been\n    incremented in tx_packet_sent; and it is not decremented twice for the same\n    entry, since it is\n    - either decremented when a corresponding Ack Vector cell in state 0 or 1\n      was received (and then ccid2s_acked\u003d\u003d1),\n    - or it is decremented when ccid2s_acked\u003d\u003d0, as part of the loss detection\n      in tx_packet_recv (and hence it can not have been decremented earlier).\n\n 2) Restarting the RTO timer happens for every single entry in each Ack Vector\n    parsed by tx_packet_recv (according to RFC 4340, 11.4 this can happen up to\n    16192 times per Ack Vector).\n\n 3) The RTO timer should not be restarted when all outstanding data has been\n    acknowledged. This is currently done similar to (2), in dec_pipe, when\n    pipe has reached 0.\n\nThe patch onsolidates the code which rearms the RTO timer, combining the\nsegments from new_ack and dec_pipe. As a result, the code becomes clearer\n(compare with tcp_rearm_rto()).\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "30564e355511b434613aa42375317b5a07fc9f23",
      "tree": "e76cdb56159582a9f7979697f3661bdf4b1d3cb4",
      "parents": [
        "51c22bb510fefbb1a87c02dbd835383e6e7e3d36"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Aug 22 19:41:38 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Aug 23 20:13:30 2010 -0700"
      },
      "message": "dccp ccid-2: Remove redundant sanity tests\n\nThis removes the ccid2_hc_tx_check_sanity function: it is redundant.\n\nDetails:\n\nThe tx_check_sanity function performs three tests:\n 1) it checks that the circular TX list is sorted\n    - in ascending order of sequence number (ccid2s_seq)\n    - and time (ccid2s_sent),\n    - in the direction from `tail\u0027 (hctx_seqt) to `head\u0027 (hctx_seqh);\n 2) it ensures that the entire list has the length seqbufc * CCID2_SEQBUF_LEN;\n 3) it ensures that pipe equals the number of packets that were not\n    marked `acked\u0027 (ccid2s_acked) between `tail\u0027 and `head\u0027.\n\nThe following argues that each of these tests is redundant, this can be verified\nby going through the code.\n\n(1) is not necessary, since both time and GSS increase from one packet to the\nnext, so that subsequent insertions in tx_packet_sent (which advance the `head\u0027\npointer) will be in ascending order of time and sequence number.\n\nIn (2), the length of the list is always equal to seqbufc times CCID2_SEQBUF_LEN\n(set to 1024) unless allocation caused an earlier failure, because:\n * at initialisation (tx_init), there is one chunk of size 1024 and seqbufc\u003d1;\n * subsequent calls to tx_alloc_seq take place whenever head-\u003enext \u003d\u003d tail in\n   tx_packet_sent; then a new chunk of size 1024 is inserted between head and\n   tail, and seqbufc is incremented by one.\n\nTo show that (3) is redundant requires looking at two cases.\n\nThe `pipe\u0027 variable of the TX socket is incremented only in tx_packet_sent, and\ndecremented in tx_packet_recv.  When head \u003d\u003d tail (TX history empty) then pipe\nshould be 0, which is the case directly after initialisation and after a\nretransmission timeout has occurred (ccid2_hc_tx_rto_expire).\n\nThe first case involves parsing Ack Vectors for packets recorded in the live\nportion of the buffer, between tail and head. For each packet marked by the\nreceiver as received (state 0) or ECN-marked (state 1), pipe is decremented by\none, so for all such packets the BUG_ON in tx_check_sanity will not trigger.\n\nThe second case is the loss detection in the second half of tx_packet_recv,\nbelow the comment \"Check for NUMDUPACK\".\n\nThe first while-loop here ensures that the sequence number of `seqp\u0027 is either\nabove or equal to `high_ack\u0027, or otherwise equal to the highest sequence number\nsent so far (of the entry head-\u003eprev, as head points to the next unsent entry).\nThe next while-loop (\"while (1)\") counts the number of acked packets starting\nfrom that position of seqp, going backwards in the direction from head-\u003eprev to\ntail. If NUMDUPACK\u003d3 such packets were counted within this loop, `seqp\u0027 points\nto the last acknowledged packet of these, and the \"if (done \u003d\u003d NUMDUPACK)\" block\nis entered next.\nThe while-loop contained within that block in turn traverses the list backwards,\nfrom head to tail; the position of `seqp\u0027 is saved in the variable `last_acked\u0027.\nFor each packet not marked as `acked\u0027, a congestion event is triggered within\nthe loop, and pipe is decremented. The loop terminates when `seqp\u0027 has reached\n`tail\u0027, whereupon tail is set to the position previously stored in `last_acked\u0027.\nThus, between `last_acked\u0027 and the previous position of `tail\u0027,\n - pipe has been decremented earlier if the packet was marked as state 0 or 1;\n - pipe was decremented if the packet was not marked as acked.\nThat is, pipe has been decremented by the number of packets between `last_acked\u0027\nand the previous position of `tail\u0027. As a consequence, pipe now again reflects\nthe number of packets which have not (yet) been acked between the new position\nof tail (at `last_acked\u0027) and head-\u003eprev, or 0 if head\u003d\u003dtail. The result is that\nthe BUG_ON condition in check_sanity will also not be triggered, hence the test\n(3) is also redundant.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "51c22bb510fefbb1a87c02dbd835383e6e7e3d36",
      "tree": "16c792c63bdf6de0fd92c27f2819161edd15927e",
      "parents": [
        "67b67e365f07d6dc70f3bb266af3268bac0a4836"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Aug 22 19:41:37 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Aug 23 20:13:30 2010 -0700"
      },
      "message": "dccp ccid-3: No more CCID control blocks in LISTEN state\n\nThe CCIDs are activated as last of the features, at the end of the handshake,\nwere the LISTEN state of the master socket is inherited into the server\nstate of the child socket. Thus, the only states visible to CCIDs now are\nOPEN/PARTOPEN, and the closing states.\n\nThis allows to remove tests which were previously necessary to protect\nagainst referencing a socket in the listening state (in CCID-3), but which\nnow have become redundant.\n\nAs a further byproduct of enabling the CCIDs only after the connection has been\nfully established, several typecast-initialisations of ccid3_hc_{rx,tx}_sock\ncan now be eliminated:\n * the CCID is loaded, so it is not necessary to test if it is NULL,\n * if it is possible to load a CCID and leave the private area NULL, then this\n    is a bug, which should crash loudly - and earlier,\n * the test for state\u003d\u003dOPEN || state\u003d\u003dPARTOPEN now reduces only to the closing\n   phase (e.g. when the node has received an unexpected Reset).\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nAcked-by: Ian McDonald \u003cian.mcdonald@jandi.co.nz\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "67b67e365f07d6dc70f3bb266af3268bac0a4836",
      "tree": "58cc9640f8859c1e13262267efaa507a035c3a77",
      "parents": [
        "21dc330157454046dd7c494961277d76e1c957fe"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Aug 22 19:41:36 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Aug 23 20:13:29 2010 -0700"
      },
      "message": "ccid: ccid-2/3 code cosmetics\n\nThis patch collects cosmetics-only changes to separate these from\ncode changes:\n * update with regard to CodingStyle and whitespace changes,\n * documentation:\n   - adding/revising comments,\n   - remove CCID-3 RX socket documentation which is either\n     duplicate or refers to fields that no longer exist,\n * expand embedded tfrc_tx_info struct inline for consistency,\n   removing indirections via #define.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8e64159dfb480b30233d947d5a3cd793dfea738f",
      "tree": "81e564d8f12fe7c8a7b9819572a1f1787c1d224e",
      "parents": [
        "bfc978fa5f3005e5dfb39c52393c3339f4f00233"
      ],
      "author": {
        "name": "Kulikov Vasiliy",
        "email": "segooon@gmail.com",
        "time": "Sat Jul 17 05:21:00 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jul 18 15:07:14 2010 -0700"
      },
      "message": "net: dccp: fix sign bug\n\n\u0027gap\u0027 is unsigned, so this code is wrong:\n\n    gap \u003d -new_head;\n    ...\n    if (gap \u003e 0) { ... }\n\nMake \u0027gap\u0027 signed.\n\nThe semantic patch that finds this problem (many false-positive results):\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@ r1 @\nidentifier f;\n@@\nint f(...) { ... }\n\n@@\nidentifier r1.f;\ntype T;\nunsigned T x;\n@@\n\n*x \u003d f(...)\n ...\n*x \u003e 0\n\nSigned-off-by: Kulikov Vasiliy \u003csegooon@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1823e4c80eeae2a774c75569ce3035070e5ee009",
      "tree": "bdc1bdf4a67027193312ad584924ca8a986a064c",
      "parents": [
        "5eaa0bd81f93225b6d1972b373ed00ca763052b2"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Jun 22 20:58:41 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jun 25 21:33:17 2010 -0700"
      },
      "message": "snmp: add align parameter to snmp_mib_init()\n\nIn preparation for 64bit snmp counters for some mibs,\nadd an \u0027align\u0027 parameter to snmp_mib_init(), instead\nof assuming mibs only contain \u0027unsigned long\u0027 fields.\n\nCallers can use __alignof__(type) to provide correct\nalignment.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCC: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nCC: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nCC: Hideaki YOSHIFUJI \u003cyoshfuji@linux-ipv6.org\u003e\nCC: Vlad Yasevich \u003cvladislav.yasevich@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "59b80802a8a18b64d38b51aa168253684b2649d5",
      "tree": "b6be92f705d00796733e03e43041605b74d0ce5f",
      "parents": [
        "a7d13fbf85375698879d16f118af77fbfcc2de44"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Jun 22 01:14:35 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jun 25 21:33:15 2010 -0700"
      },
      "message": "dccp: make implementation of Syn-RTT symmetric\n\nThis patch is thanks to Andre Noll who reported the issue and helped testing.\n\nThe Syn-RTT sampled during the initial handshake currently only works for\nthe client sending the DCCP-Request. TFRC penalizes the absence of an RTT\nsample with a very slow initial speed (1 packet per second), which delays\nslow-start significantly, resulting in sluggish performance.\n\nThis patch mirrors the \"Syn RTT\" principle by adding a timestamp also onto\nthe DCCP-Response, producing an RTT sample  when the (Data)Ack completing\nthe handshake arrives.\n\nAlso changed the documentation to \u0027TFRC\u0027 since Syn RTTs are also used by CCID-4.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a7d13fbf85375698879d16f118af77fbfcc2de44",
      "tree": "5b8220160aa441847e3f5f10c1a5086229e8dfa2",
      "parents": [
        "87cad5c385877ce45244886748564672fd6db035"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Jun 22 01:14:34 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jun 25 21:33:14 2010 -0700"
      },
      "message": "dccp: remove unused function argument\n\nThis removes an unused \u0027sk\u0027 argument from several option-inserting functions.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d8d1f30b95a635dbd610dcc5eb641aca8f4768cf",
      "tree": "71424d82a96facd5fcf05cc769ef2ba52b584aeb",
      "parents": [
        "592fcb9dfafaa02dd0edc207bf5d3a0ee7a1f8df"
      ],
      "author": {
        "name": "Changli Gao",
        "email": "xiaosuo@gmail.com",
        "time": "Thu Jun 10 23:31:35 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jun 10 23:31:35 2010 -0700"
      },
      "message": "net-next: remove useless union keyword\n\nremove useless union keyword in rtable, rt6_info and dn_route.\n\nSince there is only one member in a union, the union keyword isn\u0027t useful.\n\nSigned-off-by: Changli Gao \u003cxiaosuo@gmail.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "20c59de2e6b6bc74bbf714dcd4e720afe8d516cf",
      "tree": "45e5c62e286368f8259b844cb7cf796d19066fb0",
      "parents": [
        "d92222e27fdc98d73df25f3d49fb1ff3a3369bec"
      ],
      "author": {
        "name": "Arnaud Ebalard",
        "email": "arno@natisbad.org",
        "time": "Tue Jun 01 21:35:01 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 02 07:08:31 2010 -0700"
      },
      "message": "ipv6: Refactor update of IPv6 flowi destination address for srcrt (RH) option\n\nThere are more than a dozen occurrences of following code in the\nIPv6 stack:\n\n    if (opt \u0026\u0026 opt-\u003esrcrt) {\n            struct rt0_hdr *rt0 \u003d (struct rt0_hdr *) opt-\u003esrcrt;\n            ipv6_addr_copy(\u0026final, \u0026fl.fl6_dst);\n            ipv6_addr_copy(\u0026fl.fl6_dst, rt0-\u003eaddr);\n            final_p \u003d \u0026final;\n    }\n\nReplace those with a helper. Note that the helper overrides final_p\nin all cases. This is ok as final_p was previously initialized to\nNULL when declared.\n\nSigned-off-by: Arnaud Ebalard \u003carno@natisbad.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "042604d2a3ee59c84f8293988caf35bac5de9eb3",
      "tree": "e34f3eb3211ed0c6ab69cda79ebe66e6752d106d",
      "parents": [
        "c146fc9fc9bc1dc0f629fe83d49f32ab0f11bfdc"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Fri May 21 22:25:19 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 31 00:24:14 2010 -0700"
      },
      "message": "net/dccp: Use memdup_user\n\nUse memdup_user when user data is immediately copied into the\nallocated region.\n\nThe semantic patch that makes this change is as follows:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@@\nexpression from,to,size,flag;\nposition p;\nidentifier l1,l2;\n@@\n\n-  to \u003d \\(kmalloc@p\\|kzalloc@p\\)(size,flag);\n+  to \u003d memdup_user(from,size);\n   if (\n-      to\u003d\u003dNULL\n+      IS_ERR(to)\n                 || ...) {\n   \u003c+... when !\u003d goto l1;\n-  -ENOMEM\n+  PTR_ERR(to)\n   ...+\u003e\n   }\n-  if (copy_from_user(to, from, size) !\u003d 0) {\n-    \u003c+... when !\u003d goto l2;\n-    -EFAULT\n-    ...+\u003e\n-  }\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nAcked-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b1cdc4670b9508fcd47a15fbd12f70d269880b37",
      "tree": "fea9e2650170886d539488f8b1e064f6ca60ad36",
      "parents": [
        "ce7d0226198aac42ed311dd2783232adc16b296d",
        "f925b1303e0672effc78547353bd2ddfe11f5b5f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 25 16:59:51 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 25 16:59:51 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (63 commits)\n  drivers/net/usb/asix.c: Fix pointer cast.\n  be2net: Bug fix to avoid disabling bottom half during firmware upgrade.\n  proc_dointvec: write a single value\n  hso: add support for new products\n  Phonet: fix potential use-after-free in pep_sock_close()\n  ath9k: remove VEOL support for ad-hoc\n  ath9k: change beacon allocation to prefer the first beacon slot\n  sock.h: fix kernel-doc warning\n  cls_cgroup: Fix build error when built-in\n  macvlan: do proper cleanup in macvlan_common_newlink() V2\n  be2net: Bug fix in init code in probe\n  net/dccp: expansion of error code size\n  ath9k: Fix rx of mcast/bcast frames in PS mode with auto sleep\n  wireless: fix sta_info.h kernel-doc warnings\n  wireless: fix mac80211.h kernel-doc warnings\n  iwlwifi: testing the wrong variable in iwl_add_bssid_station()\n  ath9k_htc: rare leak in ath9k_hif_usb_alloc_tx_urbs()\n  ath9k_htc: dereferencing before check in hif_usb_tx_cb()\n  rt2x00: Fix rt2800usb TX descriptor writing.\n  rt2x00: Fix failed SLEEP-\u003eAWAKE and AWAKE-\u003eSLEEP transitions.\n  ...\n"
    },
    {
      "commit": "4be929be34f9bdeffa40d815d32d7d60d2c7f03b",
      "tree": "4d2c6e2b8ef766e565e2e050ee151de2e02081d3",
      "parents": [
        "940370fc86b920b51a34217a1facc3e9e97c2456"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon May 24 14:33:03 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 25 08:07:02 2010 -0700"
      },
      "message": "kernel-wide: replace USHORT_MAX, SHORT_MAX and SHORT_MIN with USHRT_MAX, SHRT_MAX and SHRT_MIN\n\n- C99 knows about USHRT_MAX/SHRT_MAX/SHRT_MIN, not\n  USHORT_MAX/SHORT_MAX/SHORT_MIN.\n\n- Make SHRT_MIN of type s16, not int, for consistency.\n\n[akpm@linux-foundation.org: fix drivers/dma/timb_dma.c]\n[akpm@linux-foundation.org: fix security/keys/keyring.c]\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: WANG Cong \u003cxiyou.wangcong@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d9b52dc6fd1fbb2bad645cbc86a60f984c1cb179",
      "tree": "2d611234ea1cd228a74b21049336149e19956700",
      "parents": [
        "5eb32bd059379530fc3809a7fcf183feca75f601"
      ],
      "author": {
        "name": "Yoichi Yuasa",
        "email": "yuasa@linux-mips.org",
        "time": "Mon May 24 18:37:02 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 24 18:37:02 2010 -0700"
      },
      "message": "net/dccp: expansion of error code size\n\nBecause MIPS\u0027s EDQUOT value is 1133(0x46d).\nIt\u0027s larger than u8.\n\nSigned-off-by: Yoichi Yuasa \u003cyuasa@linux-mips.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "43815482370c510c569fd18edb57afcb0fa8cab6",
      "tree": "063efaae3758402b84f056438b704d1de68f7837",
      "parents": [
        "83d7eb2979cd3390c375470225dd2d8f2009bc70"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Apr 29 11:01:49 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat May 01 15:00:15 2010 -0700"
      },
      "message": "net: sock_def_readable() and friends RCU conversion\n\nsk_callback_lock rwlock actually protects sk-\u003esk_sleep pointer, so we\nneed two atomic operations (and associated dirtying) per incoming\npacket.\n\nRCU conversion is pretty much needed :\n\n1) Add a new structure, called \"struct socket_wq\" to hold all fields\nthat will need rcu_read_lock() protection (currently: a\nwait_queue_head_t and a struct fasync_struct pointer).\n\n[Future patch will add a list anchor for wakeup coalescing]\n\n2) Attach one of such structure to each \"struct socket\" created in\nsock_alloc_inode().\n\n3) Respect RCU grace period when freeing a \"struct socket_wq\"\n\n4) Change sk_sleep pointer in \"struct sock\" by sk_wq, pointer to \"struct\nsocket_wq\"\n\n5) Change sk_sleep() function to use new sk-\u003esk_wq instead of\nsk-\u003esk_sleep\n\n6) Change sk_has_sleeper() to wq_has_sleeper() that must be used inside\na rcu_read_lock() section.\n\n7) Change all sk_has_sleeper() callers to :\n  - Use rcu_read_lock() instead of read_lock(\u0026sk-\u003esk_callback_lock)\n  - Use wq_has_sleeper() to eventually wakeup tasks.\n  - Use rcu_read_unlock() instead of read_unlock(\u0026sk-\u003esk_callback_lock)\n\n8) sock_wake_async() is modified to use rcu protection as well.\n\n9) Exceptions :\n  macvtap, drivers/net/tun.c, af_unix use integrated \"struct socket_wq\"\ninstead of dynamically allocated ones. They dont need rcu freeing.\n\nSome cleanups or followups are probably needed, (possible\nsk_callback_lock conversion to a spinlock for example...).\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "aa395145165cb06a0d0885221bbe0ce4a564391d",
      "tree": "118b0403621f10db8dc3dbf12079f9af5b19e05d",
      "parents": [
        "ab9304717f7624c41927f442e6b6d418b2d8b3e4"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Apr 20 13:03:51 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 20 16:37:13 2010 -0700"
      },
      "message": "net: sk_sleep() helper\n\nDefine a new function to return the waitqueue of a \"struct sock\".\n\nstatic inline wait_queue_head_t *sk_sleep(struct sock *sk)\n{\n\treturn sk-\u003esk_sleep;\n}\n\nChange all read occurrences of sk_sleep by a call to this function.\n\nNeeded for a future RCU conversion. sk_sleep wont be a field directly\navailable.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4e15ed4d930297c127d280ca1d0c785be870def4",
      "tree": "e0808d650ae66cf273758496100d3d24739a9e48",
      "parents": [
        "0eecb784942792863b77dfe11e0c7e286e92db85"
      ],
      "author": {
        "name": "Shan Wei",
        "email": "shanwei@cn.fujitsu.com",
        "time": "Thu Apr 15 16:43:08 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 15 23:36:37 2010 -0700"
      },
      "message": "net: replace ipfragok with skb-\u003elocal_df\n\nAs Herbert Xu said: we should be able to simply replace ipfragok\nwith skb-\u003elocal_df. commit f88037(sctp: Drop ipfargok in sctp_xmit function)\nhas droped ipfragok and set local_df value properly.\n\nThe patch kills the ipfragok parameter of .queue_xmit().\n\nSigned-off-by: Shan Wei \u003cshanwei@cn.fujitsu.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b6c6712a42ca3f9fa7f4a3d7c40e3a9dd1fd9e03",
      "tree": "42032b4978874e8ffcf6c851d13324b8c8c7c113",
      "parents": [
        "7a161ea92471087a1579239d7a58dd06eaa5601c"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Apr 08 23:03:29 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 13 01:41:33 2010 -0700"
      },
      "message": "net: sk_dst_cache RCUification\n\nWith latest CONFIG_PROVE_RCU stuff, I felt more comfortable to make this\nwork.\n\nsk-\u003esk_dst_cache is currently protected by a rwlock (sk_dst_lock)\n\nThis rwlock is readlocked for a very small amount of time, and dst\nentries are already freed after RCU grace period. This calls for RCU\nagain :)\n\nThis patch converts sk_dst_lock to a spinlock, and use RCU for readers.\n\n__sk_dst_get() is supposed to be called with rcu_read_lock() or if\nsocket locked by user, so use appropriate rcu_dereference_check()\ncondition (rcu_read_lock_held() || sock_owned_by_user(sk))\n\nThis patch avoids two atomic ops per tx packet on UDP connected sockets,\nfor example, and permits sk_dst_lock to be much less dirtied.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "bb29624614c2afe2873ee8ee97cf09df42701694",
      "tree": "aea85e4cd6643fb47beba987849378c0e80166a0",
      "parents": [
        "8ad50d96db58c58ba67ec1c6f9d3dae0db52338a"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Sun Apr 11 02:15:55 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Apr 11 15:29:09 2010 -0700"
      },
      "message": "inet: Remove unused send_check length argument\n\ninet: Remove unused send_check length argument\n\nThis patch removes the unused length argument from the send_check\nfunction in struct inet_connection_sock_af_ops.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nTested-by: Yinghai \u003cyinghai.lu@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "871039f02f8ec4ab2e5e9010718caa8e085786f1",
      "tree": "f0d2b3127fc48c862967d68c46c2d46668137515",
      "parents": [
        "e4077e018b5ead3de9951fc01d8bf12eeeeeefed",
        "4a1032faac94ebbf647460ae3e06fc21146eb280"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Apr 11 14:53:53 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Apr 11 14:53:53 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/net/stmmac/stmmac_main.c\n\tdrivers/net/wireless/wl12xx/wl1271_cmd.c\n\tdrivers/net/wireless/wl12xx/wl1271_main.c\n\tdrivers/net/wireless/wl12xx/wl1271_spi.c\n\tnet/core/ethtool.c\n\tnet/mac80211/scan.c\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "b138338056fc423c61a583d45f8aa64cfad87131",
      "tree": "89079c1f80c62a7fce240942605e869944c81a1e",
      "parents": [
        "18062ca94714a66e75da8a22e010d0e8e61ab4cd"
      ],
      "author": {
        "name": "Frans Pop",
        "email": "elendil@planet.nl",
        "time": "Wed Mar 24 07:57:28 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Mar 24 14:01:54 2010 -0700"
      },
      "message": "net: remove trailing space in messages\n\nSigned-off-by: Frans Pop \u003celendil@planet.nl\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ec733b15a3ef0b5759141a177f8044a2f40c41e7",
      "tree": "41af80ea4dcc89cc049bd36cbd882916a6469263",
      "parents": [
        "62c97ac04a67c120ec37a9bfd445a8d5dbbc1ed2"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Mar 18 20:36:06 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Mar 21 18:34:16 2010 -0700"
      },
      "message": "net: snmp mib cleanup\n\nThere is no point to align or pad mibs to cache lines, they are per cpu\nallocated with a 8 bytes alignment anyway.\nThis wastes space for no gain. This patch removes __SNMP_MIB_ALIGN__\n\nSince SNMP mibs contain \"unsigned long\" fields only, we can relax the\nallocation alignment from \"unsigned long long\" to \"unsigned long\"\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d14a0ebda7d3daede1a99c01527affb9ceaa4c22",
      "tree": "8bee27033c0e771a9df0c3e8cc3f1dc1091587f0",
      "parents": [
        "b8d689743106bab5c49dda87080e76aa78db8a56"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Mar 14 20:13:19 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Mar 15 16:00:50 2010 -0700"
      },
      "message": "net-2.6 [Bug-Fix][dccp]: fix oops caused after failed initialisation\n\ndccp: fix panic caused by failed initialisation\n\nThis fixes a kernel panic reported thanks to Andre Noll:\n\nif DCCP is compiled into the kernel and any out of the initialisation\nsteps in net/dccp/proto.c:dccp_init() fail, a subsequent attempt to create\na SOCK_DCCP socket will panic, since inet{,6}_create() are not prevented\nfrom creating DCCP sockets.\n\nThis patch fixes the problem by propagating a failure in dccp_init() to\ndccp_v{4,6}_init_net(), and from there to dccp_v{4,6}_init(), so that the\nDCCP protocol is not made available if its initialisation fails.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a3a858ff18a72a8d388e31ab0d98f7e944841a62",
      "tree": "e51a59ce280f0aa818ac5e1d989bc8a137b7cd47",
      "parents": [
        "2499849ee8f513e795b9f2c19a42d6356e4943a4"
      ],
      "author": {
        "name": "Zhu Yi",
        "email": "yi.zhu@intel.com",
        "time": "Thu Mar 04 18:01:47 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Mar 05 13:34:03 2010 -0800"
      },
      "message": "net: backlog functions rename\n\nsk_add_backlog -\u003e __sk_add_backlog\nsk_add_backlog_limited -\u003e sk_add_backlog\n\nSigned-off-by: Zhu Yi \u003cyi.zhu@intel.com\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7d720c3e4f0c4fc152a6bf17e24244a3c85412d2",
      "tree": "36e037187ce79acb211702bea22e99c625787757",
      "parents": [
        "2bb4646fce8d09916b351d1a62f98db7cec6fc41"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 16 15:20:26 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Feb 16 23:05:38 2010 -0800"
      },
      "message": "percpu: add __percpu sparse annotations to net\n\nAdd __percpu sparse annotations to net.\n\nThese annotations are to make sparse consider percpu variables to be\nin a different address space and warn if accessed without going\nthrough percpu accessors.  This patch doesn\u0027t affect normal builds.\n\nThe macro and type tricks around snmp stats make things a bit\ninteresting.  DEFINE/DECLARE_SNMP_STAT() macros mark the target field\nas __percpu and SNMP_UPD_PO_STATS() macro is updated accordingly.  All\nsnmp_mib_*() users which used to cast the argument to (void **) are\nupdated to cast it to (void __percpu **).\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Patrick McHardy \u003ckaber@trash.net\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nCc: Vlad Yasevich \u003cvladislav.yasevich@hp.com\u003e\nCc: netdev@vger.kernel.org\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "55d955902a7f78e3e7c9ddbc71a4a050d9d44810",
      "tree": "e56d33b78b483476b9560370dcf37db7c40c886a",
      "parents": [
        "cfc0861ba32643c63901832a583054bea0445961"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Feb 10 20:26:18 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Feb 12 16:51:10 2010 -0800"
      },
      "message": "dccp: support for passing MSG_TRUNC\n\nDCCP is datagram-oriented but lacks UDP\u0027s support for MSG_TRUNC as defined in\nrecvmsg(2)/recv(2). Hence the following \u0027Hello world\\0\u0027 receiver\n\n  len \u003d recv(fd, buf, 10, MSG_PEEK | MSG_TRUNC);\n\nwrongly (always) returns 10, while in UDP it returns 12 as expected.\nThis patch adds the missing MSG_TRUNC support to recvmsg().\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "69a6a0b38a139ccceef32222108caca8a9b0b795",
      "tree": "04e24f2b012c14f33f5bc3d6f96f84056cf1fbbe",
      "parents": [
        "7455a76f170f794498d26081a5f15b797ef1a2aa"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Feb 07 20:20:28 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Feb 12 11:47:00 2010 -0800"
      },
      "message": "dccp: allow probing of CCID-array length\n\nThis fixes a problem in the DCCP getsockopt() API: currently there is no way\nfor a user to a priori know the number of built-in CCIDs, other than trying\nDCCP_SOCKOPT_AVAILABLE_CCIDS in a loop, incrementing the option length until\nEINVAL is no longer returned.\n\nThis patch truncates the array to the user-provided length. No copy is made\nwhen the length is \u003c\u003d 0.\n\nDue to the length restriction in do_dccp_getsockopt() to sizeof(int), the\nminimum array length remains 4, which is a reasonable default (only 3\nCCIDs, CCID-2..4, are currently defined).\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9c119ba54c0fcae72881948af3d37b47a2f8e1f9",
      "tree": "0be51b0bf02ece3bb32955e9d33a3998ecd57250",
      "parents": [
        "a4b97f2054af2e411c414ed4cb5e1d0dbfd24a47",
        "fdd3d631cddad20ad9d3e1eb7dbf26825a8a121f"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Feb 03 19:38:22 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Feb 03 19:38:22 2010 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n"
    },
    {
      "commit": "1386be55e32a3c5d8ef4a2b243c530a7b664c02c",
      "tree": "c63c4953a415bd3522c951f3b9a93ad3422412e4",
      "parents": [
        "8ed030dd0aa400d18c63861c2c6deb7c38f4edde"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Feb 02 20:16:56 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Feb 03 19:00:31 2010 -0800"
      },
      "message": "dccp: fix auto-loading of dccp(_probe)\n\nThis fixes commit (38ff3e6bb987ec583268da8eb22628293095d43b) (\"dccp_probe:\nFix module load dependencies between dccp and dccp_probe\", from 15 Jan).\n\nIt fixes the construction of the first argument of try_then_request_module(),\nwhere only valid return codes from the first argument should be returned.\n\nWhat we do now is assign the result of register_jprobe() to ret, without\nthe side effect of the comparison.\n\nAcked-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8ed030dd0aa400d18c63861c2c6deb7c38f4edde",
      "tree": "c84de9bd4c14cc9e565b887638d05597e6b6e56c",
      "parents": [
        "f6815077e75c5b7f55b56fc3788e328514d4e72a"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Feb 01 02:12:19 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Feb 03 19:00:30 2010 -0800"
      },
      "message": "dccp: fix bug in cache allocation\n\nThis fixes a bug introduced in commit de4ef86cfce60d2250111f34f8a084e769f23b16\n(\"dccp: fix dccp rmmod when kernel configured to use slub\", 17 Jan): the\nvsnprintf used sizeof(slab_name_fmt), which became truncated to 4 bytes, since\nslab_name_fmt is now a 4-byte pointer and no longer a 32-character array.\n\nThis lead to error messages such as\n FATAL: Error inserting dccp: No buffer space available\n\n \u003e\u003e kernel: [ 1456.341501] kmem_cache_create: duplicate cache cci\ngenerated due to the truncation after the 3rd character.\n\nFixed for the moment by introducing a symbolic constant. Tested to fix the bug.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nAcked-by: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "51c24aaacaea90c8e87f1dec75a2ac7622b593f8",
      "tree": "9f54936c87764bef75e97395cb56b7d1e0df24c6",
      "parents": [
        "4276e47e2d1c85a2477caf0d22b91c4f2377fba8",
        "6be325719b3e54624397e413efd4b33a997e55a3"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jan 23 00:31:06 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jan 23 00:31:06 2010 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n"
    },
    {
      "commit": "6be325719b3e54624397e413efd4b33a997e55a3",
      "tree": "57f321a56794cab2222e179b16731e0d76a4a68a",
      "parents": [
        "26d92f9276a56d55511a427fb70bd70886af647a",
        "92dcffb916d309aa01778bf8963a6932e4014d07"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jan 22 22:45:46 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jan 22 22:45:46 2010 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of /home/davem/src/GIT/linux-2.6/\n"
    },
    {
      "commit": "de4ef86cfce60d2250111f34f8a084e769f23b16",
      "tree": "097eb01bbe375ab3a14f6f7135901b160206f602",
      "parents": [
        "0a931acfd19faf13129a22a46c06f330ecc2a4a3"
      ],
      "author": {
        "name": "Neil Horman",
        "email": "nhorman@tuxdriver.com",
        "time": "Sun Jan 17 17:16:12 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jan 19 01:59:01 2010 -0800"
      },
      "message": "dccp: fix dccp rmmod when kernel configured to use slub\n\nHey all-\n\tI was tinkering with dccp recently and noticed that I BUG halted the\nkernel when I rmmod-ed the dccp module.  The bug halt occured because the page\nthat I passed to kfree failed the PageCompound and PageSlab test in the slub\nimplementation of kfree.  I tracked the problem down to the following set of\nevents:\n\n1) dccp, unlike all other uses of kmem_cache_create, allocates a string\ndynamically when registering a slab cache.  This allocated string is freed when\nthe cache is destroyed.\n\n2) Normally, (1) is not an issue, but when Slub is in use, it is possible that\ncaches are \u0027merged\u0027.  This process causes multiple caches of simmilar\nconfiguration to use the same cache data structure.  When this happens, the new\nname of the cache is effectively dropped.\n\n3) (2) results in kmem_cache_name returning an ambigous value (i.e.\nccid_kmem_cache_destroy, which uses this fuction to retrieve the name pointer\nfor freeing), is no longer guaranteed that the string it assigned is what is\nreturned.\n\n4) If such merge event occurs, ccid_kmem_cache_destroy frees the wrong pointer,\nwhich trips over the BUG in the slub implementation of kfree (since its likely\nnot a slab allocation, but rather a pointer into the static string table\nsection.\n\nSo, what to do about this.  At first blush this is pretty clearly a leak in the\ninformation that slub owns, and as such a slub bug.  Unfortunately, theres no\nreally good way to fix it, without exposing slub specific implementation details\nto the generic slab interface.  Also, even if we could fix this in slub cleanly,\nI think the RCU free option would force us to do lots of string duplication, not\nonly in slub, but in every slab allocator.  As such, I\u0027d like to propose this\nsolution.  Basically, I just move the storage for the kmem cache name to the\nccid_operations structure.  In so doing, we don\u0027t have to do the kstrdup or\nkfree when we allocate/free the various caches for dccp, and so we avoid the\nproblem, by storing names with static memory, rather than heap, the way all\nother calls to kmem_cache_create do.\n\nI\u0027ve tested this out myself here, and it solves the problem quite well.\n\nSigned-off-by: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nAcked-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2c8c1e7297e19bdef3c178c3ea41d898a7716e3e",
      "tree": "4d336562e8d5379732a0646e17b0bb1750111ef6",
      "parents": [
        "72659ecce68588b74f6c46862c2b4cec137d7a5a"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sun Jan 17 03:35:32 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jan 17 19:16:02 2010 -0800"
      },
      "message": "net: spread __net_init, __net_exit\n\n__net_init/__net_exit are apparently not going away, so use them\nto full extent.\n\nIn some cases __net_init was removed, because it was called from\n__net_exit code.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "38ff3e6bb987ec583268da8eb22628293095d43b",
      "tree": "e19ee438e49717cb412686a1828f32e6b786ceab",
      "parents": [
        "cd65c3c7d1081290b7365897c2290a84aa967d4d"
      ],
      "author": {
        "name": "Neil Horman",
        "email": "nhorman@tuxdriver.com",
        "time": "Fri Jan 15 01:40:55 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jan 15 01:40:55 2010 -0800"
      },
      "message": "dccp_probe: Fix module load dependencies between dccp and dccp_probe\n\nThis was just recently reported to me.  When built as modules, the\ndccp_probe module has a silent dependency on the dccp module.  This\nstems from the fact that the module_init routine of dccp_probe\nregisters a jprobe on the dccp_sendmsg symbol.  Since the symbol is\nonly referenced as a text string (the .symbol_name field in the jprobe\nstruct) rather than the address of the symbol itself, depmod never\npicks this dependency up, and so if you load the dccp_probe module\nwithout the dccp module loaded, the register_jprobe call fails with an\n-EINVAL, and the whole module load fails.\n\nThe fix is pretty easy, we can just wrap the register_jprobe call in a\ntry_then_request_module call, which forces the dependency to get\nsatisfied prior to the probe registration.\n\nSigned-off-by: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nAcked-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7acd72eb85f1c7a15e8b5eb554994949241737f1",
      "tree": "76712bb9f38690d8cf9c2f91bef811e4413d1aa3",
      "parents": [
        "e64c026dd09b73faf20707711402fc5ed55a8e70"
      ],
      "author": {
        "name": "Stefani Seibold",
        "email": "stefani@seibold.net",
        "time": "Mon Dec 21 14:37:28 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 22 14:17:56 2009 -0800"
      },
      "message": "kfifo: rename kfifo_put... into kfifo_in... and kfifo_get... into kfifo_out...\n\nrename kfifo_put...  into kfifo_in...  to prevent miss use of old non in\nkernel-tree drivers\n\nditto for kfifo_get...  -\u003e kfifo_out...\n\nImprove the prototypes of kfifo_in and kfifo_out to make the kerneldoc\nannotations more readable.\n\nAdd mini \"howto porting to the new API\" in kfifo.h\n\nSigned-off-by: Stefani Seibold \u003cstefani@seibold.net\u003e\nAcked-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nAcked-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\nAcked-by: Andi Kleen \u003cak@linux.intel.com\u003e\nAcked-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e64c026dd09b73faf20707711402fc5ed55a8e70",
      "tree": "4780736e021824f15329a0826eff3cc27d3f9646",
      "parents": [
        "c1e13f25674ed564948ecb7dfe5f83e578892896"
      ],
      "author": {
        "name": "Stefani Seibold",
        "email": "stefani@seibold.net",
        "time": "Mon Dec 21 14:37:28 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 22 14:17:56 2009 -0800"
      },
      "message": "kfifo: cleanup namespace\n\nchange name of __kfifo_* functions to kfifo_*, because the prefix __kfifo\nshould be reserved for internal functions only.\n\nSigned-off-by: Stefani Seibold \u003cstefani@seibold.net\u003e\nAcked-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nAcked-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\nAcked-by: Andi Kleen \u003cak@linux.intel.com\u003e\nAcked-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c1e13f25674ed564948ecb7dfe5f83e578892896",
      "tree": "24fac07b3e2b66dff01c3127b34077de1de4c101",
      "parents": [
        "45465487897a1c6d508b14b904dc5777f7ec7e04"
      ],
      "author": {
        "name": "Stefani Seibold",
        "email": "stefani@seibold.net",
        "time": "Mon Dec 21 14:37:27 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 22 14:17:56 2009 -0800"
      },
      "message": "kfifo: move out spinlock\n\nMove the pointer to the spinlock out of struct kfifo.  Most users in\ntree do not actually use a spinlock, so the few exceptions now have to\ncall kfifo_{get,put}_locked, which takes an extra argument to a\nspinlock.\n\nSigned-off-by: Stefani Seibold \u003cstefani@seibold.net\u003e\nAcked-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nAcked-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\nAcked-by: Andi Kleen \u003cak@linux.intel.com\u003e\nAcked-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "45465487897a1c6d508b14b904dc5777f7ec7e04",
      "tree": "935c8dae68dc793ff2f795d57cf027531475cd53",
      "parents": [
        "2ec91eec47f713e3d158ba5b28a24a85a2cf3650"
      ],
      "author": {
        "name": "Stefani Seibold",
        "email": "stefani@seibold.net",
        "time": "Mon Dec 21 14:37:26 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 22 14:17:55 2009 -0800"
      },
      "message": "kfifo: move struct kfifo in place\n\nThis is a new generic kernel FIFO implementation.\n\nThe current kernel fifo API is not very widely used, because it has to\nmany constrains.  Only 17 files in the current 2.6.31-rc5 used it.\nFIFO\u0027s are like list\u0027s a very basic thing and a kfifo API which handles\nthe most use case would save a lot of development time and memory\nresources.\n\nI think this are the reasons why kfifo is not in use:\n\n - The API is to simple, important functions are missing\n - A fifo can be only allocated dynamically\n - There is a requirement of a spinlock whether you need it or not\n - There is no support for data records inside a fifo\n\nSo I decided to extend the kfifo in a more generic way without blowing up\nthe API to much.  The new API has the following benefits:\n\n - Generic usage: For kernel internal use and/or device driver.\n - Provide an API for the most use case.\n - Slim API: The whole API provides 25 functions.\n - Linux style habit.\n - DECLARE_KFIFO, DEFINE_KFIFO and INIT_KFIFO Macros\n - Direct copy_to_user from the fifo and copy_from_user into the fifo.\n - The kfifo itself is an in place member of the using data structure, this save an\n   indirection access and does not waste the kernel allocator.\n - Lockless access: if only one reader and one writer is active on the fifo,\n   which is the common use case, no additional locking is necessary.\n - Remove spinlock - give the user the freedom of choice what kind of locking to use if\n   one is required.\n - Ability to handle records. Three type of records are supported:\n   - Variable length records between 0-255 bytes, with a record size\n     field of 1 bytes.\n   - Variable length records between 0-65535 bytes, with a record size\n     field of 2 bytes.\n   - Fixed size records, which no record size field.\n - Preserve memory resource.\n - Performance!\n - Easy to use!\n\nThis patch:\n\nSince most users want to have the kfifo as part of another object,\nreorganize the code to allow including struct kfifo in another data\nstructure.  This requires changing the kfifo_alloc and kfifo_init\nprototypes so that we pass an existing kfifo pointer into them.  This\npatch changes the implementation and all existing users.\n\n[akpm@linux-foundation.org: fix warning]\nSigned-off-by: Stefani Seibold \u003cstefani@seibold.net\u003e\nAcked-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nAcked-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\nAcked-by: Andi Kleen \u003cak@linux.intel.com\u003e\nAcked-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9327f7053e3993c125944fdb137a0618319ef2a0",
      "tree": "3cee7de049a2468bef930b1832c42bd1b2e69e9a",
      "parents": [
        "74757d49016a8b06ca028196886641d7aeb78de5"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Fri Dec 04 03:46:54 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Dec 08 20:17:51 2009 -0800"
      },
      "message": "tcp: Fix a connect() race with timewait sockets\n\nFirst patch changes __inet_hash_nolisten() and __inet6_hash()\nto get a timewait parameter to be able to unhash it from ehash\nat same time the new socket is inserted in hash.\n\nThis makes sure timewait socket wont be found by a concurrent\nwriter in __inet_check_established()\n\nReported-by: kapil dakhane \u003ckdakhane@gmail.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d7fc02c7bae7b1cf69269992cf880a43a350cdaa",
      "tree": "a43d56fa72913a1cc98a0bbebe054d08581b3a7c",
      "parents": [
        "ee1262dbc65ce0b6234a915d8432171e8d77f518",
        "28b4d5cc17c20786848cdc07b7ea237a309776bb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 08 07:55:01 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 08 07:55:01 2009 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1815 commits)\n  mac80211: fix reorder buffer release\n  iwmc3200wifi: Enable wimax core through module parameter\n  iwmc3200wifi: Add wifi-wimax coexistence mode as a module parameter\n  iwmc3200wifi: Coex table command does not expect a response\n  iwmc3200wifi: Update wiwi priority table\n  iwlwifi: driver version track kernel version\n  iwlwifi: indicate uCode type when fail dump error/event log\n  iwl3945: remove duplicated event logging code\n  b43: fix two warnings\n  ipw2100: fix rebooting hang with driver loaded\n  cfg80211: indent regulatory messages with spaces\n  iwmc3200wifi: fix NULL pointer dereference in pmkid update\n  mac80211: Fix TX status reporting for injected data frames\n  ath9k: enable 2GHz band only if the device supports it\n  airo: Fix integer overflow warning\n  rt2x00: Fix padding bug on L2PAD devices.\n  WE: Fix set events not propagated\n  b43legacy: avoid PPC fault during resume\n  b43: avoid PPC fault during resume\n  tcp: fix a timewait refcnt race\n  ...\n\nFix up conflicts due to sysctl cleanups (dead sysctl_check code and\nCTL_UNNUMBERED removed) in\n\tkernel/sysctl_check.c\n\tnet/ipv4/sysctl_net_ipv4.c\n\tnet/ipv6/addrconf.c\n\tnet/sctp/sysctl.c\n"
    },
    {
      "commit": "e6b4d11367519bc71729c09d05a126b133c755be",
      "tree": "b5d99b115a6ca9564d367b243a826d8b09da237e",
      "parents": [
        "e00484023ebe94dce03fdd1270edf3e191c2bc79"
      ],
      "author": {
        "name": "William Allen Simpson",
        "email": "william.allen.simpson@gmail.com",
        "time": "Wed Dec 02 18:07:39 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Dec 02 22:07:23 2009 -0800"
      },
      "message": "TCPCT part 1a: add request_values parameter for sending SYNACK\n\nAdd optional function parameters associated with sending SYNACK.\nThese parameters are not needed after sending SYNACK, and are not\nused for retransmission.  Avoids extending struct tcp_request_sock,\nand avoids allocating kernel memory.\n\nAlso affects DCCP as it uses common struct request_sock_ops,\nbut this parameter is currently reserved for future use.\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": "f8572d8f2a2ba75408b97dc24ef47c83671795d7",
      "tree": "052506a457939fea00d138d3a982d778df34e14c",
      "parents": [
        "86b1bc68e2f4244e4ea5db5458df9d19259fbb30"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu Nov 05 13:32:03 2009 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu Nov 12 02:05:06 2009 -0800"
      },
      "message": "sysctl net: Remove unused binary sysctl code\n\nNow that sys_sysctl is a compatiblity wrapper around /proc/sys\nall sysctl strategy routines, and all ctl_name and strategy\nentries in the sysctl tables are unused, and can be\nrevmoed.\n\nIn addition neigh_sysctl_register has been modified to no longer\ntake a strategy argument and it\u0027s callers have been modified not\nto pass one.\n\nCc: \"David Miller\" \u003cdavem@davemloft.net\u003e\nCc: Hideaki YOSHIFUJI \u003cyoshfuji@linux-ipv6.org\u003e\nCc: netdev@vger.kernel.org\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "13f18aa05f5abe135f47b6417537ae2b2fedc18c",
      "tree": "3bcf8c52bd9d957fd09a87224c9d44566071f981",
      "parents": [
        "89794a6f3bf6db552b1ff4d2ad42fdd8739ac2a2"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Nov 05 20:44:37 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 05 21:40:17 2009 -0800"
      },
      "message": "net: drop capability from protocol definitions\n\nstruct can_proto had a capability field which wasn\u0027t ever used.  It is\ndropped entirely.\n\nstruct inet_protosw had a capability field which can be more clearly\nexpressed in the code by just checking if sock-\u003etype \u003d SOCK_RAW.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nAcked-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ea94ff3b55188df157a8740bdf3976a87563d705",
      "tree": "a124cd047f8ed18c27aace29eafd2b343575857a",
      "parents": [
        "f04c8276248d3dd3e15a9a72f9711ba5e4069049"
      ],
      "author": {
        "name": "Krishna Kumar",
        "email": "krkumar2@in.ibm.com",
        "time": "Mon Oct 19 23:46:45 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 20 18:55:46 2009 -0700"
      },
      "message": "net: Fix for dst_negative_advice\n\ndst_negative_advice() should check for changed dst and reset\nsk_tx_queue_mapping accordingly. Pass sock to the callers of\ndst_negative_advice.\n\n(sk_reset_txq is defined just for use by dst_negative_advice. The\nonly way I could find to get around this is to move dst_negative_()\nfrom dst.h to dst.c, include sock.h in dst.c, etc)\n\nSigned-off-by: Krishna Kumar \u003ckrkumar2@in.ibm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c720c7e8383aff1cb219bddf474ed89d850336e3",
      "tree": "4f12337e6690fccced376db9f501eaf98614a65e",
      "parents": [
        "988ade6b8e27e79311812f83a87b5cea11fabcd7"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Oct 15 06:30:45 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Oct 18 18:52:53 2009 -0700"
      },
      "message": "inet: rename some inet_sock fields\n\nIn order to have better cache layouts of struct sock (separate zones\nfor rx/tx paths), we need this preliminary patch.\n\nGoal is to transfert fields used at lookup time in the first\nread-mostly cache line (inside struct sock_common) and move sk_refcnt\nto a separate cache line (only written by rx path)\n\nThis patch adds inet_ prefix to daddr, rcv_saddr, dport, num, saddr,\nsport and id fields. This allows a future patch to define these\nfields as macros, like sk_refcnt, without name clashes.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f373b53b5fe67aa4a6f28f921a529cc90f88e79b",
      "tree": "b2cae9152aed2e30b7a39c114678b9355ab5c14f",
      "parents": [
        "c3faca053d0a9c877597935b434150b422dbc6fb"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Fri Oct 09 00:16:19 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 13 03:44:02 2009 -0700"
      },
      "message": "tcp: replace ehash_size by ehash_mask\n\nStoring the mask (size - 1) instead of the size allows fast path to be\na bit faster.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    }
  ],
  "next": "b301e82cf8104cfddbe5452ebe625bab49597c64"
}
