)]}'
{
  "log": [
    {
      "commit": "b7058842c940ad2c08dd829b21e5c92ebe3b8758",
      "tree": "5fe78d599fc345ca0bcd4b083b79095a54b2921b",
      "parents": [
        "eb1cf0f8f7a9e5a6d573d5bd72c015686a042db0"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 30 16:12:20 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 30 16:12:20 2009 -0700"
      },
      "message": "net: Make setsockopt() optlen be unsigned.\n\nThis provides safety against negative optlen at the type\nlevel instead of depending upon (sometimes non-trivial)\nchecks against this sprinkled all over the the place, in\neach and every implementation.\n\nBased upon work done by Arjan van de Ven and feedback\nfrom Linus Torvalds.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4481374ce88ba8f460c8b89f2572027bd27057d0",
      "tree": "6896601b6a1da0e3e932ffa75fcff966c834c02c",
      "parents": [
        "4738e1b9cf8f9e28d7de080a5e6ce5d0095ea18f"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "JBeulich@novell.com",
        "time": "Mon Sep 21 17:03:05 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:38 2009 -0700"
      },
      "message": "mm: replace various uses of num_physpages by totalram_pages\n\nSizing of memory allocations shouldn\u0027t depend on the number of physical\npages found in a system, as that generally includes (perhaps a huge amount\nof) non-RAM pages.  The amount of what actually is usable as storage\nshould instead be used as a basis here.\n\nSome of the calculations (i.e.  those not intending to use high memory)\nshould likely even use (totalram_pages - totalhigh_pages).\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nAcked-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Dave Airlie \u003cairlied@linux.ie\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5708e868dc512f055f0ea4a14d01f8252c3ca8a1",
      "tree": "723b49669dd9f96c6cec9ce16458774ed8906286",
      "parents": [
        "41135cc836a1abeb12ca1416bdb29e87ad021153"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 14 12:23:23 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 14 17:03:09 2009 -0700"
      },
      "message": "net: constify remaining proto_ops\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "41135cc836a1abeb12ca1416bdb29e87ad021153",
      "tree": "01c402f2fb9ac494dc3655a17e92072b170b7c1f",
      "parents": [
        "32613090a96dba2ca2cc524c8d4749d3126fdde5"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 14 12:22:28 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 14 17:03:05 2009 -0700"
      },
      "message": "net: constify struct inet6_protocol\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "32613090a96dba2ca2cc524c8d4749d3126fdde5",
      "tree": "5e0e5f9097aca737e8a7356eb1b72e53539cda0b",
      "parents": [
        "e4c57d0f964cdbe278ed6b3bf632138fe575267e"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 14 12:21:47 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 14 17:03:01 2009 -0700"
      },
      "message": "net: constify struct net_protocol\n\nRemove long removed \"inet_protocol_base\" declaration.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "aa1b1ff0991b469eca6fde4456190df6ed59ff40",
      "tree": "d2fc84d3e83dd121fd4a48c8560b212123688eb4",
      "parents": [
        "d136f1bd366fdb7e747ca7e0218171e7a00a98a5"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sat Sep 12 07:47:01 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 14 17:02:54 2009 -0700"
      },
      "message": "net-next-2.6 [PATCH 1/1] dccp: ccids whitespace-cleanup / CodingStyle\n\nNo code change, cosmetical changes only:\n\n * whitespace cleanup via scripts/cleanfile,\n * remove self-references to filename at top of files,\n * fix coding style (extraneous brackets),\n * fix documentation style (kernel-doc-nano-HOWTO).\n\nThanks are due to Ivo Augusto Calado who raised these issues by\nsubmitting good-quality patches.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3b401a81c0d50ea9c718cf837f62cc2e6e79cc30",
      "tree": "cfb386a92521ae614fc8d76932461f26d14e9fa3",
      "parents": [
        "b2e4b3debc327a5b53d9622e0b1785eea2ea2aad"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Tue Sep 01 19:25:04 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 02 01:03:49 2009 -0700"
      },
      "message": "inet: inet_connection_sock_af_ops const\n\nThe function block inet_connect_sock_af_ops contains no data\nmake it constant.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "aa11d958d1a6572eda08214d7c6a735804fe48a5",
      "tree": "d025b05270ad1e010660d17eeadc6ac3c1abbd7d",
      "parents": [
        "07f6642ee9418e962e54cbc07471cfe2e559c568",
        "9799218ae36910af50f002a5db1802d576fffb43"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Aug 12 17:44:53 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Aug 12 17:44:53 2009 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tarch/microblaze/include/asm/socket.h\n"
    },
    {
      "commit": "f222e8b40f2177b1c4cac015b117744c1d3fa3e9",
      "tree": "7c5fc22c08da900e21b0e7ab2376e8e8e44a63c0",
      "parents": [
        "819ae6a389d4acfab9a7bb874fa1977aa464d14b",
        "f4b9a988685da6386d7f9a72df3098bcc3270526"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Aug 09 21:29:47 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Aug 09 21:29:47 2009 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of /home/davem/src/GIT/linux-2.6/\n"
    },
    {
      "commit": "36cbd3dcc10384f813ec0814255f576c84f2bcd4",
      "tree": "c3579edea972519d2f9ae99d7da9a5dd56e6f5c1",
      "parents": [
        "db71789c01ae7b641f83c5aa64e7df25122f4b28"
      ],
      "author": {
        "name": "Jan Engelhardt",
        "email": "jengelh@medozas.de",
        "time": "Wed Aug 05 10:42:58 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Aug 05 10:42:58 2009 -0700"
      },
      "message": "net: mark read-only arrays as const\n\nString literals are constant, and usually, we can also tag the array\nof pointers const too, moving it to the .rodata section.\n\nSigned-off-by: Jan Engelhardt \u003cjengelh@medozas.de\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "476181cb05c6a3aea3ef42309388e255c934a06f",
      "tree": "377c2f9326457dcd7880b1dc962bedea32b2af29",
      "parents": [
        "f60f785679b507cbeeb03d2db080ab649ac86027"
      ],
      "author": {
        "name": "Wei Yongjun",
        "email": "yjwei@cn.fujitsu.com",
        "time": "Tue Aug 04 21:44:39 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Aug 05 10:22:03 2009 -0700"
      },
      "message": "dccp: missing destroy of percpu counter variable while unload module\n\npercpu counter dccp_orphan_count is init in dccp_init() by\npercpu_counter_init() while dccp module is loaded, but the\ndestroy of it is missing while dccp module is unloaded. We\ncan get the kernel WARNING about this. Reproduct by the\nfollowing commands:\n\n  $ modprobe dccp\n  $ rmmod dccp\n  $ modprobe dccp\n\nWARNING: at lib/list_debug.c:26 __list_add+0x27/0x5c()\nHardware name: VMware Virtual Platform\nlist_add corruption. next-\u003eprev should be prev (c080c0c4), but was (null). (next\n\u003dca7188cc).\nModules linked in: dccp(+) nfsd lockd nfs_acl auth_rpcgss exportfs sunrpc\nPid: 1956, comm: modprobe Not tainted 2.6.31-rc5 #55\nCall Trace:\n [\u003cc042f8fa\u003e] warn_slowpath_common+0x6a/0x81\n [\u003cc053a6cb\u003e] ? __list_add+0x27/0x5c\n [\u003cc042f94f\u003e] warn_slowpath_fmt+0x29/0x2c\n [\u003cc053a6cb\u003e] __list_add+0x27/0x5c\n [\u003cc053c9b3\u003e] __percpu_counter_init+0x4d/0x5d\n [\u003cca9c90c7\u003e] dccp_init+0x19/0x2ed [dccp]\n [\u003cc0401141\u003e] do_one_initcall+0x4f/0x111\n [\u003cca9c90ae\u003e] ? dccp_init+0x0/0x2ed [dccp]\n [\u003cc06971b5\u003e] ? notifier_call_chain+0x26/0x48\n [\u003cc0444943\u003e] ? __blocking_notifier_call_chain+0x45/0x51\n [\u003cc04516f7\u003e] sys_init_module+0xac/0x1bd\n [\u003cc04028e4\u003e] sysenter_do_call+0x12/0x22\n\nSigned-off-by: Wei Yongjun \u003cyjwei@cn.fujitsu.com\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1c29b3ff4f2d847464f7be3a0e179c6dfc69bd02",
      "tree": "0fa9c81cac75f65ef2451baf0cc27ae86c11a0fc",
      "parents": [
        "b62f495dad04fa94b5083aec638ff3072bccaaca"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Wed Jul 29 15:04:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 29 19:10:36 2009 -0700"
      },
      "message": "net-dccp: suppress warning about large allocations from DCCP\n\nThe DCCP protocol tries to allocate some large hash tables during\ninitialisation using the largest size possible.  This can be larger than\nwhat the page allocator can provide so it prints a warning.  However, the\ncaller is able to handle the situation so this patch suppresses the\nwarning.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a57de0b4336e48db2811a2030bb68dba8dd09d88",
      "tree": "a01c189d5fd55c69c9e2e842241e84b46728bc60",
      "parents": [
        "1b614fb9a00e97b1eab54d4e442d405229c059dd"
      ],
      "author": {
        "name": "Jiri Olsa",
        "email": "jolsa@redhat.com",
        "time": "Wed Jul 08 12:09:13 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 09 17:06:57 2009 -0700"
      },
      "message": "net: adding memory barrier to the poll and receive callbacks\n\nAdding memory barrier after the poll_wait function, paired with\nreceive callbacks. Adding fuctions sock_poll_wait and sk_has_sleeper\nto wrap the memory barrier.\n\nWithout the memory barrier, following race can happen.\nThe race fires, when following code paths meet, and the tp-\u003ercv_nxt\nand __add_wait_queue updates stay in CPU caches.\n\nCPU1                         CPU2\n\nsys_select                   receive packet\n  ...                        ...\n  __add_wait_queue           update tp-\u003ercv_nxt\n  ...                        ...\n  tp-\u003ercv_nxt check          sock_def_readable\n  ...                        {\n  schedule                      ...\n                                if (sk-\u003esk_sleep \u0026\u0026 waitqueue_active(sk-\u003esk_sleep))\n                                        wake_up_interruptible(sk-\u003esk_sleep)\n                                ...\n                             }\n\nIf there was no cache the code would work ok, since the wait_queue and\nrcv_nxt are opposit to each other.\n\nMeaning that once tp-\u003ercv_nxt is updated by CPU2, the CPU1 either already\npassed the tp-\u003ercv_nxt check and sleeps, or will get the new value for\ntp-\u003ercv_nxt and will return with new data mask.\nIn both cases the process (CPU1) is being added to the wait queue, so the\nwaitqueue_active (CPU2) call cannot miss and will wake up CPU1.\n\nThe bad case is when the __add_wait_queue changes done by CPU1 stay in its\ncache, and so does the tp-\u003ercv_nxt update on CPU2 side.  The CPU1 will then\nendup calling schedule and sleep forever if there are no more data on the\nsocket.\n\nCalls to poll_wait in following modules were ommited:\n\tnet/bluetooth/af_bluetooth.c\n\tnet/irda/af_irda.c\n\tnet/irda/irnet/irnet_ppp.c\n\tnet/mac80211/rc80211_pid_debugfs.c\n\tnet/phonet/socket.c\n\tnet/rds/af_rds.c\n\tnet/rfkill/core.c\n\tnet/sunrpc/cache.c\n\tnet/sunrpc/rpc_pipe.c\n\tnet/tipc/socket.c\n\nSigned-off-by: Jiri Olsa \u003cjolsa@redhat.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d5fdd6babcfc2b0e6a8da1acf492a69fb54b4c47",
      "tree": "e4ebdb5d6c4b1ddc16f83e701e3e6038c379a497",
      "parents": [
        "0cf08dcb78e8d61b6d4b2eb5cdb296d969971626"
      ],
      "author": {
        "name": "Brian Haley",
        "email": "brian.haley@hp.com",
        "time": "Tue Jun 23 04:31:07 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 23 04:31:07 2009 -0700"
      },
      "message": "ipv6: Use correct data types for ICMPv6 type and code\n\nChange all the code that deals directly with ICMPv6 type and code\nvalues to use u8 instead of a signed int as that\u0027s the actual data\ntype.\n\nSigned-off-by: Brian Haley \u003cbrian.haley@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "adf30907d63893e4208dfe3f5c88ae12bc2f25d5",
      "tree": "0f07542bb95de2ad537540868aba6cf87a86e17d",
      "parents": [
        "511c3f92ad5b6d9f8f6464be1b4f85f0422be91a"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Jun 02 05:19:30 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 03 02:51:04 2009 -0700"
      },
      "message": "net: skb-\u003edst accessors\n\nDefine three accessors to get/set dst attached to a skb\n\nstruct dst_entry *skb_dst(const struct sk_buff *skb)\n\nvoid skb_dst_set(struct sk_buff *skb, struct dst_entry *dst)\n\nvoid skb_dst_drop(struct sk_buff *skb)\nThis one should replace occurrences of :\ndst_release(skb-\u003edst)\nskb-\u003edst \u003d NULL;\n\nDelete skb-\u003edst field\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "511c3f92ad5b6d9f8f6464be1b4f85f0422be91a",
      "tree": "3e368d9a78f87eb9dd7ff9e57f4aab3f4a96e3b1",
      "parents": [
        "dfbf97f3ac980b69dfbc41c83a208211a38443e8"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Jun 02 05:14:27 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 03 02:51:02 2009 -0700"
      },
      "message": "net: skb-\u003ertable accessor\n\nDefine skb_rtable(const struct sk_buff *skb) accessor to get rtable from skb\n\nDelete skb-\u003ertable field\n\nSetting rtable is not allowed, just set dst instead as rtable is an alias.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "86739fb96e8c8269fc5b3d300c959bede272a6f6",
      "tree": "5bbb9c976a86996064d5e740e2c31da281c61a3f",
      "parents": [
        "361a5c1dd0bd7bb2b90e7fe9127b366d3566522e"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Fri Feb 27 22:38:29 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Mar 02 03:07:23 2009 -0800"
      },
      "message": "dccp: Do not let initial option overhead shrink the MPS\n\nThis fixes a problem caused by the overlap of the connection-setup and\nestablished-state phases of DCCP connections.\n\nDuring connection setup, the client retransmits Confirm Feature-Negotiation\noptions until a response from the server signals that it can move from the\nhalf-established PARTOPEN into the OPEN state, whereupon the connection is\nfully established on both ends (RFC 4340, 8.1.5).\n\nHowever, since the client may already send data while it is in the PARTOPEN\nstate, consequences arise for the Maximum Packet Size: the problem is that the\ninitial option overhead is much higher than for the subsequent established\nphase, as it involves potentially many variable-length list-type options\n(server-priority options, RFC 4340, 6.4).\n\nApplying the standard MPS is insufficient here: especially with larger\npayloads this can lead to annoying, counter-intuitive EMSGSIZE errors.\n\nOn the other hand, reducing the MPS available for the established phase by\nthe added initial overhead is highly wasteful and inefficient.\n\nThe solution chosen therefore is a two-phase strategy:\n\n   If the payload length of the DataAck in PARTOPEN is too large, an Ack is sent\n   to carry the options, and the feature-negotiation list is then flushed.\n\n   This means that the server gets two Acks for one Response. If both Acks get\n   lost, it is probably better to restart the connection anyway and devising yet\n   another special-case does not seem worth the extra complexity.\n\nThe result is a higher utilisation of the available packet space for the data\ntransmission phase (established state) of a connection.\n\nThe patch (over-)estimates the initial overhead to be 32*4 bytes -- commonly\nseen values were around 90 bytes for initial feature-negotiation options.\n\nIt uses sizeof(u32) to mean \"aligned units of 4 bytes\".\nFor consistency, another use of 4-byte alignment is adapted.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "361a5c1dd0bd7bb2b90e7fe9127b366d3566522e",
      "tree": "440150dfa03f976d4ef6d3062744f2185373820d",
      "parents": [
        "9ce01461028d595a6f1cd724fbd7a0dd70464fe4"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Fri Feb 27 22:38:28 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Mar 02 03:07:23 2009 -0800"
      },
      "message": "dccp: Minimise header option overhead in setting the MPS\n\nThis patch resolves a long-standing FIXME to dynamically update the Maximum\nPacket Size depending on actual options usage.\n\nIt uses the flags set by the feature-negotiation infrastructure to compute\nthe required header option size.\n\nMost options are fixed-size, a notable exception are Ack Vectors (required\ncurrently only by CCID-2). These can have any length between 3 and 1020\nbytes. As a result of testing, 16 bytes (2 bytes for type/length plus 14 Ack\nVector cells) have been found to be sufficient for loss-free situations.\n\nThere are currently no CCID-specific header options which may appear on data\npackets, thus it is not necessary to define a corresponding CCID field as\nsuggested in the old comment.\n\nFurther changes:\n----------------\n Adjusted the type of \u0027cur_mps\u0027 to match the unsigned return type of the\n function.\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": "f3f3abb62ccb1a1c77bcce855c04e12356e6ac95",
      "tree": "6b3e73207a047e600ab44bfe126132c538f4d772",
      "parents": [
        "883ca833e5fb814fb03426c9d35e5489ce43e8da"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Fri Jan 16 23:36:33 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jan 21 14:34:05 2009 -0800"
      },
      "message": "dccp: Debugging functions for feature negotiation\n\nSince all feature-negotiation processing now takes place in feat.c,\nfunctions for producing verbose debugging output are concentrated\nthere.\n\nNew functions to print out values, entry records, and options are\nprovided, and also a macro is defined to not always have the function\nname in the output line.\n\nThanks a lot to Wei Yongjun and Giuseppe Galeota for help and\ndiscussion with an earlier revision of this patch.\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": "883ca833e5fb814fb03426c9d35e5489ce43e8da",
      "tree": "dcf361291b79e57195f8d89ca493c15c835b14cf",
      "parents": [
        "792b48780e8b6435d017cef4b5c304876a48653e"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Fri Jan 16 23:36:32 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jan 21 14:34:05 2009 -0800"
      },
      "message": "dccp: Initialisation and type-checking of feature sysctls\n\nThis patch takes care of initialising and type-checking sysctls\nrelated to feature negotiation. Type checking is important since some\nof the sysctls now directly impact the feature-negotiation process.\n\nThe sysctls are initialised with the known default values for each\nfeature.  For the type-checking the value constraints from RFC 4340\nare used:\n\n * Sequence Window uses the specified Wmin\u003d32, the maximum is ulong (4 bytes),\n   tested and confirmed that it works up to 4294967295 - for Gbps speed;\n * Ack Ratio is between 0 .. 0xffff (2-byte unsigned integer);\n * CCIDs are between 0 .. 255;\n * request_retries, retries1, retries2 also between 0..255 for good measure;\n * tx_qlen is checked to be non-negative;\n * sync_ratelimit remains as before.\n\nNotes:\n------\n 1. Die s@sysctl_dccp_feat@sysctl_dccp@g since the sysctls are now in feat.c.\n 2. As pointed out by Arnaldo, the pattern of type-checking repeats itself in\n    other places, sometimes with exactly the same kind of definitions (e.g.\n    \"static int zero;\"). It may be a good idea (kernel janitors?) to consolidate\n    type checking. For the sake of keeping the changeset small and in order not\n    to affect other subsystems, I have not strived to generalise here.\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": "792b48780e8b6435d017cef4b5c304876a48653e",
      "tree": "6949d6058f4d84f171a339e580ca906d30d67fad",
      "parents": [
        "f90f92eed74251034f251e3cdf4fa5c4c1f09df0"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Fri Jan 16 23:36:31 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jan 21 14:34:04 2009 -0800"
      },
      "message": "dccp: Implement both feature-local and feature-remote Sequence Window feature\n\nThis adds full support for local/remote Sequence Window feature, from which the\n  * sequence-number-validity (W) and\n  * acknowledgment-number-validity (W\u0027) windows\nderive as specified in RFC 4340, 7.5.3.\n\nSpecifically, the following is contained in this patch:\n  * integrated new socket fields into dccp_sk;\n  * updated the update_gsr/gss routines with regard to these fields;\n  * updated handler code: the Sequence Window feature is located at the TX side,\n    so the local feature is meant if the handler-rx flag is false;\n  * the initialisation of `rcv_wnd\u0027 in reqsk is removed, since\n    - rcv_wnd is not used by the code anywhere;\n    - sequence number checks are not done in the LISTEN state (cf. 7.5.3);\n    - dccp_check_req checks the Ack number validity more rigorously;\n  * the `struct dccp_minisock\u0027 became empty and is now removed.\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": "f90f92eed74251034f251e3cdf4fa5c4c1f09df0",
      "tree": "85ed44fee79d91d7bf1ebc6624a90e50af46063f",
      "parents": [
        "5cda9364f1fbc330f0d82f534505a8e375d0a66c"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Fri Jan 16 23:36:30 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jan 21 14:34:04 2009 -0800"
      },
      "message": "dccp: Initialisation framework for feature negotiation\n\nThis initialises feature negotiation from two tables, which are in\nturn are initialised from sysctls.\n\nAs a novel feature, specifics of the implementation (e.g. that short\nseqnos and ECN are not yet available) are advertised for robustness.\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": "4dbc242ed3c94ff1cc10640d2119279ba0be943e",
      "tree": "d409eaa2691d192cc1088aefbfe27a8399a48159",
      "parents": [
        "08168f7164fed494852361ab900358cd7a6b95d6"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Jan 11 00:17:22 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jan 11 00:17:22 2009 -0800"
      },
      "message": "dccp ccid-3: Fix RFC reference\n\nThanks to Wei and Arnaldo for pointing out the correct\nnew reference for CCID-3.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1b6725dea766b7437d885661140b6e0340d47613",
      "tree": "1a0122409eba1f3e3bd330a3d200e0198e2b6fdb",
      "parents": [
        "a7ee2f73f3ce90d73736de1cf432339c35a3faf2"
      ],
      "author": {
        "name": "Leonardo Potenza",
        "email": "lpotenza@inwind.it",
        "time": "Fri Jan 09 23:06:28 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jan 11 00:11:28 2009 -0800"
      },
      "message": "net: fix section mismatch warnings in dccp/ccids/lib/tfrc.c\n\nRemoved the __exit annotation of tfrc_lib_exit(), in order to suppress the following section mismatch messages:\n\nWARNING: net/dccp/dccp.o(.text+0xd9): Section mismatch in reference from the function ccid_cleanup_builtins() to the function .exit.text:tfrc_lib_exit()\nThe function ccid_cleanup_builtins() references a function in an exit section.\nOften the function tfrc_lib_exit() has valid usage outside the exit section\nand the fix is to remove the __exit annotation of tfrc_lib_exit.\n\nWARNING: net/dccp/dccp.o(.init.text+0x48): Section mismatch in reference from the function ccid_initialize_builtins() to the function .exit.text:tfrc_lib_exit()\nThe function __init ccid_initialize_builtins() references\na function __exit tfrc_lib_exit().\nThis is often seen when error handling in the init function\nuses functionality in the exit path.\nThe fix is often to remove the __exit annotation of\ntfrc_lib_exit() so it may be used outside an exit section.\n\nSigned-off-by: Leonardo Potenza \u003clpotenza@inwind.it\u003e\nAcked-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nAcked-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "129fa44785a399248ae2466b6cb5c655e96668f7",
      "tree": "c2440b83e752c6cf3e6ec6f60492b85ddb8932a9",
      "parents": [
        "e5fd56ca4eb3a130882bbef69d6952ef6aca5c8d"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Jan 04 21:45:33 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jan 04 21:45:33 2009 -0800"
      },
      "message": "dccp: Integrate the TFRC library with DCCP\n\nThis patch integrates the TFRC library, which is a dependency of CCID-3 (and\nCCID-4), with the new use of CCIDs in the DCCP module.\t\t\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e5fd56ca4eb3a130882bbef69d6952ef6aca5c8d",
      "tree": "4e0c6670335f2434fbe8f44554988ca9832a685a",
      "parents": [
        "ddebc973c56b51b4e5d84d606f0430d81b895d67"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Jan 04 21:43:23 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jan 04 21:43:23 2009 -0800"
      },
      "message": "dccp: Clean up ccid.c after integration of CCID plugins\n\nThis patch cleans up after integrating the CCID modules and, in addition,\n\n * moves the if/else cases from ccid_delete() into ccid_hc_{tx,rx}_delete();\n * removes the \u0027gfp\u0027 argument to ccid_new() - since it is always gfp_any().\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ddebc973c56b51b4e5d84d606f0430d81b895d67",
      "tree": "cebe0e4461346072b2063132fc1d9cf8c3e148f1",
      "parents": [
        "6ea2fde13abd3444008ab5e9585f9ed249e6047e"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Jan 04 21:42:53 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jan 04 21:42:53 2009 -0800"
      },
      "message": "dccp: Lockless integration of CCID congestion-control plugins\n\nBased on Arnaldo\u0027s earlier patch, this patch integrates the standardised\nCCID congestion control plugins (CCID-2 and CCID-3) of DCCP with dccp.ko:\n\n * enables a faster connection path by eliminating the need to always go \n   through the CCID registration lock;\n\n * updates the implementation to use only a single array whose size equals\n   the number of configured CCIDs instead of the maximum (256);\n\n * since the CCIDs are now fixed array elements, synchronization is no\n   longer needed, simplifying use and implementation.\n\nCCID-2 is suggested as minimum for a basic DCCP implementation (RFC 4340, 10);\nCCID-3 is a standards-track CCID supported by RFC 4342 and RFC 5348.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "eb4dea5853046727bfbb579f0c9a8cae7369f7c6",
      "tree": "79e18d6284494ab63a890885b0eecce9431a9597",
      "parents": [
        "0f23174aa8c1aa7a2a6050a72a60d290ef9ee578"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Mon Dec 29 23:04:08 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 29 23:04:08 2008 -0800"
      },
      "message": "net: Fix percpu counters deadlock\n\nWhen we converted the protocol atomic counters such as the orphan\ncount and the total socket count deadlocks were introduced due to\nthe mismatch in BH status of the spots that used the percpu counter\noperations.\n\nBased on the diagnosis and patch by Peter Zijlstra, this patch\nfixes these issues by disabling BH where we may be in process\ncontext.\n\nReported-by: Jeff Kirsher \u003cjeffrey.t.kirsher@intel.com\u003e\nTested-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a693722aec4ce26fb46c21cf4bf4422484a397a7",
      "tree": "003b408f7473bbc9804e185f850cf6f6017e7f1d",
      "parents": [
        "9732d523212060c44a4723332bdc5ee429eeabc3"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Wed Dec 17 16:08:01 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Dec 17 16:08:01 2008 -0800"
      },
      "message": "dccp_diag: LISTEN sockets don\u0027t have CCIDs\n\nAnd thus when we try to use \u0027ss -danemi\u0027 on these sockets that have no\nccid blocks (data collected using systemtap after I fixed the problem):\n\ndccp_diag_get_info sk\u003d0xffff8801220a3100, dp-\u003edccps_hc_rx_ccid\u003d0x0000000000000000, dp-\u003edccps_hc_tx_ccid\u003d0x0000000000000000\n\nWe get an OOPS:\n\nmica.ghostprotocols.net login: BUG: unable to handle kernel NULL pointer\ndereferenc0\nIP: [\u003cffffffffa0136082\u003e] dccp_diag_get_info+0x82/0xc0 [dccp_diag]\nPGD 12106f067 PUD 122488067 PMD 0\nOops: 0000 [#1] PREEMPT\n\nFix is trivial, and \u0027ss -d\u0027 is working again:\n\n[root@mica ~]# ss -danemi\nState   Recv-Q Send-Q   Local Address:Port   Peer Address:Port \nLISTEN  0      0                    *:5001              *:*\nino:7288 sk:220a3100ffff8801\n\t mem:(r0,w0,f0,t0) cwnd:0 ssthresh:0\n[root@mica ~]# \n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6fdd34d43bff8be9bb925b49d87a0ee144d2ab07",
      "tree": "547cf602983db37d573d3d191ac11660f1698e8f",
      "parents": [
        "4098dce5be537a157eed4a326efd464109825b8b"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Dec 08 01:19:06 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 08 01:19:06 2008 -0800"
      },
      "message": "dccp ccid-2: Phase out the use of boolean Ack Vector sysctl\n\nThis removes the use of the sysctl and the minisock variable for the Send Ack\nVector feature, as it now is handled fully dynamically via feature negotiation\n(i.e. when CCID-2 is enabled, Ack Vectors are automatically enabled as per\n RFC 4341, 4.).\n\nUsing a sysctl in parallel to this implementation would open the door to\ncrashes, since much of the code relies on tests of the boolean minisock /\nsysctl variable. Thus, this patch replaces all tests of type\n\n\tif (dccp_msk(sk)-\u003edccpms_send_ack_vector)\n\t\t/* ... */\nwith\n\tif (dp-\u003edccps_hc_rx_ackvec !\u003d NULL)\n\t\t/* ... */\n\nThe dccps_hc_rx_ackvec is allocated by the dccp_hdlr_ackvec() when feature\nnegotiation concluded that Ack Vectors are to be used on the half-connection.\nOtherwise, it is NULL (due to dccp_init_sock/dccp_create_openreq_child),\nso that the test is a valid one.\n\nThe activation handler for Ack Vectors is called as soon as the feature\nnegotiation has concluded at the\n * server when the Ack marking the transition RESPOND \u003d\u003e OPEN arrives;\n * client after it has sent its ACK, marking the transition REQUEST \u003d\u003e PARTOPEN.\n\nAdding the sequence number of the Response packet to the Ack Vector has been\nremoved, since\n (a) connection establishment implies that the Response has been received;\n (b) the CCIDs only look at packets received in the (PART)OPEN state, i.e.\n     this entry will always be ignored;\n (c) it can not be used for anything useful - to detect loss for instance, only\n     packets received after the loss can serve as pseudo-dupacks.\n\nThere was a FIXME to change the error code when dccp_ackvec_add() fails.\nI removed this after finding out that:\n * the check whether ackno \u003c ISN is already made earlier,\n * this Response is likely the 1st packet with an Ackno that the client gets,\n * so when dccp_ackvec_add() fails, the reason is likely not a packet error.\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": "4098dce5be537a157eed4a326efd464109825b8b",
      "tree": "f7116e98853d805eb874c4f2345c3cce2acbfaa7",
      "parents": [
        "0049bab5e765aa74cf767a834fa336e19453fc5e"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Dec 08 01:18:37 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 08 01:18:37 2008 -0800"
      },
      "message": "dccp: Remove manual influence on NDP Count feature\n\nUpdating the NDP count feature is handled automatically now:\n * for CCID-2 it is disabled, since the code does not use NDP counts;\n * for CCID-3 it is enabled, as NDP counts are used to determine loss lengths.\n\nAllowing the user to change NDP values leads to unpredictable and failing\nbehaviour, since it is then possible to disable NDP counts even when they\nare needed (e.g. in CCID-3).\n\nThis means that only those user settings are sensible that agree with the\nvalues for Send NDP Count implied by the choice of CCID. But those settings\nare already activated by the feature negotiation (CCID dependency tracking),\nhence this form of support is redundant.\n\nAt startup the initialisation of the NDP count feature uses the default\nvalue of 0, which is done implicitly by the zeroing-out of the socket when\nit is allocated. If the choice of CCID or feature negotiation enables NDP\ncount, this will then be updated via the NDP activation handler.\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": "0049bab5e765aa74cf767a834fa336e19453fc5e",
      "tree": "f3210e13c5645dbedffe90a4b1f1dca787673bb0",
      "parents": [
        "63b8e2861f31868dce9c92fd7444f212a5a8a775"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Dec 08 01:18:05 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 08 01:18:05 2008 -0800"
      },
      "message": "dccp: Remove obsolete parts of the old CCID interface\n\nThe TX/RX CCIDs of the minisock are now redundant: similar to the Ack Vector\ncase, their value equals initially that of the sysctl, but at the end of\nfeature negotiation may be something different.\n\nThe old interface removed by this patch thus has been replaced by the newer\ninterface to dynamically query the currently loaded CCIDs.\n\nAlso removed are the constructors for the TX CCID and the RX CCID, since the\nswitch \"rx \u003c-\u003e non-rx\" is done by the handler in minisocks.c (and the handler\nis the only place in the code where CCIDs are loaded).\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": "63b8e2861f31868dce9c92fd7444f212a5a8a775",
      "tree": "086f7deee646fb9b69d58f06509e58664eeba27a",
      "parents": [
        "991d927c8652b2ab51bd8eef2b773bb2c77d457b"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Dec 08 01:17:32 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 08 01:17:32 2008 -0800"
      },
      "message": "dccp: Clean up old feature-negotiation infrastructure\n\nThe code removed by this patch is no longer referenced or used, the added\nlines update documentation and copyrights.\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": "991d927c8652b2ab51bd8eef2b773bb2c77d457b",
      "tree": "b21cab0ebe4b9f93a2c57b6dc6cd2f38ec828301",
      "parents": [
        "192b27ff35bad4cf76cc4239419e9f805935e4f8"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Dec 08 01:16:27 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 08 01:16:27 2008 -0800"
      },
      "message": "dccp: Integration of dynamic feature activation - part 3 (client side)\n\nThis integrates feature-activation in the client:\n\n 1. When dccp_parse_options() fails, the reset code is already set; request_sent\\\n    _state_process() currently overrides this with `Packet Error\u0027, which is not\n    intended - changed to use the reset code supplied by dccp_parse_options().\n\n 2. When feature negotiation fails, the socket should be marked as not usable,\n    so that the application is notified that an error occurred. This is achieved\n    by a new label \u0027unable_to_proceed\u0027: generating an error code of `Aborted\u0027,\n    setting the socket state to CLOSED, returning with ECOMM in sk_err.\n\n 3. Avoids parsing the Ack twice in Respond state by not doing option processing\n    again in dccp_rcv_respond_partopen_state_process (as option processing has\n    already been done on the request_sock in dccp_check_req).\n\nSince this addresses congestion-control initialisation, a corresponding\nFIXME has been removed.\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": "192b27ff35bad4cf76cc4239419e9f805935e4f8",
      "tree": "8ad3bdb36f4cf7ef4f15c737c22f3b4d6b9578d3",
      "parents": [
        "6eb55d172b5f6de65afdae6285f8d732e4785bf7"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Dec 08 01:15:55 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 08 01:15:55 2008 -0800"
      },
      "message": "dccp: Integration of dynamic feature activation - part 2 (server side)\n\nThis patch integrates the activation of features at the end of negotiation\ninto the server-side code.\n\nNote regarding the removal of \u0027const\u0027:\n--------------------------------------\n The \u0027const\u0027 attribute has been removed from \u0027dreq\u0027 since dccp_activate_values()\n needs to operate on dreq\u0027s feature list. Part of the activation is to remove\n those options from the list that have already been confirmed, hence it is not\n purely read-only.\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": "6eb55d172b5f6de65afdae6285f8d732e4785bf7",
      "tree": "dbc81b2610db0e62cf2c69a0da9dfa68ea3ff8c1",
      "parents": [
        "b74ca3a896b9ab5f952bc440154758e708c48884"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Dec 08 01:15:26 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 08 01:15:26 2008 -0800"
      },
      "message": "dccp: Integration of dynamic feature activation - part 1 (socket setup)\n\nThis first patch out of three replaces the hardcoded default settings with\ninitialisation code for the dynamic feature negotiation.\n\nThe patch also ensures that the client feature-negotiation queue is flushed\nonly when entering the OPEN state.\n\nSince confirmed Change options are removed as soon as they are confirmed\n(in the DCCP-Response), this ensures that Confirm options are retransmitted.\n\nNote on retransmitting Confirm options:\n---------------------------------------\nImplementation experience showed that it is necessary to retransmit Confirm\noptions. Thanks to Leandro Melo de Sales who reported a bug in an earlier\nrevision of the patch set, resulting from not retransmitting these options.\n\nAs long as the client is in PARTOPEN, it needs to retransmit the Confirm\noptions for the Change options received on the DCCP-Response from the server.\n\nOtherwise, if the packet containing the Confirm options gets dropped in the\nnetwork, the connection aborts due to undefined feature negotiation state.\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": "61c1d052a3c7d5acba3bd535aaffa5bb5d085181",
      "tree": "c638a390d7f3967bd43a84a0cfe4ca35f1b629a2",
      "parents": [
        "d2b88814c6a63e4018cd299826907a12068ffdb7"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Fri Dec 05 22:39:49 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 05 22:39:49 2008 -0800"
      },
      "message": "dccp: use roundup instead of opencoding\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "422d9cdcb85b3622d08a590fed66021af7aea333",
      "tree": "e40520346933d4c1d27ad7712f09bcd45fb25fca",
      "parents": [
        "b1ad00422ecba0449f8e3a8f2ec9267bc994bf8f"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Dec 01 23:34:01 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 01 23:34:01 2008 -0800"
      },
      "message": "dccp: Feature activation handlers\n\nThis patch provides the post-processing of feature negotiation state, after\nthe negotiation has completed.\n\nTo this purpose, handlers are used and added to the dccp_feat_table. Each\nhandler is passed a boolean flag whether the RX or TX side of the feature\nis meant.\n\nSeveral handlers are provided already, new handlers can easily be added.\n\nThe initialisation is now fully dynamic, i.e. CCIDs are activated only\nafter the feature negotiation. The integration of this dynamic activation\nis done in the subsequent patches.\n\nThanks to Wei Yongjun for pointing out the necessity of skipping over empty\nConfirm options while copying the negotiated feature values.\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": "b1ad00422ecba0449f8e3a8f2ec9267bc994bf8f",
      "tree": "6a3923ca76d60dd0e39b7323c8abaa74bbc7db20",
      "parents": [
        "e77b8363b2ea7c0d89919547c1a8b0562f298b57"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Dec 01 23:33:18 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 01 23:33:18 2008 -0800"
      },
      "message": "dccp: Processing Confirm options\n\nAnalogous to the previous patch, this adds code to interpret incoming Confirm\nfeature-negotiation options. Both functions operate on the feature-negotiation\nlist of either the request_sock (server) or the dccp_sock (client).\n\nThanks to Wei Yongjun for pointing out that it is overly restrictive to check\nthe entire list of confirmed SP values.\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": "e77b8363b2ea7c0d89919547c1a8b0562f298b57",
      "tree": "9fdef240be3aeb49c012fd00d41f9ee90afe776c",
      "parents": [
        "75757a7d0c54f8fdd414c74a6005d275032b0115"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Dec 01 23:32:35 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 01 23:32:35 2008 -0800"
      },
      "message": "dccp: Process incoming Change feature-negotiation options\n\nThis adds/replaces code for processing incoming ChangeL/R options.\nThe main difference is that:\n * mandatory FN options are now interpreted inside the function\n  (there are too many individual cases to do this externally);\n * the function returns an appropriate Reset code or 0,\n   which is then used to fill in the data for the Reset packet.\n\nOld code, which is no longer used or referenced, has 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": "75757a7d0c54f8fdd414c74a6005d275032b0115",
      "tree": "768c07adad4a6f42723acfeada434c045f36a489",
      "parents": [
        "8b7b6c75c6387527b195bb69100182288da94f84"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Dec 01 23:31:04 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 01 23:31:04 2008 -0800"
      },
      "message": "dccp: Preference list reconciliation\n\nThis provides two functions to\n * reconcile preference lists (with appropriate return codes) and\n * reorder the preference list if successful reconciliation changed the\n   preferred value.\n\nThe patch also removes the old code for processing SP/NN Change options, since\nnew code to process these is mostly there already; related references have been\ncommented out.\n\nThe code for processing Change options follows in the next patch.\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": "8b7b6c75c6387527b195bb69100182288da94f84",
      "tree": "4a87cbdcacf5736c41eae01481c31c2729bea1a6",
      "parents": [
        "0971d17ca3d80f61863f4750091a64448bf91600"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Dec 01 23:29:30 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 01 23:29:30 2008 -0800"
      },
      "message": "dccp: Integrate feature-negotiation insertion code\n\nThe patch implements insertion of feature negotiation at the server (listening\nand request socket) and the client (connecting socket).\n\nIn dccp_insert_options(), several statements have been grouped together now\nto achieve (it is hoped) better efficiency by reducing the number of tests\neach packet has to go through:\n - Ack Vectors are sent if the packet is neither a Data or a Request packet;\n - a previous issue is corrected - feature negotiation options are allowed\n   on DataAck packets (5.8).\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": "0971d17ca3d80f61863f4750091a64448bf91600",
      "tree": "4f4a4f334b382c873462788adf915e85230f5363",
      "parents": [
        "25f13048bce61f33f6a102e0bf377fd3922ed364"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Dec 01 23:27:31 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 01 23:27:31 2008 -0800"
      },
      "message": "dccp: Insert feature-negotiation options into skb\n\nThis patch replaces the earlier insertion routine from options.c, so that\ncode specific to feature negotiation can remain in feat.c. This is possible\nby calling a function already existing in options.c.\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": "dd24c00191d5e4a1ae896aafe33c6b8095ab4bd1",
      "tree": "e955c09e0b288e50c706b6ee409229d5a930c80c",
      "parents": [
        "1748376b6626acf59c24e9592ac67b3fe2a0e026"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Tue Nov 25 21:17:14 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 25 21:17:14 2008 -0800"
      },
      "message": "net: Use a percpu_counter for orphan_count\n\nInstead of using one atomic_t per protocol, use a percpu_counter\nfor \"orphan_count\", to reduce cache line contention on\nheavy duty network servers. \n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "52479b623d3d41df84c499325b6a8c7915413032",
      "tree": "196f303f296b53dc89a05954d9c03226a9b4158b",
      "parents": [
        "cdcbca7c1f1946758cfacb69bc1c7eeaccb11e2d"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Nov 25 17:35:18 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 25 17:35:18 2008 -0800"
      },
      "message": "netns xfrm: lookup in netns\n\nPass netns to xfrm_lookup()/__xfrm_lookup(). For that pass netns\nto flow_cache_lookup() and resolver callback.\n\nTake it from socket or netdevice. Stub DECnet to init_net.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3ed7cc0f8b29da4304825a7bcef25fc83f84c1ae",
      "tree": "ee7dcfc216faa1668b763b25af55ad569e920f28",
      "parents": [
        "b71e839f9a33abf8634b1eea4875bc8057fe39e2"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Nov 25 16:57:30 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 25 16:57:30 2008 -0800"
      },
      "message": "dccp: fix warning in net/dccp/options.c\n\nthis warning:\n\n  net/dccp/options.c: In function ‘dccp_parse_options’:\n  net/dccp/options.c:67: warning: ‘value’ may be used uninitialized in this function\n\nis a bogus GCC warning. The compiler does not recognize the relation\nbetween \"value\" and \"mandatory\" variables: the code flow can ever reach\nthe \"out_invalid_option:\" label if \u0027mandatory\u0027 is set to 1, and when\n\u0027mandatory\u0027 is non-zero, we\u0027ll always have \u0027value\u0027 initialized.\n\nHelp out the compiler by annotating the variable.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8c862c23e2563e6aedfc6c4aa6827cadb83f2414",
      "tree": "55550ae7c2b62e5b93a09487278db91c334d615a",
      "parents": [
        "d371056695ef993d36c57b73d654e66080377a9c"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Nov 23 16:10:23 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 23 16:10:23 2008 -0800"
      },
      "message": "dccp: Header option insertion routine for feature-negotiation\n\nThe patch extends existing code:\n * Confirm options divide into the confirmed value plus an optional preference\n   list for SP values. Previously only the preference list was echoed for SP\n   values, now the confirmed value is added as per RFC 4340, 6.1;\n * length and sanity checks are added to avoid illegal memory (or NULL) access.\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": "d371056695ef993d36c57b73d654e66080377a9c",
      "tree": "85e587e5558cf00232d8b24b4e28a390d3856d2a",
      "parents": [
        "02fa460ef553faabc7e0b15ff9f607f028739808"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Nov 23 16:09:11 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 23 16:09:11 2008 -0800"
      },
      "message": "dccp: Support for Mandatory options\n\nSupport for Mandatory options is provided by this patch, which will\nbe used by subsequent feature-negotiation patches.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nAcked-by: Ian McDonald \u003cian.mcdonald@jandi.co.nz\u003e\nAcked-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "02fa460ef553faabc7e0b15ff9f607f028739808",
      "tree": "04342d781df0b0a1953cfcc6c52cbca7e172896a",
      "parents": [
        "71c262a3dd42dea73700646d969b0af7a4102edf"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Nov 23 16:07:53 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 23 16:07:53 2008 -0800"
      },
      "message": "dccp: Increase the scope of variable-length htonl/ntohl functions\n\nThis extends the scope of two available functions,\nencode|decode_value_var, to work up to 6 (8) bytes, to match maximum\nrequirements in the RFC.\n\nThese functions are going to be used both by general option processing\nand feature negotiation code, hence declarations have been put into\nfeat.h.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nAcked-by: Ian McDonald \u003cian.mcdonald@jandi.co.nz\u003e\nAcked-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "71c262a3dd42dea73700646d969b0af7a4102edf",
      "tree": "7586f62639805bc6b6854b71294e53be66490f2c",
      "parents": [
        "b20a9c24d5c5d466d7e4a25c6f1bedbd2d16ad4f"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Nov 23 16:04:59 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 23 16:04:59 2008 -0800"
      },
      "message": "dccp: API to query the current TX/RX CCID\n\nThis provides function to query the current TX/RX CCID dynamically,\nwithout reliance on the minisock value, using dynamic information\navailable in the currently loaded CCID module.\n\nThis query function is then used to\n (a) provide the getsockopt part for getting/setting CCIDs via sockopts;\n (b) replace the current test for \"which CCID is in use\" in probe.c.\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": "b20a9c24d5c5d466d7e4a25c6f1bedbd2d16ad4f",
      "tree": "17789215657f693caf36e22d3e724cc1b1e07ba6",
      "parents": [
        "2c62ad7b56fa8e2658253c0256ef4c4de228a0b9"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Nov 23 16:02:31 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 23 16:02:31 2008 -0800"
      },
      "message": "dccp: Set per-connection CCIDs via socket options\n\nWith this patch, TX/RX CCIDs can now be changed on a per-connection\nbasis, which overrides the defaults set by the global sysctl variables\nfor TX/RX CCIDs.\n\nTo make full use of this facility, the remaining patches of this patch\nset are needed, which track dependencies and activate negotiated\nfeature values.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3d3e35aa78c9498eed3209c9d82376085ed0c36f",
      "tree": "76c349b4017f63ed8e0ac7f9d96ce5b64c8118b0",
      "parents": [
        "f4bdd264b43cc60dccb617afce2859dffdd7a935"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Nov 20 01:03:08 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 20 01:03:08 2008 -0800"
      },
      "message": "dccp: Fix bracing in dccp_feat_list_lookup.\n\nFrom: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5caea4ea7088e80ac5410d04660346094608b909",
      "tree": "fad95133683c002d24ff5de7fb756dad806b41ed",
      "parents": [
        "d8b83c57a7e497cba9b5cb156e63176323035785"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Thu Nov 20 00:40:07 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 20 00:40:07 2008 -0800"
      },
      "message": "net: listening_hash get a spinlock per bucket\n\nThis patch prepares RCU migration of listening_hash table for\nTCP/DCCP protocols.\n\nlistening_hash table being small (32 slots per protocol), we add\na spinlock for each slot, instead of a single rwlock for whole table.\n\nThis should reduce hold time of readers, and writers concurrency.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a7a0d6a87b70f7b2bab5281fc0fd443772bd0795",
      "tree": "adb4978c449d9ae570e848910ac777dd513277ac",
      "parents": [
        "14e943db133489c98d426a0dcfce4a99c6e8ad97"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Wed Nov 19 15:43:27 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 19 15:43:27 2008 -0800"
      },
      "message": "net: inet_diag_handler structs can be const\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "191029963630719e867d8bd0c315d32c822622cb",
      "tree": "fb8284951c59eb8f3547c9cde09c189c07b702c1",
      "parents": [
        "dd9c0e363cef32b7d6f23d4c87e8dfe4f91fd1c5"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Nov 16 22:56:55 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 16 22:56:55 2008 -0800"
      },
      "message": "dccp: Tidy up setsockopt calls\n\nThis splits the setsockopt calls into two groups, depending on whether an\ninteger argument (val) is required and whether routines being called do\ntheir own locking.\n\nSome options (such as setting the CCID) use u8 rather than int, so that for\nthese the test with regard to integer-sizeof can not be used.\n\nThe second switch-case statement now only has those statements which need\nlocking and which make use of `val\u0027.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nAcked-by: Ian McDonald \u003cian.mcdonald@jandi.co.nz\u003e\nAcked-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nReviewed-by: Eugene Teo \u003ceugeneteo@kernel.sg\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "dd9c0e363cef32b7d6f23d4c87e8dfe4f91fd1c5",
      "tree": "2ae48a033a925169f0fd71bdc18a683a308f46c4",
      "parents": [
        "29450559849da7066813601effb7666966869853"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Nov 16 22:55:08 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 16 22:55:08 2008 -0800"
      },
      "message": "dccp: Deprecate Ack Ratio sysctl\n\nThis patch deprecates the Ack Ratio sysctl, since\n * Ack Ratio is entirely ignored by CCID-3 and CCID-4,\n * Ack Ratio currently doesn\u0027t work in CCID-2 (i.e. is always set to 1);\n * even if it would work in CCID-2, there is no point for a user to change it:\n   - Ack Ratio is constrained by cwnd (RFC 4341, 6.1.2),\n   - if Ack Ratio \u003e cwnd, the system resorts to spurious RTO timeouts\n     (since waiting for Acks which will never arrive in this window),\n   - cwnd is not a user-configurable value.\n\nThe only reasonable place for Ack Ratio is to print it for debugging. It is\nplanned to do this later on, as part of e.g. dccp_probe.\n\nWith this patch Ack Ratio is now under full control of feature negotiation:\n * Ack Ratio is resolved as a dependency of the selected CCID;\n * if the chosen CCID supports it (i.e. CCID \u003d\u003d CCID-2), Ack Ratio is set to\n   the default of 2, following RFC 4340, 11.3 - \"New connections start with Ack\n   Ratio 2 for both endpoints\";\n * what happens then is part of another patch set, since it concerns the\n   dynamic update of Ack Ratio while the connection is in full flight.\n\nThanks to Tomasz Grobelny for discussion leading up to this patch.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nAcked-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "29450559849da7066813601effb7666966869853",
      "tree": "5a55d997460a85da733e1960bc74de0f170e8106",
      "parents": [
        "49aebc66d6b896f9c7c5739d85c4548c00015aa7"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Nov 16 22:53:48 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 16 22:53:48 2008 -0800"
      },
      "message": "dccp: Feature negotiation for minimum-checksum-coverage\n\nThis provides feature negotiation for server minimum checksum coverage\nwhich so far has been missing.\n\nSince sender/receiver coverage values range only from 0...15, their\ntype has also been reduced in size from u16 to u4.\n\nFeature-negotiation options are now generated for both sender and receiver\ncoverage, i.e. when the peer has `forgotten\u0027 to enable partial coverage\nthen feature negotiation will automatically enable (negotiate) the partial\ncoverage value for this connection.\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": "49aebc66d6b896f9c7c5739d85c4548c00015aa7",
      "tree": "0b12afdd2e742c3eb481aef8d2adcb7b1aeca9f1",
      "parents": [
        "0c1168398ecbfacbb27203b281bde20ec9f78017"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Nov 16 22:51:23 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 16 22:51:23 2008 -0800"
      },
      "message": "dccp: Deprecate old setsockopt framework\n\nThe previous setsockopt interface, which passed socket options via struct\ndccp_so_feat, is complicated/difficult to use. Continuing to support it leads to\nugly code since the old approach did not distinguish between NN and SP values.\n\nThis patch removes the old setsockopt interface and replaces it with two new\nfunctions to register NN/SP values for feature negotiation. \nThese are essentially wrappers around the internal __feat_register functions,\nwith checking added to avoid\n\n * wrong usage (type);\n * changing values while the connection is in progress.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0c1168398ecbfacbb27203b281bde20ec9f78017",
      "tree": "3298379e950bba174b46e53102f265829340fa6d",
      "parents": [
        "3f2c31d90327f21d76d296af34aa4ca547932ff4"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Nov 16 22:49:52 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 16 22:49:52 2008 -0800"
      },
      "message": "dccp: Mechanism to resolve CCID dependencies\n\nThis adds a hook to resolve features whose value depends on the choice of\nCCID. It is done at the server since it can only be done after the CCID\nvalues have been negotiated; i.e. the client will add its CCID preference\nlist on the Change options sent in the Request, which will be reconciled\nwith the local preference list of the server.\n\nThe concept is documented on\nhttp://www.erg.abdn.ac.uk/users/gerrit/dccp/notes/feature_negotiation/\\\n\t\t\t\timplementation_notes.html#ccid_dependencies\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": "3ab5aee7fe840b5b1b35a8d1ac11c3de5281e611",
      "tree": "468296b7be813643248d4ca67497d6ddb6934fc6",
      "parents": [
        "88ab1932eac721c6e7336708558fa5ed02c85c80"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Sun Nov 16 19:40:17 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 16 19:40:17 2008 -0800"
      },
      "message": "net: Convert TCP \u0026 DCCP hash tables to use RCU / hlist_nulls\n\nRCU was added to UDP lookups, using a fast infrastructure :\n- sockets kmem_cache use SLAB_DESTROY_BY_RCU and dont pay the\n  price of call_rcu() at freeing time.\n- hlist_nulls permits to use few memory barriers.\n\nThis patch uses same infrastructure for TCP/DCCP established\nand timewait sockets.\n\nThanks to SLAB_DESTROY_BY_RCU, no slowdown for applications\nusing short lived TCP connections. A followup patch, converting\nrwlocks to spinlocks will even speedup this case.\n\n__inet_lookup_established() is pretty fast now we dont have to\ndirty a contended cache line (read_lock/read_unlock)\n\nOnly established and timewait hashtable are converted to RCU\n(bind table and listen table are still using traditional locking)\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9eca0a47dee201a73967026985b5f0a79a46bd36",
      "tree": "beb39fbd3c28865705d7409aa35fd59914257da9",
      "parents": [
        "d90ebcbfa7f5a8b4e20518c9f94c5c4e4cd3c2e5"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Nov 12 00:48:44 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 12 00:48:44 2008 -0800"
      },
      "message": "dccp: Resolve dependencies of features on choice of CCID\n\nThis provides a missing link in the code chain, as several features implicitly\ndepend and/or rely on the choice of CCID. Most notably, this is the Send Ack Vector\nfeature, but also Ack Ratio and Send Loss Event Rate (also taken care of).\n\nFor Send Ack Vector, the situation is as follows:\n * since CCID2 mandates the use of Ack Vectors, there is no point in allowing \n   endpoints which use CCID2 to disable Ack Vector features such a connection;\n\n * a peer with a TX CCID of CCID2 will always expect Ack Vectors, and a peer\n   with a RX CCID of CCID2 must always send Ack Vectors (RFC 4341, sec. 4);\n\n * for all other CCIDs, the use of (Send) Ack Vector is optional and thus\n   negotiable. However, this implies that the code negotiating the use of Ack\n   Vectors also supports it (i.e. is able to supply and to either parse or\n   ignore received Ack Vectors). Since this is not the case (CCID-3 has no Ack\n   Vector support), the use of Ack Vectors is here disabled, with a comment\n   in the source code.\n\nAn analogous consideration arises for the Send Loss Event Rate feature,\nsince the CCID-3 implementation does not support the loss interval options\nof RFC 4342. To make such use explicit, corresponding feature-negotiation\noptions are inserted which signal the use of the loss event rate option,\nas it is used by the CCID3 code.\n\nLastly, the values of the Ack Ratio feature are matched to the choice of CCID.\n\nThe patch implements this as a function which is called after the user has\nmade all other registrations for changing default values of features.\n\nThe table is variable-length, the reserved (and hence for feature-negotiation\ninvalid, confirmed by considering section 19.4 of RFC 4340) feature number `0\u0027\nis used to mark the end of the table.\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": "d90ebcbfa7f5a8b4e20518c9f94c5c4e4cd3c2e5",
      "tree": "b1fb407c7ee1adbe8215311675d133a83a2d55b5",
      "parents": [
        "e8ef967a54f401ac5e8637b7f7f8bddb006144c4"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Nov 12 00:47:26 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 12 00:47:26 2008 -0800"
      },
      "message": "dccp: Query supported CCIDs\n\nThis provides a data structure to record which CCIDs are locally supported\nand three accessor functions:\n - a test function for internal use which is used to validate CCID requests\n   made by the user;\n - a copy function so that the list can be used for feature-negotiation;   \n - documented getsockopt() support so that the user can query capabilities.\n\nThe data structure is a table which is filled in at compile-time with the\nlist of available CCIDs (which in turn depends on the Kconfig choices).\n\nUsing the copy function for cloning the list of supported CCIDs is useful for\nfeature negotiation, since the negotiation is now with the full list of available\nCCIDs (e.g. {2, 3}) instead of the default value {2}. This means negotiation \nwill not fail if the peer requests to use CCID3 instead of CCID2. \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": "e8ef967a54f401ac5e8637b7f7f8bddb006144c4",
      "tree": "37f7e6b384f27f30158e8f5d750fa3235951265d",
      "parents": [
        "f74e91b6cca5889e667193c7e794186db73c2000"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Nov 12 00:43:40 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 12 00:43:40 2008 -0800"
      },
      "message": "dccp: Registration routines for changing feature values\n\nTwo registration routines, for SP and NN features, are provided by this patch,\nreplacing a previous routine which was used for both feature types.\n\nThese are internal-only routines and therefore start with `__feat_register\u0027.\n\nIt further exports the known limits of Sequence Window and Ack Ratio as symbolic\nconstants.\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": "f74e91b6cca5889e667193c7e794186db73c2000",
      "tree": "10f6a612d97b3ab5ba4ecd75b6decb669f178d76",
      "parents": [
        "6bb3ce25d05f2990c8a19adaf427531430267c1f"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Nov 12 00:42:58 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 12 00:42:58 2008 -0800"
      },
      "message": "dccp: Limit feature negotiation to connection setup phase\n\nThis patch limits feature (capability) negotation to the connection setup phase:\n\n 1. Although it is theoretically possible to perform feature negotiation at any\n    time (and RFC 4340 supports this), in practice this is prohibitively complex,\n    as it requires to put traffic on hold for each new negotiation.\n 2. As a byproduct of restricting feature negotiation to connection setup, the\n    feature-negotiation retransmit timer is no longer required. This part is now\n    mapped onto the protocol-level retransmission.\n    Details indicating why timers are no longer needed can be found on\n    http://www.erg.abdn.ac.uk/users/gerrit/dccp/notes/feature_negotiation/\\\n\t                                      implementation_notes.html\n\nThis patch disables anytime negotiation, subsequent patches work out full\nfeature negotiation support for connection setup.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d99a7bd210a14001007fc5233597c78877f0a11c",
      "tree": "366ef8703e0453608ed39e0e7c2f4f4d043a46e9",
      "parents": [
        "ac75773c2742d82cbcb078708df406e9017224b7"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Nov 04 23:56:30 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 04 23:56:30 2008 -0800"
      },
      "message": "dccp: Cleanup routines for feature negotiation\n\nThis inserts the required de-allocation routines for memory allocated\nby feature negotiation in the socket destructors, replacing\ndccp_feat_clean() in one instance.\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": "ac75773c2742d82cbcb078708df406e9017224b7",
      "tree": "7e7b1aa5131c4a61aabd9d86d7332eca98d66a89",
      "parents": [
        "61e6473efbd6087e1db3aaa93a5266c5bfd8aa99"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Nov 04 23:55:49 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 04 23:55:49 2008 -0800"
      },
      "message": "dccp: Per-socket initialisation of feature negotiation\n\nThis provides feature-negotiation initialisation for both DCCP sockets\nand DCCP request_sockets, to support feature negotiation during\nconnection setup.\n\nIt also resolves a FIXME regarding the congestion control\ninitialisation.\n\nThanks to Wei Yongjun for help with the IPv6 side of this patch.\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": "61e6473efbd6087e1db3aaa93a5266c5bfd8aa99",
      "tree": "4717cfb41ad603d5def3db557628e5d96a918e63",
      "parents": [
        "7d43d1a0f2cf535167ec7247f110a1f85cecac43"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Nov 04 23:54:04 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 04 23:54:04 2008 -0800"
      },
      "message": "dccp: List management for new feature negotiation\n\nThis adds list initial fields and list management functions for the\nnew feature negotiation implementation.\n\nThanks to Arnaldo for suggestions and improvements.\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": "7d43d1a0f2cf535167ec7247f110a1f85cecac43",
      "tree": "3dc4411cfe27b3ffd0368a65f8ec17dd809157a7",
      "parents": [
        "bd012f2e7be9f69a47d240ded0fa491967d9827c"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Nov 04 23:43:47 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 04 23:43:47 2008 -0800"
      },
      "message": "dccp: Implement lookup table for feature-negotiation information\n\nA lookup table for feature-negotiation information, extracted from RFC\n4340/42, is provided by this patch. All currently known features can\nbe found in this table, along with their feature location, their\ndefault value, and type.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nAcked-by: Ian McDonald \u003cian.mcdonald@jandi.co.nz\u003e\nAcked-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "bd012f2e7be9f69a47d240ded0fa491967d9827c",
      "tree": "940cc895a7da7a065847cf604cddfab097e385cc",
      "parents": [
        "d5f642384e9da75393160350f75bbb9a527f7c58"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Nov 04 23:38:20 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 04 23:38:20 2008 -0800"
      },
      "message": "dccp: Basic data structure for feature negotiation\n\nThis patch prepares for the new and extended feature-negotiation\nroutines.\n\nThe following feature-negotiation data structures are provided:\n\t* a container for the various (SP or NN) values,\n\t* symbolic state names to track feature states,\n\t* an entry struct which holds all current information together,\n\t* elementary functions to fill in and process these structures.\n\nEntry structs are arranged as FIFO for the following reason: RFC 4340\nspecifies that if multiple options of the same type are present, they\nare processed in the order of their appearance in the packet; which\nmeans that this order needs to be preserved in the local data\nstructure (the later insertion code also respects this order).\n\nThe struct list_head has been chosen for the following reasons: the most\nfrequent operations are\n\n * add new entry at tail (when receiving Change or setting socket\n   options);\n * delete entry (when Confirm has been received);\n * deep copy of entire list (cloning from listening socket onto\n   request socket).\n\nThe NN value has been set to 64 bit, which is a currently sufficient\nupper limit (Sequence Window feature has 48 bit).\n\nThanks to Arnaldo, who contributed the streamlined layout of the entry\nstruct.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nAcked-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "21454aaad30651ba0dcc16fe5271bc12ee21f132",
      "tree": "eb525494d6f80a0e855840bc588ae1f422348b04",
      "parents": [
        "14d5e834f6b36667c7da56374645f99b6cf30814"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Fri Oct 31 00:54:56 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Oct 31 00:54:56 2008 -0700"
      },
      "message": "net: replace NIPQUAD() in net/*/\n\nUsing NIPQUAD() with NIPQUAD_FMT, %d.%d.%d.%d or %u.%u.%u.%u\ncan be replaced with %pI4\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "944f750227fa0beb2b440709687415621e2533a4",
      "tree": "ca4120450381f13e831de3e7cfc0bca40a68fed2",
      "parents": [
        "fd5070370c74c32b7a98090eabb46c53baf41733"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Oct 19 23:36:47 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Oct 19 23:36:47 2008 -0700"
      },
      "message": "dccp: Port redirection support for DCCP\n\nCommit a3116ac5c216fc3c145906a46df9ce542ff7dcf2 from 1st October (\"tcp: Port\nredirection support for TCP\") broke DCCP skb lookup by changing inet_csk_clone,\nwhich is used by DCCP to generate the child socket after the handshake.\n\nThis patch updates DCCP to use \u0027loc_port\u0027 instead of \u0027sport\u0027, which fixes the\nproblem, and thus inheriting port redirection support via the new interface.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: KOVACS Krisztian \u003chidden@sch.bme.hu\u003e\nAcked-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "95a5afca4a8d2e1cb77e1d4bc6ff9f718dc32f7a",
      "tree": "15452d28df4e4d76fc1276e791a7cc3c6e1a9b3a",
      "parents": [
        "00269b54edbf25f3bb0dccb558ae23a6fc77ed86"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Thu Oct 16 15:24:51 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 16 15:24:51 2008 -0700"
      },
      "message": "net: Remove CONFIG_KMOD from net/ (towards removing CONFIG_KMOD entirely)\n\nSome code here depends on CONFIG_KMOD to not try to load\nprotocol modules or similar, replace by CONFIG_MODULES\nwhere more than just request_module depends on CONFIG_KMOD\nand and also use try_then_request_module in ebtables.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e41b5368e029e79d11acb5952bc73284e5026c62",
      "tree": "82d519911fb97171259260655e9b86a20fcfe378",
      "parents": [
        "a862f6a6dc89c57dd3a959a1636b59f0c27169c2"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Wed Oct 08 10:33:26 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Oct 08 11:14:13 2008 -0700"
      },
      "message": "ipv6: added net argument to ICMP6_INC_STATS_BH\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9a1f27c48065ce713eb47f2fd475b717e63ef239",
      "tree": "79ebeb8386b98aca595625b9d2db26bd52a8077d",
      "parents": [
        "c7004482e8dcb7c3c72666395cfa98a216a4fb70"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Tue Oct 07 11:41:57 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 07 11:41:57 2008 -0700"
      },
      "message": "inet_hashtables: Add inet_lookup_skb helpers\n\nTo be able to use the cached socket reference in the skb during input\nprocessing we add a new set of lookup functions that receive the skb on\ntheir argument list.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: KOVACS Krisztian \u003chidden@sch.bme.hu\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "410e27a49bb98bc7fa3ff5fc05cc313817b9f253",
      "tree": "88bb1fcf84f9ebfa4299c9a8dcd9e6330b358446",
      "parents": [
        "0a68a20cc3eafa73bb54097c28b921147d7d3685"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Sep 09 13:27:22 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Sep 09 13:27:22 2008 +0200"
      },
      "message": "This reverts \"Merge branch \u0027dccp\u0027 of git://eden-feed.erg.abdn.ac.uk/dccp_exp\"\nas it accentally contained the wrong set of patches. These will be\nsubmitted separately.\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "a3cbdde8e9c38b66b4f13ac5d6ff1939ded0ff20",
      "tree": "8e66f40579776dbc07fdacb206c4d56e1b351e86",
      "parents": [
        "53ac9570c8145710aaed9e1eb850c2e991a4ebc1"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:30:19 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:43 2008 +0200"
      },
      "message": "dccp ccid-3: Preventing Oscillations\n\nThis implements [RFC 3448, 4.5], which performs congestion avoidance behaviour\nby reducing the transmit rate as the queueing delay (measured in terms of\nlong-term RTT) increases.\n\nOscillation can be turned on/off via a module option (do_osc_prev) and via sysfs\n(using mode 0644), the default is off.\n\nOverflow analysis:\n------------------\n * oscillation prevention is done after update_x(), so that t_ipi \u003c\u003d 64000;\n * hence the multiplication \"t_ipi * sqrt(R_sample)\" needs 64 bits;\n * done using u64 for sqrt_sample and explicit typecast of t_ipi;\n * the divisor, R_sqmean, is non-zero because oscillation prevention is first\n   called when receiving the second feedback packet, and tfrc_scaled_rtt() \u003e 0.\n\nA detailed discussion of the algorithm (with plots) is on\nhttp://www.erg.abdn.ac.uk/users/gerrit/dccp/notes/ccid3/sender_notes/oscillation_prevention/\n\nThe algorithm has negative side effects:\n  * when allowing to decrease t_ipi (leads to a large RTT) and\n  * when using it during slow-start;\nboth uses are therefore disabled.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "53ac9570c8145710aaed9e1eb850c2e991a4ebc1",
      "tree": "61aed967a24d95e5572ea311bdac04012f51e3b2",
      "parents": [
        "c8f41d50adc380bfb38538ce39ca0ffea5926221"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:30:19 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:43 2008 +0200"
      },
      "message": "dccp ccid-3: Simplify computing and range-checking of t_ipi\n\nThis patch simplifies the computation of t_ipi, avoiding expensive computations\nto enforce the minimum sending rate.\n\nBoth RFC 3448 and rfc3448bis (revision #06), as well as RFC 4342 sec 5., require\nat various stages that at least one packet must be sent per t_mbi \u003d 64 seconds.\nThis requires frequent divisions of the type X_min \u003d s/t_mbi, which are later\nconverted back into an inter-packet-interval t_ipi_max \u003d s/X_min \u003d t_mbi.\n\nThe patch removes the expensive indirection; in the unlikely case of having\na sending rate less than one packet per 64 seconds, it also re-adjusts X.\n\nThe following cases document conformance with RFC 3448  / rfc3448bis-06:\n 1) Time until receiving the first feedback packet:\n   * if the sender has no initial RTT sample then X \u003d s/1 Bps \u003e s/t_mbi;\n   * if the sender has an initial RTT sample or when the first feedback\n     packet is received, X \u003d W_init/R \u003e s/t_mbi.\n\n 2) Slow-start (p \u003d\u003d 0 and feedback packets come in):\n   * RFC 3448  (current code) enforces a minimum of s/R \u003e s/t_mbi;\n   * rfc3448bis (future code) enforces an even higher minimum of W_init/R.\n\n 3) Congestion avoidance with no absence of feedback (p \u003e 0):\n   * when X_calc or X_recv/2 are too low, the minimum of X_min \u003d s/t_mbi\n     is enforced in update_x() when calling update_send_interval();\n   * update_send_interval() is, as before, only called when X changes\n     (i.e. either when increasing or decreasing, not when in equilibrium).\n\n 4) Reduction of X without prior feedback or during slow-start (p\u003d\u003d0):\n   * both RFC 3448 and rfc3448bis here halve X directly;\n   * the associated constraint X \u003e\u003d s/t_mbi is nforced here by send_interval().\n\n 5) Reduction of X when p \u003e 0:\n   * X is modified indirectly via X_recv (RFC 3448) or X_recv_set (rfc3448bis);\n   * in both cases, control goes back to section 4.3 (in both documents);\n   * since p \u003e 0, both documents use X \u003d max(min(...), s/t_mbi), which is\n     enforced in this patch by calling send_interval() from update_x().\n\nI think that this analysis is exhaustive. Should I have forgotten a case,\nthe worst-case consideration arises when X sinks below s/t_mbi, and is then\nincreased back up to this minimum value. Even under this assumption, the\nbehaviour is correct, since all lower limits of X in RFC 3448 / rfc3448bis\nare either equal to or greater than s/t_mbi.\n\nNote on the condition X \u003e\u003d s/t_mbi  \u003c\u003d\u003d\u003e t_ipi \u003d s/X \u003c\u003d t_mbi: since X is\nscaled by 64, and all time units are in microseconds, the coded condition is:\n\n    t_ipi \u003d s * 64 * 10^6 usec / X \u003c\u003d 64 * 10^6 usec\n\nThis simplifies to s / X \u003c\u003d 1 second \u003c\u003d\u003d\u003e X * 1 second \u003e\u003d s \u003e 0.\n(A zero `s\u0027 is not allowed by the CCID-3 code).\t\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "c8f41d50adc380bfb38538ce39ca0ffea5926221",
      "tree": "ad2d9b674e2782b271f5ae15eb35630848055fbb",
      "parents": [
        "891e4d8a402427bc40dee4c8413213a584710372"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:30:19 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:42 2008 +0200"
      },
      "message": "dccp ccid-3: Measuring the packet size s with regard to rfc3448bis-06\n\nrfc3448bis allows three different ways of tracking the packet size `s\u0027: \n\n 1. using the MSS/MPS (at initialisation, 4.2, and in 4.1 (1));\n 2. using the average of `s\u0027 (in 4.1);\n 3. using the maximum of `s\u0027 (in 4.2).\n\nInstead of hard-coding a single interpretation of rfc3448bis, this implements\na choice of all three alternatives and suggests the first as default, since it\nis the option which is most consistent with other parts of the specification.\n\nThe patch further deprecates the update of t_ipi whenever `s\u0027 changes. The\ngains of doing this are only small since a change of s takes effect at the\nnext instant X is updated:\n * when the next feedback comes in (within one RTT or less);\n * when the nofeedback timer expires (within at most 4 RTTs).\n \nFurther, there are complications caused by updating t_ipi whenever s changes:\n * if t_ipi had previously been updated to effect oscillation prevention (4.5),\n   then it is impossible to make the same adjustment to t_ipi again, thus\n   counter-acting the algorithm;\n * s may be updated any time and a modification of t_ipi depends on the current\n   state (e.g. no oscillation prevention is done in the absence of feedback);\n * in rev-06 of rfc3448bis, there are more possible cases, depending on whether\n   the sender is in slow-start (t_ipi \u003c\u003d R/W_init), or in congestion-avoidance,\n   limited by X_recv or the throughput equation (t_ipi \u003c\u003d t_mbi).\n\nThus there are side effects of always updating t_ipi as s changes. These may not\nbe desirable. The only case I can think of where such an update makes sense is\nto recompute X_calc when p \u003e 0 and when s changes (not done by this patch).\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "891e4d8a402427bc40dee4c8413213a584710372",
      "tree": "e1e49c235c25c9d87a06b04ece4f534d79a40e51",
      "parents": [
        "9d497a2c9120e31ff417e75f9f5576c4cde11281"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:30:19 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:42 2008 +0200"
      },
      "message": "dccp ccid-3: Tidy up CCID-Kconfig dependencies\n\nThe per-CCID menu has several dependencies on EXPERIMENTAL. These are redundant,\nsince net/dccp/ccids/Kconfig is sourced by net/dccp/Kconfig and since the\nlatter menu in turn asserts a dependency on EXPERIMENTAL.\n\nThe patch removes the redundant dependencies as well as the repeated reference\nwithin the sub-menu.\n\nFurther changes:\n----------------\nTwo single dependencies on CCID-3 are replaced with a single enclosing `if\u0027.\n    \nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "9d497a2c9120e31ff417e75f9f5576c4cde11281",
      "tree": "5837bcdc7b78195e428a9ab7f6297c6b4acae3f3",
      "parents": [
        "88e97a93342c0b9e835d510921e7b2df8547d1bd"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:30:19 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:42 2008 +0200"
      },
      "message": "dccp ccid-3: Implement rfc3448bis change to initial-rate computation\n\nThe patch updates CCID-3 with regard to the latest rfc3448bis-06: \n * in the first revisions of the draft, MSS was used for the RFC 3390 window; \n * then (from revision #1 to revision #2), it used the packet size `s\u0027;\n * now, in this revision (and apparently final), the value is back to MSS.\n\nThis change has an implication for the case when no RTT sample is available,\nat the time of sending the first packet:\n\n * with RTT sample, 2*MSS/RTT \u003c\u003d initial_rate \u003c\u003d 4*MSS/RTT;\n * without RTT sample, the initial rate is one packet (s bytes) per second\n   (sec. 4.2), but using s instead of MSS here creates an imbalance, since\n   this would further reduce the initial sending rate.\n\nHence the patch uses MSS (called MPS in RFC 4340) in all places.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "88e97a93342c0b9e835d510921e7b2df8547d1bd",
      "tree": "0e8406050b02487b213b062f4d37528051f465e3",
      "parents": [
        "68c89ee53571a441799c03d5e240c6441bced620"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:30:19 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:42 2008 +0200"
      },
      "message": "dccp ccid-3: Update the RX history records in one place\n\nThis patch is a requirement for enabling ECN support later on. With that change\nin mind, the following preparations are done:\n * renamed handle_loss() into congestion_event() since it returns true when a\n   congestion event happens (it will eventually also take care of ECN packets);\n * lets tfrc_rx_congestion_event() always update the RX history records, since\n   this routine needs to be called for each non-duplicate packet anyway;\n * made all involved boolean-type functions to have return type `bool\u0027;\n\nUpdating the RX history records is now only necessary for the packets received\nup to sending the first feedback. The receiver code becomes again simpler.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "68c89ee53571a441799c03d5e240c6441bced620",
      "tree": "a355d77fd0bf9e57375601286bf4b792456b423e",
      "parents": [
        "22338f09bd60434a3f1d6608f0fa55972067985f"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:30:19 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:42 2008 +0200"
      },
      "message": "dccp ccid-3: Update the computation of X_recv\n\nThis updates the computation of X_recv with regard to Errata 610/611 for\nRFC 4342 and draft rfc3448bis-06, ensuring that at least an interval of 1\nRTT is used to compute X_recv.  The change is wrapped into a new function\nccid3_hc_rx_x_recv().\n\nFurther changes:\n----------------\n * feedback is not sent when no data packets arrived (bytes_recv \u003d\u003d 0), as per\n   rfc3448bis-06, 6.2;\n * take the timestamp for the feedback /after/ dccp_send_ack() returns, to avoid\n   taking the transmission time into account (in case layer-2 is busy);\n * clearer handling of failure in ccid3_first_li().\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "22338f09bd60434a3f1d6608f0fa55972067985f",
      "tree": "c7ec32e782d5c96a060e56cf4b34ddf78c60aadf",
      "parents": [
        "49ffc29a0223adbe0ea7005eea3ab2a03abbeb06"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:30:19 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:42 2008 +0200"
      },
      "message": "dccp tfrc: Increase number of RTT samples\n\nThis improves the receiver RTT sampling algorithm so that it tries harder to get\nas many RTT samples as possible. \n\nThe algorithm is based the concepts presented in RFC 4340, 8.1, using timestamps\nand the CCVal window counter. There exist 4 cases for the CCVal difference:\n * \u003d\u003d 0: less than RTT/4 passed since last packet -- unusable;\n *  \u003e 4: (much) more than 1 RTT has passed since last packet -- also unusable;\n * \u003d\u003d 4: perfect sample (exactly one RTT has passed since last packet);\n * 1..3: sub-optimal sample (between RTT/4 and 3*RTT/4 has passed).\n\nIn the last case the algorithm tried to optimise by storing away the candidate\nand then re-trying next time. The problem is that\n * a large number of samples is needed to smooth out the inaccuracies of the\n   algorithm;\n * the sender may not be sending enough packets to warrant a \"next time\";\n * hence it is better to use suboptimal samples whenever possible.\nThe algorithm now stores away the current sample only if the difference is 0.\n\nApplicability and background\n----------------------------\nA realistic example is MP3 streaming where packets are sent at a rate of less\nthan one packet per RTT, which means that suitable samples are absent for a\nvery long time.\n\nThe effectiveness of using suboptimal samples (with a delta between 1 and 4) was\nconfirmed by instrumenting the algorithm with counters. The results of two 20\nsecond test runs were:\n * With the old algorithm and a total of 38442 function calls, only 394 of these\n   calls resulted in usable RTT samples (about 1%), and 378 out of these were\n   \"perfect\" samples and 28013 (unused) samples had a delta of 1..3.\n * With the new algorithm and a total of 37057 function calls, 1702 usable RTT\n   samples were retrieved (about 4.6%), 5 out of these were \"perfect\" samples.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "49ffc29a0223adbe0ea7005eea3ab2a03abbeb06",
      "tree": "d7bf19858c85b5dbb6bded3f543fbf8a6a355a2e",
      "parents": [
        "2b81143aa3505e2460b24b357996c2f21840ea58"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:30:19 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:41 2008 +0200"
      },
      "message": "dccp: Clamping RTT values\n\nThis extracts the clamping part of dccp_sample_rtt() and makes it available\nto other parts of the code (as e.g. used in the next patch).\n\nNote: The function dccp_sample_rtt() now reduces to subtracting the elapsed\ntime. This could be eliminated but would require shorter prefixes and thus\nis not done by this patch - maybe an idea for later.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "2b81143aa3505e2460b24b357996c2f21840ea58",
      "tree": "37f752fb85c563f965655cec834bb289fd831137",
      "parents": [
        "2f3e3bbad917c426d3aba03a535809e5699de156"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:30:19 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:41 2008 +0200"
      },
      "message": "dccp ccid-3: Always perform receiver RTT sampling\n\nThis updates the CCID-3 receiver in part with regard to errata 610 and 611\n(http://www.rfc-editor.org/errata_list.php), which change RFC 4342 to use the\nReceive Rate as specified in rfc3448bis, requiring to constantly sample the\nRTT (or use a sender RTT).\n\nDoing this requires reusing the RX history structure after dealing with a loss.\n\nThe patch does not resolve how to compute X_recv if the interval is less\nthan 1 RTT. A FIXME has been added (and is resolved in subsequent patch).\n\nFurthermore, since this is all TFRC-based functionality, the RTT estimation\nis now also performed by the dccp_tfrc_lib module. This further simplifies\nthe CCID-3 code.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "2f3e3bbad917c426d3aba03a535809e5699de156",
      "tree": "e00bd5c8ccfad4444e8cc6ee8eb0d90223292390",
      "parents": [
        "34a081be8e14b7ada70e069b65b05d54db4af497"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:30:19 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:41 2008 +0200"
      },
      "message": "dccp ccid-3: Remove duplicate RX states\n\nThe only state information that the CCID-3 receiver keeps is whether initial \nfeedback has been sent or not. Further, this overlaps with use of feedback:\n\n * state \u003d\u003d TFRC_RSTATE_NO_DATA as long as no feedback has been sent;\n * state \u003d\u003d TFRC_RSTATE_DATA    as soon as the first feedback has been sent.\n\nThis patch reduces the duplication, by memorising the type of the last feedback.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "34a081be8e14b7ada70e069b65b05d54db4af497",
      "tree": "0304cc3c06e1ee9139d6dab01df07c8d073cd323",
      "parents": [
        "3ca7aea04152255bb65275b0018d3c673bc1f4e7"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:30:19 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:41 2008 +0200"
      },
      "message": "dccp tfrc: Let dccp_tfrc_lib do the sampling work\n\nThis migrates more TFRC-related code into the dccp_tfrc_lib:\n * sampling of the packet size `s\u0027 (which is only needed until the first\n   loss interval is computed (ccid3_first_li));\n * updating the byte-counter `bytes_recvd\u0027 in between sending feedbacks.\nThe result is a better separation of CCID-3 specific and TFRC specific\ncode, which aids future integration with ECN and e.g. CCID-4.\n\nFurther changes:\n----------------\n * replaced magic number of 536 with equivalent constant TCP_MIN_RCVMSS;\n   (this constant is also used when no estimate for `s\u0027 is available).\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "3ca7aea04152255bb65275b0018d3c673bc1f4e7",
      "tree": "828ffb82255e3a5f164039223e87145af0d611e5",
      "parents": [
        "d20ed95f8bf3d98d31dbbab8b00bb4c1a4a140f3"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:30:19 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:41 2008 +0200"
      },
      "message": "dccp tfrc: Return type of update_i_mean is void\n\nThis changes the return type of tfrc_lh_update_i_mean() to void, since that \nfunction returns always `false\u0027. This is due to \n\n \tlen \u003d dccp_delta_seqno(cur-\u003eli_seqno, DCCP_SKB_CB(skb)-\u003edccpd_seq) + 1;\n \n \tif (len - (s64)cur-\u003eli_length \u003c\u003d 0)\t/* duplicate or reordered */\n\t\treturn 0;\n\nwhich means that update_i_mean can only increase the length of the open loss\ninterval I_0, and hence the value of I_tot0 (RFC 3448, 5.4). Consequently the\ntest `i_mean \u003c old_i_mean\u0027 at the end of the function always evaluates to false.\n\nThere is no known way by which a loss interval can suddenly become shorter,\ntherefore the return type of the function is changed to void. (That is, under\nthe given circumstances step (3) in RFC 3448, 6.1 will not occur.)\n\nFurther changes:\n----------------\n * the function is now called from tfrc_rx_handle_loss, which is equivalent\n   to the previous way of calling from rx_packet_recv (it was called whenever\n   there was no new or pending loss, now  it is also updated when there is\n   a pending loss - this increases the accuracy a bit);\n * added a FIXME to possibly consider NDP counting as per RFC 4342 (this is\n   not implemented yet).\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "d20ed95f8bf3d98d31dbbab8b00bb4c1a4a140f3",
      "tree": "a740d35fd710618863a63e4b86ecaedc2ea5497b",
      "parents": [
        "24b8d343215919c7a2ba18b9f89a0961e1459cad"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:30:19 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:40 2008 +0200"
      },
      "message": "dccp tfrc: Perform early loss detection\n\nThis enables the TFRC code to begin loss detection (as soon as the module\nis loaded), using the latest updates from rfc3448bis-06, 6.3.1:\n\n * when the first data packet(s) are lost or marked, set\n * X_target \u003d s/(2*R) \u003d\u003e f(p) \u003d s/(R * X_target) \u003d 2,\n * corresponding to a loss rate of ~ 20.64%.\n\nThe handle_loss() function is now called right at the begin of rx_packet_recv()\nand thus no longer protected against duplicates: hence a call to rx_duplicate()\nhas been added.  Such a call makes sense now, as the previous patch initialises\nthe first entry with a sequence number of GSR.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "24b8d343215919c7a2ba18b9f89a0961e1459cad",
      "tree": "2b97062dae6e80bb178a0cd0354aa71fe884ef30",
      "parents": [
        "8b67ad12b04ef7bdf5d2b4de24fe5a609b26cf12"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:30:19 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:40 2008 +0200"
      },
      "message": "dccp tfrc: Receiver history initialisation routine\n\nThis patch \n 1) separates history allocation and initialisation, to facilitate early\n    loss detection (implemented by a subsequent patch);\n\n 2) removes duplication by using the existing tfrc_rx_hist_purge() if the\n    allocation fails. This is now possible, since the initialisation routine\n 3) zeroes out the entire history before using it. \n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "8b67ad12b04ef7bdf5d2b4de24fe5a609b26cf12",
      "tree": "e434f1de89f42008020f6aa4767c0dc0b81c9e17",
      "parents": [
        "d0c05fe4448db5cbdd886186860581f736f59ae9"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:30:19 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:40 2008 +0200"
      },
      "message": "dccp tfrc: Suppress unavoidable \"below resolution\" warning\n\nIn the congestion-avoidance phase a decay of p towards 0 is natural once fewer\nlosses are encountered. Hence the warning message \"p is below resolution\" is\nnot necessary, and thus turned into a debug message by this patch.\n\nThe TFRC_SMALLEST_P is needed since in theory p never actually reaches 0. When\nno further losses are encountered, the loss interval I_0 grows in length, \ncausing p to decrease towards 0, causing X_calc \u003d s/(RTT * f(p)) to increase.\n\nWith the given minimum-resolution this congestion avoidance phase stops at some\nfixed value, an approximation formula has been added to the documentation.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "d0c05fe4448db5cbdd886186860581f736f59ae9",
      "tree": "883543f6992615a8cf9404a8904d35cdde46ddc3",
      "parents": [
        "f76fd327a8b32d3ad5b51639faf6f54d18be0981"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:30:19 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:40 2008 +0200"
      },
      "message": "dccp ccid-3: Simplified handling of TX states\n\nSince CCIDs are only used during the established phase of a connection,\nthey have very little internal state; this specifically reduces to:\n\n * \"no packet sent\" if and only if s \u003d\u003d 0, for the TX packet size s;\n\n * when the first packet has been sent (i.e. `s\u0027 \u003e 0), the question is whether\n   or not feedback has been received:\n   - if a feedback packet is received, \"feedback \u003d yes\" is set,\n   - if the nofeedback timer expires,  \"feedback \u003d no\"  is set.\n\nThus the CCID only needs to remember state about whether or not feedback\nhas been received. This is now implemented using a boolean flag, which is\ntoggled when a feedback packet arrives or the nofeedback timer expires.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "f76fd327a8b32d3ad5b51639faf6f54d18be0981",
      "tree": "86de66d77206ff624cce7402f73f97ea3575a6c9",
      "parents": [
        "7d1af6a8d935678248d057564e75e1452409a53c"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:30:19 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:40 2008 +0200"
      },
      "message": "dccp ccid-3: Runtime verification of timer resolution\n\nThe DCCP base time resolution is 10 microseconds (RFC 4340, 13.1 ... 13.3).\n\nUsing a timer with a lower resolution was found to trigger the following\nbug warnings/problems on high-speed networks (e.g. local loopback):\n * RTT samples are rounded down to 0 if below resolution;\n * in some cases, negative RTT samples were observed;\n * the CCID-3 feedback timer complains that the feedback interval is 0,\n   since the feedback interval is in the order of 1 RTT or less and RTT\n   measurement rounded this down to 0;\nOn an Intel computer this will for instance happen when using a\nboot-time parameter of \"clocksource\u003djiffies\".\n\nThe following system log messages were observed:\n  11:24:00 kernel: BUG: delta (0) \u003c\u003d 0 at ccid3_hc_rx_send_feedback()\n  11:26:12 kernel: BUG: delta (0) \u003c\u003d 0 at ccid3_hc_rx_send_feedback()\n  11:26:30 kernel: dccp_sample_rtt: unusable RTT sample 0, using min\n  11:26:30 last message repeated 5 times\n\nThis patch defines a global constant for the time resolution, adds this in\ntimer.c, and checks the available clock resolution at CCID-3 module load time.\n\nWhen the resolution is worse than 10 microseconds, module loading exits with\na message \"socket type not supported\".\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "7d1af6a8d935678248d057564e75e1452409a53c",
      "tree": "06ea5f0d3e819e99609df3ef741574cdfac4aab9",
      "parents": [
        "d6da3511d6b558d0b017777b61dc08b8fbc06ea4"
      ],
      "author": {
        "name": "Tomasz Grobelny",
        "email": "tomasz@grobelny.oswiecenia.net",
        "time": "Thu Sep 04 07:30:19 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:40 2008 +0200"
      },
      "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": "d6da3511d6b558d0b017777b61dc08b8fbc06ea4",
      "tree": "473f9131b9e641d803bfbea174cf1dfc45aea3ca",
      "parents": [
        "ddab05568eaa70fc92b2aae957136f188f724e9c"
      ],
      "author": {
        "name": "Tomasz Grobelny",
        "email": "tomasz@grobelny.oswiecenia.net",
        "time": "Thu Sep 04 07:30:19 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:39 2008 +0200"
      },
      "message": "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": "ddab05568eaa70fc92b2aae957136f188f724e9c",
      "tree": "895f53c4e418987c97aec350996d34e166dedfdc",
      "parents": [
        "6224877b2ca4be5de96270a8ae490fe2ba11b0e0"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:30:19 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:39 2008 +0200"
      },
      "message": "dccp: Clean up slow-path input processing\n\nThis patch rearranges the order of statements of the slow-path input processing\n(i.e. any other state than OPEN), to resolve the following issues.\n\n 1. Dependencies: the order of statements now better matches RFC 4340, 8.5, i.e.\n    step 7 is before step 9 (previously 9 was before 7), and parsing options in\n    step 8 (which can consume resources) now comes after step 7.\n 2. Bug-fix: in state CLOSED, there should not be any sequence number checking\n    or option processing. This is why the test for CLOSED has been moved after\n    the test for LISTEN.\n 3. As before sequence number checks are omitted if in state LISTEN/REQUEST, due\n    to the note underneath the table in RFC 4340, 7.5.3.\n 4. Packets are now passed on to Ack Vector / CCID processing only after\n    - step 7  (receive unexpected packets), \n    - step 9  (receive Reset),\n    - step 13 (receive CloseReq),\n    - step 14 (receive Close)\n    and only if the state is PARTOPEN. This simplifies CCID processing:\n    - in LISTEN/CLOSED the CCIDs are non-existent;\n    - in RESPOND/REQUEST the CCIDs have not yet been negotiated;\n    - in CLOSEREQ and active-CLOSING the node has already closed this socket;\n    - in passive-CLOSING the client is waiting for its Reset.\n    In the last case, RFC 4340, 8.3 leaves it open to ignore further incoming\n    data, which is the approach taken here.\n\nAs a result of (3), CCID processing is now indeed confined to OPEN/PARTOPEN\nstates, i.e. congestion control is performed only on the flow of data packets. \n\nThis avoids pathological cases of doing congestion control on those messages\nwhich set up and terminate the connection. \n\nI have done a few checks to see if this creates a problem in other parts of\nthe code. This seems not to be the case; even if there were one, it would be\nbetter to fix it than to perform congestion control on Close/Request/Response\nmessages. Similarly for Ack Vectors (as they depend on the negotiated CCID).\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "6224877b2ca4be5de96270a8ae490fe2ba11b0e0",
      "tree": "95eef39293311959842e5476eace895e457eb780",
      "parents": [
        "b25b0c60b0c39a82bc651aeb6443bcb36cd17f76"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:30:19 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:39 2008 +0200"
      },
      "message": "tcp/dccp: Consolidate common code for RFC 3390 conversion\n\nThis patch consolidates the code common to TCP and CCID-2:\n * TCP uses RFC 3390 in a packet-oriented manner (tcp_input.c) and\n * CCID-2 uses RFC 3390 in packet-oriented manner (RFC 4341).\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "b25b0c60b0c39a82bc651aeb6443bcb36cd17f76",
      "tree": "fbb808a03b513922b93354c240fc73b1cc914de8",
      "parents": [
        "20bbd0f75ee4b72c1dafc8e5fb6ad39ba506a75c"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:30:19 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:39 2008 +0200"
      },
      "message": "dccp: Combine the functionality of enqeueing and cloning\n\nRealising the following call pattern,\n * first dccp_entail() is called to enqueue a new skb and\n * then skb_clone() is called to transmit a clone of that skb,\n\nthis patch integrates both interrelated steps into dccp_entail().\n\nNote: the return value of skb_clone is not checked. It may be an idea to add a\n      warning if this occurs. In both instances, however, a timer is set for\n      retransmission, so that cloning is re-tried via dccp_retransmit_skb().\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "20bbd0f75ee4b72c1dafc8e5fb6ad39ba506a75c",
      "tree": "c67263fcc9ed4bab01ecbdb43393b1cb2a0dfd36",
      "parents": [
        "1435562d7e0412e4885b661843f69859013f9d25"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:30:19 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:39 2008 +0200"
      },
      "message": "dccp ccid-2: Remove wrappers around sk_{reset,stop}_timer()\n\nThis removes the wrappers around the sk timer functions as it makes the code\nclearer and not much is gained from using wrappers: the BUG_ON in \nstart_rto_timer will never trigger since that function was called only when\n * the RTO timer expired (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\nOne further motive behind this patch is to replace the RTO timer with the\nicsk retransmission timer, as it is already part of the DCCP socket.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "1435562d7e0412e4885b661843f69859013f9d25",
      "tree": "8357027ac15fa199051e8d85aa448115c3bdd2c2",
      "parents": [
        "e9803c0104564698d3b8e84ccdb0b8b0e65427e2"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:30:19 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:39 2008 +0200"
      },
      "message": "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. \nThat code is replaced by the present patch, which reuses the Linux TCP RTT\nestimator code - reasons for this code duplication are given below.\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\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    }
  ],
  "next": "e9803c0104564698d3b8e84ccdb0b8b0e65427e2"
}
