)]}'
{
  "log": [
    {
      "commit": "04910265078f08a73208beab70ed2a3cce4a919f",
      "tree": "cc7e1c927ceda1ddf5f86d50f8ee22a1a4e32fe6",
      "parents": [
        "871a2c16c21b988688b4ab1a78eadd969765c0a3"
      ],
      "author": {
        "name": "Tomasz Grobelny",
        "email": "tomasz@grobelny.oswiecenia.net",
        "time": "Sat Dec 04 13:39:13 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Dec 07 13:47:12 2010 +0100"
      },
      "message": "dccp qpolicy: Parameter checking of cmsg qpolicy parameters\n\nEnsure that cmsg-\u003ecmsg_type value is valid for qpolicy\nthat is currently in use.\n\nSigned-off-by: Tomasz Grobelny \u003ctomasz@grobelny.oswiecenia.net\u003e\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "871a2c16c21b988688b4ab1a78eadd969765c0a3",
      "tree": "34ffb3be1402747ef3b7fdb754fb99778bd45728",
      "parents": [
        "cfa969e385a23e4c85f50e0ed5de25a2e18bf9d4"
      ],
      "author": {
        "name": "Tomasz Grobelny",
        "email": "tomasz@grobelny.oswiecenia.net",
        "time": "Sat Dec 04 13:38:01 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Dec 07 13:47:12 2010 +0100"
      },
      "message": "dccp: Policy-based packet dequeueing infrastructure\n\nThis patch adds a generic infrastructure for policy-based dequeueing of\nTX packets and provides two policies:\n * a simple FIFO policy (which is the default) and\n * a priority based policy (set via socket options).\nBoth policies honour the tx_qlen sysctl for the maximum size of the write\nqueue (can be overridden via socket options).\n\nThe priority policy uses skb-\u003epriority internally to assign an u32 priority\nidentifier, using the same ranking as SO_PRIORITY. The skb-\u003epriority field\nis set to 0 when the packet leaves DCCP. The priority is supplied as ancillary\ndata using cmsg(3), the patch also provides the requisite parsing routines.\n\nSigned-off-by: Tomasz Grobelny \u003ctomasz@grobelny.oswiecenia.net\u003e\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "b1fcf55eea541af9efa5d39f5a0d1aec8ceca55d",
      "tree": "a021b6abde9c784d67ee0de3bb7fb31f7d5b2e9f",
      "parents": [
        "dc841e30eaea9f9f83c9ab1ee0b3ef9e5c95ce8a"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Oct 27 19:16:27 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 28 10:27:01 2010 -0700"
      },
      "message": "dccp: Refine the wait-for-ccid mechanism\n\nThis extends the existing wait-for-ccid routine so that it may be used with\ndifferent types of CCID, addressing the following problems:\n\n 1) The queue-drain mechanism only works with rate-based CCIDs. If CCID-2 for\n    example has a full TX queue and becomes network-limited just as the\n    application wants to close, then waiting for CCID-2 to become unblocked\n    could lead to an indefinite  delay (i.e., application \"hangs\").\n 2) Since each TX CCID in turn uses a feedback mechanism, there may be changes\n    in its sending policy while the queue is being drained. This can lead to\n    further delays during which the application will not be able to terminate.\n 3) The minimum wait time for CCID-3/4 can be expected to be the queue length\n    times the current inter-packet delay. For example if tx_qlen\u003d100 and a delay\n    of 15 ms is used for each packet, then the application would have to wait\n    for a minimum of 1.5 seconds before being allowed to exit.\n 4) There is no way for the user/application to control this behaviour. It would\n    be good to use the timeout argument of dccp_close() as an upper bound. Then\n    the maximum time that an application is willing to wait for its CCIDs to can\n    be set via the SO_LINGER option.\n\nThese problems are addressed by giving the CCID a grace period of up to the\n`timeout\u0027 value.\n\nThe wait-for-ccid function is, as before, used when the application\n (a) has read all the data in its receive buffer and\n (b) if SO_LINGER was set with a non-zero linger time, or\n (c) the socket is either in the OPEN (active close) or in the PASSIVE_CLOSEREQ\n     state (client application closes after receiving CloseReq).\n\nIn addition, there is a catch-all case of __skb_queue_purge() after waiting for\nthe CCID. This is necessary since the write queue may still have data when\n (a) the host has been passively-closed,\n (b) abnormal termination (unread data, zero linger time),\n (c) wait-for-ccid could not finish within the given time limit.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2f34b32977ade4249601f35f7eb0cdd56b4e0f89",
      "tree": "cacdef9003d861cc0b3d5feaf3080ea5cad11ed7",
      "parents": [
        "ecdfbdabbe4e0cf0443cbbea2df1bf51bf67f3f3"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Oct 11 20:44:42 2010 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Oct 12 06:57:43 2010 +0200"
      },
      "message": "dccp: cosmetics - warning format\n\nThis  omits the redundant \"DCCP:\" in warning messages, since DCCP_WARN() already\nechoes the function name, avoiding messages like\n\n   kernel: [10988.766503] dccp_close: DCCP: ABORT -- 209 bytes unread\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "1f4f0f645cc1d7f1187fcdb0ac22c2e69bd68050",
      "tree": "6db6ea3a0bb27188d06db6bbf093842d7007f836",
      "parents": [
        "10e7e9c44d442275951d1cfc892c1c6606c85c94"
      ],
      "author": {
        "name": "stephen hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Tue Oct 05 04:24:09 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Oct 06 23:12:07 2010 -0700"
      },
      "message": "dccp: Kill dead code and add static markers.\n\nRemove dead code and make some functions static.\nCompile tested only.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1823e4c80eeae2a774c75569ce3035070e5ee009",
      "tree": "bdc1bdf4a67027193312ad584924ca8a986a064c",
      "parents": [
        "5eaa0bd81f93225b6d1972b373ed00ca763052b2"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Jun 22 20:58:41 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jun 25 21:33:17 2010 -0700"
      },
      "message": "snmp: add align parameter to snmp_mib_init()\n\nIn preparation for 64bit snmp counters for some mibs,\nadd an \u0027align\u0027 parameter to snmp_mib_init(), instead\nof assuming mibs only contain \u0027unsigned long\u0027 fields.\n\nCallers can use __alignof__(type) to provide correct\nalignment.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCC: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nCC: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nCC: Hideaki YOSHIFUJI \u003cyoshfuji@linux-ipv6.org\u003e\nCC: Vlad Yasevich \u003cvladislav.yasevich@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "042604d2a3ee59c84f8293988caf35bac5de9eb3",
      "tree": "e34f3eb3211ed0c6ab69cda79ebe66e6752d106d",
      "parents": [
        "c146fc9fc9bc1dc0f629fe83d49f32ab0f11bfdc"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Fri May 21 22:25:19 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 31 00:24:14 2010 -0700"
      },
      "message": "net/dccp: Use memdup_user\n\nUse memdup_user when user data is immediately copied into the\nallocated region.\n\nThe semantic patch that makes this change is as follows:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@@\nexpression from,to,size,flag;\nposition p;\nidentifier l1,l2;\n@@\n\n-  to \u003d \\(kmalloc@p\\|kzalloc@p\\)(size,flag);\n+  to \u003d memdup_user(from,size);\n   if (\n-      to\u003d\u003dNULL\n+      IS_ERR(to)\n                 || ...) {\n   \u003c+... when !\u003d goto l1;\n-  -ENOMEM\n+  PTR_ERR(to)\n   ...+\u003e\n   }\n-  if (copy_from_user(to, from, size) !\u003d 0) {\n-    \u003c+... when !\u003d goto l2;\n-    -EFAULT\n-    ...+\u003e\n-  }\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nAcked-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "aa395145165cb06a0d0885221bbe0ce4a564391d",
      "tree": "118b0403621f10db8dc3dbf12079f9af5b19e05d",
      "parents": [
        "ab9304717f7624c41927f442e6b6d418b2d8b3e4"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Apr 20 13:03:51 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 20 16:37:13 2010 -0700"
      },
      "message": "net: sk_sleep() helper\n\nDefine a new function to return the waitqueue of a \"struct sock\".\n\nstatic inline wait_queue_head_t *sk_sleep(struct sock *sk)\n{\n\treturn sk-\u003esk_sleep;\n}\n\nChange all read occurrences of sk_sleep by a call to this function.\n\nNeeded for a future RCU conversion. sk_sleep wont be a field directly\navailable.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "d14a0ebda7d3daede1a99c01527affb9ceaa4c22",
      "tree": "8bee27033c0e771a9df0c3e8cc3f1dc1091587f0",
      "parents": [
        "b8d689743106bab5c49dda87080e76aa78db8a56"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Mar 14 20:13:19 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Mar 15 16:00:50 2010 -0700"
      },
      "message": "net-2.6 [Bug-Fix][dccp]: fix oops caused after failed initialisation\n\ndccp: fix panic caused by failed initialisation\n\nThis fixes a kernel panic reported thanks to Andre Noll:\n\nif DCCP is compiled into the kernel and any out of the initialisation\nsteps in net/dccp/proto.c:dccp_init() fail, a subsequent attempt to create\na SOCK_DCCP socket will panic, since inet{,6}_create() are not prevented\nfrom creating DCCP sockets.\n\nThis patch fixes the problem by propagating a failure in dccp_init() to\ndccp_v{4,6}_init_net(), and from there to dccp_v{4,6}_init(), so that the\nDCCP protocol is not made available if its initialisation fails.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7d720c3e4f0c4fc152a6bf17e24244a3c85412d2",
      "tree": "36e037187ce79acb211702bea22e99c625787757",
      "parents": [
        "2bb4646fce8d09916b351d1a62f98db7cec6fc41"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 16 15:20:26 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Feb 16 23:05:38 2010 -0800"
      },
      "message": "percpu: add __percpu sparse annotations to net\n\nAdd __percpu sparse annotations to net.\n\nThese annotations are to make sparse consider percpu variables to be\nin a different address space and warn if accessed without going\nthrough percpu accessors.  This patch doesn\u0027t affect normal builds.\n\nThe macro and type tricks around snmp stats make things a bit\ninteresting.  DEFINE/DECLARE_SNMP_STAT() macros mark the target field\nas __percpu and SNMP_UPD_PO_STATS() macro is updated accordingly.  All\nsnmp_mib_*() users which used to cast the argument to (void **) are\nupdated to cast it to (void __percpu **).\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Patrick McHardy \u003ckaber@trash.net\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nCc: Vlad Yasevich \u003cvladislav.yasevich@hp.com\u003e\nCc: netdev@vger.kernel.org\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "55d955902a7f78e3e7c9ddbc71a4a050d9d44810",
      "tree": "e56d33b78b483476b9560370dcf37db7c40c886a",
      "parents": [
        "cfc0861ba32643c63901832a583054bea0445961"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Feb 10 20:26:18 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Feb 12 16:51:10 2010 -0800"
      },
      "message": "dccp: support for passing MSG_TRUNC\n\nDCCP is datagram-oriented but lacks UDP\u0027s support for MSG_TRUNC as defined in\nrecvmsg(2)/recv(2). Hence the following \u0027Hello world\\0\u0027 receiver\n\n  len \u003d recv(fd, buf, 10, MSG_PEEK | MSG_TRUNC);\n\nwrongly (always) returns 10, while in UDP it returns 12 as expected.\nThis patch adds the missing MSG_TRUNC support to recvmsg().\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c720c7e8383aff1cb219bddf474ed89d850336e3",
      "tree": "4f12337e6690fccced376db9f501eaf98614a65e",
      "parents": [
        "988ade6b8e27e79311812f83a87b5cea11fabcd7"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Oct 15 06:30:45 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Oct 18 18:52:53 2009 -0700"
      },
      "message": "inet: rename some inet_sock fields\n\nIn order to have better cache layouts of struct sock (separate zones\nfor rx/tx paths), we need this preliminary patch.\n\nGoal is to transfert fields used at lookup time in the first\nread-mostly cache line (inside struct sock_common) and move sk_refcnt\nto a separate cache line (only written by rx path)\n\nThis patch adds inet_ prefix to daddr, rcv_saddr, dport, num, saddr,\nsport and id fields. This allows a future patch to define these\nfields as macros, like sk_refcnt, without name clashes.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f373b53b5fe67aa4a6f28f921a529cc90f88e79b",
      "tree": "b2cae9152aed2e30b7a39c114678b9355ab5c14f",
      "parents": [
        "c3faca053d0a9c877597935b434150b422dbc6fb"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Fri Oct 09 00:16:19 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 13 03:44:02 2009 -0700"
      },
      "message": "tcp: replace ehash_size by ehash_mask\n\nStoring the mask (size - 1) instead of the size allows fast path to be\na bit faster.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "146993cf5174472644ed11bd5fb539f0af8bfa49",
      "tree": "b2c5343ad610fe113425a3663f0dc3ddb478911b",
      "parents": [
        "e7937772d7a2b0127cc4cbc67bc594e139fdaf63"
      ],
      "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:38 2008 +0200"
      },
      "message": "dccp: Refine the wait-for-ccid mechanism\n\nThis extends the existing wait-for-ccid routine so that it may be used with\ndifferent types of CCID. It further addresses the problems listed below.\n\nThe code looks if the write queue is non-empty and grants the TX CCID up to\n`timeout\u0027 jiffies to drain the queue. It will instead purge that queue if\n * the delay suggested by the CCID exceeds the time budget;\n * a socket error occurred while waiting for the CCID;\n * there is a signal pending (eg. annoyed user pressed Control-C);\n * the CCID does not support delays (we don\u0027t know how long it will take).\n\n\n                 D e t a i l s  [can be removed]\n                 -------------------------------\nDCCP\u0027s sending mechanism functions a bit like non-blocking I/O: dccp_sendmsg()\nwill enqueue up to net.dccp.default.tx_qlen packets (default\u003d5), without waiting\nfor them to be released to the network.\n\nRate-based CCIDs, such as CCID3/4, can impose sending delays of up to maximally\n64 seconds (t_mbi in RFC 3448). Hence the write queue may still contain packets\nwhen the application closes. Since the write queue is congestion-controlled by\nthe CCID, draining the queue is also under control of the CCID.\n\nThere are several problems that needed to be addressed:\n 1) The queue-drain mechanism only works with rate-based CCIDs. If CCID2 for\n    example has a full TX queue and becomes network-limited just as the\n    application wants to close, then waiting for CCID2 to become unblocked could\n    lead to an indefinite  delay (i.e., application \"hangs\").\n 2) Since each TX CCID in turn uses a feedback mechanism, there may be changes\n    in its sending policy while the queue is being drained. This can lead to\n    further delays during which the application will not be able to terminate.\n 3) The minimum wait time for CCID3/4 can be expected to be the queue length\n    times the current inter-packet delay. For example if tx_qlen\u003d100 and a delay\n    of 15 ms is used for each packet, then the application would have to wait\n    for a minimum of 1.5 seconds before being allowed to exit.\n 4) There is no way for the user/application to control this behaviour. It would\n    be good to use the timeout argument of dccp_close() as an upper bound. Then\n    the maximum time that an application is willing to wait for its CCIDs to can\n    be set via the SO_LINGER option.\n\nThese problems are addressed by giving the CCID a grace period of up to the\n`timeout\u0027 value.\n\nThe wait-for-ccid function is, as before, used when the application \n (a) has read all the data in its receive buffer and\n (b) if SO_LINGER was set with a non-zero linger time, or\n (c) the socket is either in the OPEN (active close) or in the PASSIVE_CLOSEREQ\n     state (client application closes after receiving CloseReq).\n\nIn addition, there is a catch-all case by calling __skb_queue_purge() after \nwaiting for the CCID. This is necessary since the write queue may still have\ndata when\n (a) the host has been passively-closed,\n (b) abnormal termination (unread data, zero linger time),\n (c) wait-for-ccid could not finish within the given time limit.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "2faae5587f692fd5c79856ca4c4b90944ee0472a",
      "tree": "637536dff5a15b5196233f38066644d19f77f23e",
      "parents": [
        "4861a354430d2ea36847ef88086c7449b4f385b6"
      ],
      "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:32 2008 +0200"
      },
      "message": "dccp ccid-2: Use feature-negotiation to report Ack Ratio changes\n\nThis uses the new feature-negotiation framework to signal Ack Ratio changes,\nas required by RFC 4341, sec. 6.1.2.\n\nThis raises some problems for CCID-2 since it can at the moment not cope\ngracefully with Ack Ratio of e.g. 2. A FIXME has thus been added which\nreverts to the existing policy of bypassing the Ack Ratio sysctl.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nAcked-by: Ian McDonald \u003cian.mcdonald@jandi.co.nz\u003e\n"
    },
    {
      "commit": "51c7d4fa2675c106a980ddcdbe308b54b5151945",
      "tree": "0c1f2b1a3323582fb8629ba7826e08710271ed49",
      "parents": [
        "09856c108956c99088ead9267ccbd1dab77f7043"
      ],
      "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:32 2008 +0200"
      },
      "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 changes are introduced:\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\nUntil the handshake completes with activating negotiated values, the local/remote\nSequence-Window values are undefined and thus can not reliably be estimated.\nThis issue is addressed in a separate patch.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nAcked-by: Ian McDonald \u003cian.mcdonald@jandi.co.nz\u003e\n"
    },
    {
      "commit": "b235dc4abbc1356284bd0dc730efa711f394e0e2",
      "tree": "c8adf34d1904c04ab0bee54e3d60f743822a8e9f",
      "parents": [
        "68e074bfcef269bc61006c2740d7f89ccbbd93d7"
      ],
      "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:31 2008 +0200"
      },
      "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, which is now handled fully dynamically via feature negotiation;\ni.e. when CCID2 is enabled, Ack Vectors are automatically enabled (as per\nRFC 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\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nAcked-by: Ian McDonald \u003cian.mcdonald@jandi.co.nz\u003e\n"
    },
    {
      "commit": "3a53a9adfa269da7fa40fc476f09e46155c0143d",
      "tree": "9090efbd2aa9cc24ea50c63336a029e018509529",
      "parents": [
        "c926c6aed3e444e8c88a768f063b2de8fd6ae760"
      ],
      "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:30 2008 +0200"
      },
      "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\nNote on retransmitting Confirm options:\n---------------------------------------\nThis patch also defers flushing the client feature-negotiation queue,\ndue to the following considerations.\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\nThanks to Leandro Melo de Sales who reported a bug in an earlier revision\nof the patch set, resulting from not retransmitting the Confirm options.\n\nThe patch now ensures that the client feature-negotiation queue is flushed only\nwhen entering the OPEN state. Since confirmed Change options are removed as\nsoon as they are confirmed (in the DCCP-Response), this ensures that Confirm\noptions are retransmitted.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nAcked-by: Ian McDonald \u003cian.mcdonald@jandi.co.nz\u003e\n"
    },
    {
      "commit": "c8041e264b3db6944d37b87969fbe6458cb30cfd",
      "tree": "0dd21c001bea090756710216717a73d8e409a65d",
      "parents": [
        "fade756f18d42694e3acb00e3471ab43002cba16"
      ],
      "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:28 2008 +0200"
      },
      "message": "dccp: API to query the current TX/RX CCID\n\nThis provides function to query the current TX/RX CCID dynamically, without\nreliance on the minisock value, using dynamic information available in the\ncurrently 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\n"
    },
    {
      "commit": "fade756f18d42694e3acb00e3471ab43002cba16",
      "tree": "f2ae912af9678315b672eb292ef17de42a97fbf3",
      "parents": [
        "73bbe095bbb9ce5f94d5475bad54c7ccd8573b1b"
      ],
      "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:28 2008 +0200"
      },
      "message": "dccp: Set per-connection CCIDs via socket options\n\nWith this patch, TX/RX CCIDs can now be changed on a per-connection basis, which\noverrides the defaults set by the global sysctl variables for TX/RX CCIDs.\n\nTo make full use of this facility, the remaining patches of this patch set are\nneeded, which track dependencies and activate negotiated feature values.\n\nNote on the maximum number of CCIDs that can be registered:\n-----------------------------------------------------------\nThe maximum number of CCIDs that can be registered on the socket is constrained\nby the space in a Confirm/Change feature negotiation option. \n\nThe space in these in turn depends on the size of header options as defined\nin RFC 4340, 5.8. Since this is a recurring constant, it has been moved from\nackvec.h into linux/dccp.h, clarifying its purpose.\n\nRelative to this size, the maximum number of CCID identifiers that can be \npresent in a Confirm option (which always consumes 1 byte more than a Change\noption, cf. 6.1) is 2 bytes less than the maximum TLV size: one for the\nCCID-feature-type and one for the selected value.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "73bbe095bbb9ce5f94d5475bad54c7ccd8573b1b",
      "tree": "f0bd33e1d28c3c5310b0321761dfc53d753d4b01",
      "parents": [
        "17c30b40ed79e9f3955e884632c8f01e577b204a"
      ],
      "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:28 2008 +0200"
      },
      "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\n"
    },
    {
      "commit": "20f41eee82864e308a5499308a1722dc3181cc3a",
      "tree": "145a2d1d72f956286dfde7fe3e821049b6aa797f",
      "parents": [
        "668144f7b41716a9efe1b398e15ead32a26cd101"
      ],
      "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:27 2008 +0200"
      },
      "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\n"
    },
    {
      "commit": "668144f7b41716a9efe1b398e15ead32a26cd101",
      "tree": "ed535a5e2e2dc2dd8509336d2682aeaae66e4c00",
      "parents": [
        "d4c8741c431e07cfc66eb2b4c3a17b8d4975d9c0"
      ],
      "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:27 2008 +0200"
      },
      "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. These are \nessentially wrappers around the internal __feat_register functions, with \nchecking added to avoid\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\n"
    },
    {
      "commit": "093e1f46cf162913d05e1d4eeb01baa3e297b683",
      "tree": "4a66ebf581924936bc7850122cb6bdad1cd5383c",
      "parents": [
        "71bb49596bbf4e5a3328e1704d18604e822ba181"
      ],
      "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:27 2008 +0200"
      },
      "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\n"
    },
    {
      "commit": "71bb49596bbf4e5a3328e1704d18604e822ba181",
      "tree": "75f64f2f0fea482efc3bdcac407ab187d9e78b5a",
      "parents": [
        "86349c8d9c6892b57aff4549256ab1aa65aed0f0"
      ],
      "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:27 2008 +0200"
      },
      "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\n"
    },
    {
      "commit": "86349c8d9c6892b57aff4549256ab1aa65aed0f0",
      "tree": "7fdd7a5d44b7999c8426012c83705cd3fec92cf7",
      "parents": [
        "5591d286281fdfb57914f5fad3ca001d44ce8fc6"
      ],
      "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:27 2008 +0200"
      },
      "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\n"
    },
    {
      "commit": "702083839b607f390dbed5d2304eb8fc5f4c85ac",
      "tree": "08e042059da89626580ceddec6bebefaf8267115",
      "parents": [
        "828755cee087e4a34f45d6c9db661ccd0631cc6d"
      ],
      "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:26 2008 +0200"
      },
      "message": "dccp: Cleanup routines for feature negotiation\n\nThis inserts the required de-allocation routines for memory allocated by \nfeature negotiation in the socket destructors, replacing dccp_feat_clean()\nin one instance.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nAcked-by: Ian McDonald \u003cian.mcdonald@jandi.co.nz\u003e\n"
    },
    {
      "commit": "828755cee087e4a34f45d6c9db661ccd0631cc6d",
      "tree": "07e687e6f5c559a49467ca3f56117ec58d9549b3",
      "parents": [
        "3001fc0569651f2d0c3b45adc991351471b0c382"
      ],
      "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:26 2008 +0200"
      },
      "message": "dccp: Per-socket initialisation of feature negotiation\n\nThis provides feature-negotiation initialisation for both DCCP sockets and\nDCCP request_sockets, to support feature negotiation during connection setup.\n\nIt also resolves a FIXME regarding the congestion control initialisation.\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\n"
    },
    {
      "commit": "432649916b0435b608fb3e1fcb97347ac294d38d",
      "tree": "39dc5e5e491f07e7b7504a5d0346c8e386966343",
      "parents": [
        "48816322ad4d9ce195aaddd10f0ce98c944af193"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sat Aug 23 13:28:27 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:25 2008 +0200"
      },
      "message": "dccp: Toggle debug output without module unloading\n\nThis sets the sysfs permissions so that root can toggle the `debug\u0027\nparameter available for nearly every DCCP module. This is useful \nsince there are various module inter-dependencies. The debug flag\ncan now be toggled at runtime using\n\n  echo 1 \u003e /sys/module/dccp/parameters/dccp_debug\n  echo 1 \u003e /sys/module/dccp_ccid2/parameters/ccid2_debug\n  echo 1 \u003e /sys/module/dccp_ccid3/parameters/ccid3_debug\n  echo 1 \u003e /sys/module/dccp_tfrc_lib/parameters/tfrc_debug\n\nThe last is not very useful yet, since no code at the moment calls\nthe tfrc_debug() macro.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "48816322ad4d9ce195aaddd10f0ce98c944af193",
      "tree": "bd4123966a18259cb8f93607ae077541920cf75c",
      "parents": [
        "eac7726bf5cd24440d84b166e0813668d1bf3224"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sat Aug 23 13:28:27 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:25 2008 +0200"
      },
      "message": "dccp: Empty the write queue when disconnecting\n\ndccp_disconnect() can be called due to several reasons:\n\n 1. when the connection setup failed (inet_stream_connect());\n 2. when shutting down (inet_shutdown(), inet_csk_listen_stop());\n 3. when aborting the connection (dccp_close() with 0 linger time).\n\nIn case (1) the write queue is empty. This patch empties the write queue,\nif in case (2) or (3) it was not yet empty.\n\nThis avoids triggering the write-queue BUG_TRAP in sk_stream_kill_queues()\nlater on.\n\nIt also seems natural to do: when breaking an association, to delete all\npackets that were originally intended for the soon-disconnected end (compare\nwith call to tcp_write_queue_purge in tcp_disconnect()).\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "3e8a0a559c66ee9e7468195691a56fefc3589740",
      "tree": "cc54fecf644c138c38dd29b960c7dc42cbe6b558",
      "parents": [
        "c1e24df27fb1058739789126db6ad1b1ef719346"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Wed Aug 13 13:48:39 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Aug 13 13:48:39 2008 -0700"
      },
      "message": "dccp: change L/R must have at least one byte in the dccpsf_val field\n    \nThanks to Eugene Teo for reporting this problem.\n    \nSigned-off-by: Eugene Teo \u003ceugenete@kernel.sg\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "547b792cac0a038b9dbf958d3c120df3740b5572",
      "tree": "08554d083b0ca7d65739dc1ce12f9b12a9b8e1f8",
      "parents": [
        "53e5e96ec18da6f65e89f05674711e1c93d8df67"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Fri Jul 25 21:43:18 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 25 21:43:18 2008 -0700"
      },
      "message": "net: convert BUG_TRAP to generic WARN_ON\n\nRemoves legacy reinvent-the-wheel type thing. The generic\nmachinery integrates much better to automated debugging aids\nsuch as kerneloops.org (and others), and is unambiguous due to\nbetter naming. Non-intuively BUG_TRAP() is actually equal to\nWARN_ON() rather than BUG_ON() though some might actually be\npromoted to BUG_ON() but I left that to future.\n\nI could make at least one BUILD_BUG_ON conversion.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7d06b2e053d2d536348e3a0f6bb02982a41bea37",
      "tree": "ec6a5c3f448e84cd431a0397b9e2a87ca25aec17",
      "parents": [
        "4ae127d1b6c71f9240dd4245f240e6dd8fc98014"
      ],
      "author": {
        "name": "Brian Haley",
        "email": "brian.haley@hp.com",
        "time": "Sat Jun 14 17:04:49 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jun 14 17:04:49 2008 -0700"
      },
      "message": "net: change proto destroy method to return void\n\nChange struct proto destroy function pointer to return void.  Noticed\nby Al Viro.\n\nSigned-off-by: Brian Haley \u003cbrian.haley@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5f090dcb4d4fff373ce7165bce4ba5e87534d50a",
      "tree": "7555518ce0687cc7de59aa271081cf648fc8a759",
      "parents": [
        "950e4da32426859ee4b37b2c95026d4f1efa5d05"
      ],
      "author": {
        "name": "Matthew Wilcox",
        "email": "matthew@wil.cx",
        "time": "Fri Apr 18 22:15:50 2008 -0400"
      },
      "committer": {
        "name": "Matthew Wilcox",
        "email": "willy@linux.intel.com",
        "time": "Fri Apr 18 22:15:50 2008 -0400"
      },
      "message": "net: Remove unnecessary inclusions of asm/semaphore.h\n\nNone of these files use any of the functionality promised by\nasm/semaphore.h.  It\u0027s possible that they rely on it dragging in some\nunrelated header file, but I can\u0027t build all these files, so we\u0027ll have\nfix any build failures as they come up.\n\nSigned-off-by: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\n"
    },
    {
      "commit": "df39e8ba56a788733d369068c7319e04b1da3cd5",
      "tree": "1e9be853bdb455e341cdbf957656f342cfa2eb9e",
      "parents": [
        "f5572855ec492334d8c3ec0e0e86c31865d5cf07",
        "159d83363b629c91d020734207c1bc788b96af5a"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Apr 14 02:30:23 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Apr 14 02:30:23 2008 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\n\tdrivers/net/ehea/ehea_main.c\n\tdrivers/net/wireless/iwlwifi/Kconfig\n\tdrivers/net/wireless/rt2x00/rt61pci.c\n\tnet/ipv4/inet_timewait_sock.c\n\tnet/ipv6/raw.c\n\tnet/mac80211/ieee80211_sta.c\n"
    },
    {
      "commit": "028b027524b162eef90839a92ba4b8bddf23e06c",
      "tree": "5c128717f73ff6fb93c361cfae6961267ed52082",
      "parents": [
        "ae1b6a31b1f9ef2c7ba5ef89799f210a9ba6937c"
      ],
      "author": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Sat Apr 12 18:35:41 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Apr 12 18:35:41 2008 -0700"
      },
      "message": "[DCCP]: Fix skb-\u003ecb conflicts with IP\n\ndev_queue_xmit() and the other IP output functions expect to get a skb\nwith clear or properly initialized skb-\u003ecb. Unlike TCP and UDP, the\ndccp_skb_cb doesn\u0027t contain a struct inet_skb_parm at the beginning,\nso the DCCP-specific data is interpreted by the IP output functions.\nThis can cause false negatives for the conditional POST_ROUTING hook\ninvocation, making the packet bypass the hook.\n\nAdd a inet_skb_parm/inet6_skb_parm union to the beginning of\ndccp_skb_cb to avoid clashes. Also add a BUILD_BUG_ON to make\nsure it fits in the cb.\n\n[ Combined with patch from Gerrit Renker to remove two now unnecessary\n  memsets of IPCB(skb)-\u003eopt ]\n\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nAcked-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "24e8b7e48471514c9311c733b3f399bd20d014fe",
      "tree": "6563b3ac632b01d71909313c6feb0ff704862d4f",
      "parents": [
        "387a5487f5a1f8bfc3b2c5818e50dfd19eeb4f3f"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Thu Apr 10 03:48:43 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 10 03:48:43 2008 -0700"
      },
      "message": "[DCCP]: Use snmp_mib_{init,free}().\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\nAcked-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ab1e0a13d70299e792fd0527cefd070c1405fa5b",
      "tree": "d470e7b94b0e33ea59b12713366f1bee0b94f78c",
      "parents": [
        "9dc7f30e3bac329998a2a9bb814bd0abc7cb58e2"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Sun Feb 03 04:06:04 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Feb 03 04:28:52 2008 -0800"
      },
      "message": "[SOCK] proto: Add hashinfo member to struct proto\n\nThis way we can remove TCP and DCCP specific versions of\n\nsk-\u003esk_prot-\u003eget_port: both v4 and v6 use inet_csk_get_port\nsk-\u003esk_prot-\u003ehash:     inet_hash is directly used, only v6 need\n                       a specific version to deal with mapped sockets\nsk-\u003esk_prot-\u003eunhash:   both v4 and v6 use inet_hash directly\n\nstruct inet_connection_sock_af_ops also gets a new member, bind_conflict, so\nthat inet_csk_get_port can find the per family routine.\n\nNow only the lookup routines receive as a parameter a struct inet_hashtable.\n\nWith this we further reuse code, reducing the difference among INET transport\nprotocols.\n\nEventually work has to be done on UDP and SCTP to make them share this\ninfrastructure and get as a bonus inet_diag interfaces so that iproute can be\nused with these protocols.\n\nnet-2.6/net/ipv4/inet_hashtables.c:\n  struct proto\t\t\t     |   +8\n  struct inet_connection_sock_af_ops |   +8\n 2 structs changed\n  __inet_hash_nolisten               |  +18\n  __inet_hash                        | -210\n  inet_put_port                      |   +8\n  inet_bind_bucket_create            |   +1\n  __inet_hash_connect                |   -8\n 5 functions changed, 27 bytes added, 218 bytes removed, diff: -191\n\nnet-2.6/net/core/sock.c:\n  proto_seq_show                     |   +3\n 1 function changed, 3 bytes added, diff: +3\n\nnet-2.6/net/ipv4/inet_connection_sock.c:\n  inet_csk_get_port                  |  +15\n 1 function changed, 15 bytes added, diff: +15\n\nnet-2.6/net/ipv4/tcp.c:\n  tcp_set_state                      |   -7\n 1 function changed, 7 bytes removed, diff: -7\n\nnet-2.6/net/ipv4/tcp_ipv4.c:\n  tcp_v4_get_port                    |  -31\n  tcp_v4_hash                        |  -48\n  tcp_v4_destroy_sock                |   -7\n  tcp_v4_syn_recv_sock               |   -2\n  tcp_unhash                         | -179\n 5 functions changed, 267 bytes removed, diff: -267\n\nnet-2.6/net/ipv6/inet6_hashtables.c:\n  __inet6_hash |   +8\n 1 function changed, 8 bytes added, diff: +8\n\nnet-2.6/net/ipv4/inet_hashtables.c:\n  inet_unhash                        | +190\n  inet_hash                          | +242\n 2 functions changed, 432 bytes added, diff: +432\n\nvmlinux:\n 16 functions changed, 485 bytes added, 492 bytes removed, diff: -7\n\n/home/acme/git/net-2.6/net/ipv6/tcp_ipv6.c:\n  tcp_v6_get_port                    |  -31\n  tcp_v6_hash                        |   -7\n  tcp_v6_syn_recv_sock               |   -9\n 3 functions changed, 47 bytes removed, diff: -47\n\n/home/acme/git/net-2.6/net/dccp/proto.c:\n  dccp_destroy_sock                  |   -7\n  dccp_unhash                        | -179\n  dccp_hash                          |  -49\n  dccp_set_state                     |   -7\n  dccp_done                          |   +1\n 5 functions changed, 1 bytes added, 242 bytes removed, diff: -241\n\n/home/acme/git/net-2.6/net/dccp/ipv4.c:\n  dccp_v4_get_port                   |  -31\n  dccp_v4_request_recv_sock          |   -2\n 2 functions changed, 33 bytes removed, diff: -33\n\n/home/acme/git/net-2.6/net/dccp/ipv6.c:\n  dccp_v6_get_port                   |  -31\n  dccp_v6_hash                       |   -7\n  dccp_v6_request_recv_sock          |   +5\n 3 functions changed, 5 bytes added, 38 bytes removed, diff: -33\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7913350663e2756ecb91dd3a7c773806b943426e",
      "tree": "3fcb07f5465930633526affa050571527ecd5c5a",
      "parents": [
        "b8599d20708fa3bde1e414689f3474560c2d990b"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Dec 13 12:27:14 2007 -0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:57:49 2008 -0800"
      },
      "message": "[DCCP]: Collapse repeated `len\u0027 statements into one\n\nThis replaces 4 individual assignments for `len\u0027 with a single\none, placed where the control flow of those 4 leads to.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: Ian McDonald \u003cian.mcdonald@jandi.co.nz\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b8599d20708fa3bde1e414689f3474560c2d990b",
      "tree": "adeb51da63a75b03fa55ddbc4712c8359240a3bf",
      "parents": [
        "28be5440044d5b19b0331f79fb3e81845ad6d77e"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Dec 13 12:25:01 2007 -0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:57:48 2008 -0800"
      },
      "message": "[DCCP]: Support for server holding timewait state\n\nThis adds a socket option and signalling support for the case where the server\nholds timewait state on closing the connection, as described in RFC 4340, 8.3.\n\nSince holding timewait state at the server is the non-usual case, it is enabled\nvia a socket option. Documentation for this socket option has been added.\n\nThe setsockopt statement has been made resilient against different possible cases\nof expressing boolean `true\u0027 values using a suggestion by Ian McDonald.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: Ian McDonald \u003cian.mcdonald@jandi.co.nz\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "92d31920b84f258badf206eea8aaf5ac677ac535",
      "tree": "b61c5a87ccd5110638df0a4d44924d8dffacbcf1",
      "parents": [
        "09f7709f4929666006931f1d4efc498a6d419bbc"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Dec 13 12:02:43 2007 -0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:57:47 2008 -0800"
      },
      "message": "[DCCP]: Shift the retransmit timer for active-close into output.c\n\nWhen performing active close, RFC 4340, 8.3. requires to retransmit the\nClose/CloseReq with a backoff-retransmit timer starting at intially 2 RTTs.\n\nThis patch shifts the existing code for active-close retransmit timer\ninto output.c, so that the retransmit timer is started when the first\nClose/CloseReq is sent. Previously, the timer was started when, after\nreleasing the socket in dccp_close(), the actively-closing side had not yet\nreached the CLOSED/TIMEWAIT state.\n\nThe patch further reduces the initial timeout from 3 seconds to the required\n2 RTTs, where - in absence of a known RTT - the fallback value specified in\nRFC 4340, 3.4 is used.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: Ian McDonald \u003cian.mcdonald@jandi.co.nz\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0c869620762fea4b3acf6502d9e80840b27ec642",
      "tree": "218146397018baf917260f3d0a90dd89fc13cc7f",
      "parents": [
        "f11135a3442996d78dad99933bfdb90d1f6588d3"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Nov 28 11:59:48 2007 -0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:55:13 2008 -0800"
      },
      "message": "[DCCP]: Integrate state transitions for passive-close\n\nThis adds the necessary state transitions for the two forms of passive-close\n\n * PASSIVE_CLOSE    - which is entered when a host   receives a Close;\n * PASSIVE_CLOSEREQ - which is entered when a client receives a CloseReq.\n\nHere is a detailed account of what the patch does in each state.\n\n1) Receiving CloseReq\n\n  The pseudo-code in 8.5 says:\n\n     Step 13: Process CloseReq\n          If P.type \u003d\u003d CloseReq and S.state \u003c CLOSEREQ,\n              Generate Close\n              S.state :\u003d CLOSING\n              Set CLOSING timer.\n\n  This means we need to address what to do in CLOSED, LISTEN, REQUEST, RESPOND, PARTOPEN, and OPEN.\n\n   * CLOSED:         silently ignore - it may be a late or duplicate CloseReq;\n   * LISTEN/RESPOND: will not appear, since Step 7 is performed first (we know we are the client);\n   * REQUEST:        perform Step 13 directly (no need to enqueue packet);\n   * OPEN/PARTOPEN:  enter PASSIVE_CLOSEREQ so that the application has a chance to process unread data.\n\n  When already in PASSIVE_CLOSEREQ, no second CloseReq is enqueued. In any other state, the CloseReq is ignored.\n  I think that this offers some robustness against rare and pathological cases: e.g. a simultaneous close where\n  the client sends a Close and the server a CloseReq. The client will then be retransmitting its Close until it\n  gets the Reset, so ignoring the CloseReq while in state CLOSING is sane.\n\n2) Receiving Close\n\n  The code below from 8.5 is unconditional.\n\n     Step 14: Process Close\n          If P.type \u003d\u003d Close,\n              Generate Reset(Closed)\n              Tear down connection\n              Drop packet and return\n\n  Thus we need to consider all states:\n   * CLOSED:           silently ignore, since this can happen when a retransmitted or late Close arrives;\n   * LISTEN:           dccp_rcv_state_process() will generate a Reset (\"No Connection\");\n   * REQUEST:          perform Step 14 directly (no need to enqueue packet);\n   * RESPOND:          dccp_check_req() will generate a Reset (\"Packet Error\") -- left it at that;\n   * OPEN/PARTOPEN:    enter PASSIVE_CLOSE so that application has a chance to process unread data;\n   * CLOSEREQ:         server performed active-close -- perform Step 14;\n   * CLOSING:          simultaneous-close: use a tie-breaker to avoid message ping-pong (see comment);\n   * PASSIVE_CLOSEREQ: ignore - the peer has a bug (sending first a CloseReq and now a Close);\n   * TIMEWAIT:         packet is ignored.\n\n   Note that the condition of receiving a packet in state CLOSED here is different from the condition \"there\n   is no socket for such a connection\": the socket still exists, but its state indicates it is unusable.\n\n   Last, dccp_finish_passive_close sets either DCCP_CLOSED or DCCP_CLOSING \u003d TCP_CLOSING, so that\n   sk_stream_wait_close() will wait for the final Reset (which will trigger CLOSING \u003d\u003e CLOSED).\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f11135a3442996d78dad99933bfdb90d1f6588d3",
      "tree": "6b10cea26f0551b769097296b7e41f25d6b44f08",
      "parents": [
        "f53dc67c5e7babafe239b93a11678b0e05bead51"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Nov 28 11:34:53 2007 -0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:55:12 2008 -0800"
      },
      "message": "[DCCP]: Dedicated auxiliary states to support passive-close\n\nThis adds two auxiliary states to deal with passive closes:\n  * PASSIVE_CLOSE    (reached from OPEN via reception of Close)    and\n  * PASSIVE_CLOSEREQ (reached from OPEN via reception of CloseReq)\nas internal intermediate states.\n\nThese states are used to allow a receiver to process unread data before\nacknowledging the received connection-termination-request (the Close/CloseReq).\n\nWithout such support, it will happen that passively-closed sockets enter CLOSED\nstate while there is still unprocessed data in the queue; leading to unexpected\nand erratic API behaviour.\n\nPASSIVE_CLOSE has been mapped into TCPF_CLOSE_WAIT, so that the code will\nseamlessly work with inet_accept() (which tests for this state).\n\nThe state names are thanks to Arnaldo, who suggested this naming scheme\nfollowing an earlier revision of this patch.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ce865a61c810c971b47f57c729ec6e9b2d522d94",
      "tree": "95e3013184679deb4699d416f2431910b9dd5c68",
      "parents": [
        "d83bd95bf11444993b9c405b255ffa644c32d414"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sat Nov 24 22:14:15 2007 -0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:55:02 2008 -0800"
      },
      "message": "[DCCP]: Add support for abortive release\n\nThis continues from the previous patch and adds support for actively aborting\na DCCP connection, using a Reset Code 2, \"Aborted\" to inform the peer of an\nabortive release.\n\nI have tried this in various client/server settings and it works as expected.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: Ian McDonald \u003cian.mcdonald@jandi.co.nz\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d83bd95bf11444993b9c405b255ffa644c32d414",
      "tree": "57311d4ffaa31ea73ca4a18a58fed985a14576cc",
      "parents": [
        "dcfbc7e97a2e3a0d73a2e41e1bddb988dcca701e"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Dec 16 16:06:03 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:55:01 2008 -0800"
      },
      "message": "[DCCP]: Check for unread data on close\n\nThis removes one FIXME with regard to close when there is still unread data.\nThe mechanism is implemented similar to TCP: with regard to DCCP-specifics,\na Reset with Code 2, \"Aborted\" is sent to the peer.\n\nThis corresponds in part to RFC 4340, 8.1.1 and 8.1.5.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: Ian McDonald \u003cian.mcdonald@jandi.co.nz\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e18d7a9857cb620a8f70622c4e400be477c264cf",
      "tree": "b09b5040a1885ba2f5287fb3d0a9e05e6abc33c5",
      "parents": [
        "d50ad163e6db2dcc365b8d02b30350220f86df04"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Sat Nov 24 21:42:53 2007 -0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:54:54 2008 -0800"
      },
      "message": "[DCCP]: Initialize dccp_sock before calling the ccid constructors\n\nThis is because in the next patch CCID2 will assume that dccps_mss_cache is\nnon-zero.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8e8c71f1ab0ca1c4e74efad14533b991524dcb6c",
      "tree": "ab9cf593ce85ca9eb278ccb1b683fbe459686cbd",
      "parents": [
        "9b91ad2747891767c0efb4fb965c5dfed8d4f88e"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Nov 21 09:56:48 2007 -0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:54:44 2008 -0800"
      },
      "message": "[DCCP]: Honour and make use of shutdown option set by user\n\nThis extends the DCCP socket API by honouring any shutdown(2) option set by the user.\nThe behaviour is, as much as possible, made consistent with the API for TCP\u0027s shutdown.\n\nThis patch exploits the information provided by the user via the socket API to reduce\nprocessing costs:\n * if the read end is closed (SHUT_RD), it is not necessary to deliver to input CCID;\n * if the write end is closed (SHUT_WR), the same idea applies, but with a difference -\n   as long as the TX queue has not been drained, we need to receive feedback to keep\n   congestion-control rates up to date. Hence SHUT_WR is honoured only after the last\n   packet (under congestion control) has been sent;\n * although SHUT_RDWR seems nonsensical, it is nevertheless supported in the same manner\n   as for TCP (and agrees with test for SHUTDOWN_MASK in dccp_poll() in net/dccp/proto.c).\n\nFurthermore, most of the code already honours the sk_shutdown flags (dccp_recvmsg() for\ninstance sets the read length to 0 if SHUT_RD had been called); CCID handling is now added\nto this by the present patch.\n\nThere will also no longer be any delivery when the socket is in the final stages, i.e. when\none of dccp_close(), dccp_fin(), or dccp_done() has been called - which is fine since at\nthat stage the connection is its final stages.\n\nMotivation and background are on http://www.erg.abdn.ac.uk/users/gerrit/dccp/notes/shutdown\n\nA FIXME has been added to notify the other end if SHUT_RD has been set (RFC 4340, 11.7).\n\nNote: There is a comment in inet_shutdown() in net/ipv4/af_inet.c which asks to \"make\n      sure the socket is a TCP socket\". This should probably be extended to mean\n      `TCP or DCCP socket\u0027 (the code is also used by UDP and raw sockets).\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: Ian McDonald \u003cian.mcdonald@jandi.co.nz\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "230140cffa7feae90ad50bf259db1fa07674f3a7",
      "tree": "815472add31606423a508a17806b7884f0ab3e2e",
      "parents": [
        "efac52762b1e3fe3035d29e82d8ee1aebc45e4a7"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Wed Nov 07 02:40:20 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Nov 07 04:15:11 2007 -0800"
      },
      "message": "[INET]: Remove per bucket rwlock in tcp/dccp ehash table.\n\nAs done two years ago on IP route cache table (commit\n22c047ccbc68fa8f3fa57f0e8f906479a062c426) , we can avoid using one\nlock per hash bucket for the huge TCP/DCCP hash tables.\n\nOn a typical x86_64 platform, this saves about 2MB or 4MB of ram, for\nlitle performance differences. (we hit a different cache line for the\nrwlock, but then the bucket cache line have a better sharing factor\namong cpus, since we dirty it less often). For netstat or ss commands\nthat want a full scan of hash table, we perform fewer memory accesses.\n\nUsing a \u0027small\u0027 table of hashed rwlocks should be more than enough to\nprovide correct SMP concurrency between different buckets, without\nusing too much memory. Sizing of this table depends on\nnum_possible_cpus() and various CONFIG settings.\n\nThis patch provides some locking abstraction that may ease a future\nwork using a different model for TCP/DCCP table.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nAcked-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6273172e1772bf5ce8697bcae145f0f2954fd159",
      "tree": "2c521a8065621d641768d8fa52e6a073cd916929",
      "parents": [
        "bada339ba24dee9e143bfb42e1dc61f146619846"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Tue Oct 23 20:23:30 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Tue Oct 23 21:27:50 2007 -0700"
      },
      "message": "[DCCP]: Implement SIOCINQ/FIONREAD\n\nJust like UDP.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: Leandro Melo de Sales \u003cleandroal@gmail.com\u003e\nSigned-off-by: Ian McDonald \u003cian.mcdonald@jandi.co.nz\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "042d18f9f39a51716683b4e156fbee689314bb22",
      "tree": "63038a347f9a9321c5c671cff606b71186b5f967",
      "parents": [
        "7c559a9e44ee61faf2f339604ce708decb345a93"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Oct 04 14:39:53 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:54:32 2007 -0700"
      },
      "message": "[DCCP]: Make all `debug\u0027 parameters bool\n\nThis just sets the parameter to bool, since debugging messages are\neither on or off.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: Ian McDonald \u003cian.mcdonald@jandi.co.nz\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7c559a9e44ee61faf2f339604ce708decb345a93",
      "tree": "8e0e89521445a42cf801747af20be172b6e9e582",
      "parents": [
        "bc8498721dfe3f7d537f4f75302be7dbe9c7b939"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Oct 04 14:39:22 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:54:31 2007 -0700"
      },
      "message": "[DCCP]: Add socket option to query the current MPS\n\nThis enables applications to query the current value of the Maximum\nPacket Size via a socket option, suggested as a SHOULD in (RFC 4340,\np. 102).\n\nThis socket option is useful to avoid the annoying bail-out via\n`-EMSGSIZE\u0027.  In particular, as fragmentation is not currently\nsupported (and its use is partly discouraged in RFC 4340).\n\nWith this option, it is possible to size buffers accordingly, e.g.\n\n\tint buflen \u003d dccp_get_cur_mps(sockfd);\n\n\t/* or */\n\tif (msgsize \u003e dccp_get_cur_mps(sockfd))\n\t\tdie(\"message is too large for this path\");\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: Ian McDonald \u003cian.mcdonald@jandi.co.nz\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "cecd8d0ec4cb4fec728f67163bb0a78f80c292eb",
      "tree": "0203cb30479143463cb2228ef872be2f1e10ddec",
      "parents": [
        "e356d37a096a990ea1a74c44c15640122e56110b"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Sep 26 19:36:08 2007 -0300"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:52:45 2007 -0700"
      },
      "message": "[DCCP]: Reduce the number of writable states\n\nSince DCCP requires to close both ends of a connection simultaneously,\npermission to write in state DCCP_CLOSING is removed in dccp_sendmsg():\n * if the sending end closed, it would encounter a write error anyhow;\n * if the other end has closed the connection, it accepts no more data.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: Ian McDonald \u003cian.mcdonald@jandi.co.nz\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\n"
    },
    {
      "commit": "a94f0f970549e63e54c80c4509db299c514d8c11",
      "tree": "3b9421fc70e00c16ed57ef4330b24504b04ae309",
      "parents": [
        "ee1a15922d356aff0e31bf9bb9088ab346b8033a"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Sep 26 11:31:49 2007 -0300"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:52:43 2007 -0700"
      },
      "message": "[DCCP]: Rate-limit DCCP-Syncs\n\nThis implements a SHOULD from RFC 4340, 7.5.4:\n \"To protect against denial-of-service attacks, DCCP implementations SHOULD\n  impose a rate limit on DCCP-Syncs sent in response to sequence-invalid packets,\n  such as not more than eight DCCP-Syncs per second.\"\n\nThe rate-limit is maintained on a per-socket basis. This is a more stringent\npolicy than enforcing the rate-limit on a per-source-address basis and\nprotects against attacks with forged source addresses.\n\nMoreover, the mechanism is deliberately kept simple. In contrast to\nxrlim_allow(), bursts of Sync packets in reply to sequence-invalid packets\nare not supported.  This foils such attacks where the receipt of a Sync\ntriggers further sequence-invalid packets. (I have tested this mechanism against\nxrlim_allow algorithm for Syncs, permitting bursts just increases the problems.)\n\nIn order to keep flexibility, the timeout parameter can be set via sysctl; and\nthe whole mechanism can even be disabled (which is however not recommended).\n\nThe algorithm in this patch has been improved with regard to wrapping issues\nthanks to a suggestion by Arnaldo.\n\nCommiter note: Rate limited the step 6 DCCP_WARN too, as it says we\u0027re\n               sending a sync.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: Ian McDonald \u003cian.mcdonald@jandi.co.nz\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\n"
    },
    {
      "commit": "4c70f383e0c0273c4092c4efdb414be0966978b7",
      "tree": "733cc2497ec68c74d42ed6d8f6978b24152a3de0",
      "parents": [
        "aa97efd97acefb7d3dcd864adb878c7ce34061b3"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Sep 25 22:40:13 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:52:35 2007 -0700"
      },
      "message": "[DCCP]: Provide 10s of microsecond timesource\n\nThis provides a timesource, conveniently used for DCCP timestamps, which\nreturns the elapsed time in 10s of microseconds since initialisation.\nThis makes for a wrap-around time of about 11.9 hours, which should be\nsufficient for most applications.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8fb8354af9b92ce3bd41083995f1fe26024d0959",
      "tree": "62d1920b5ed158e28d96691637d82a2a4fd58dc5",
      "parents": [
        "234748954a9880cce8a065698dcbf692f9c23918"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@ghostprotocols.net",
        "time": "Sun Aug 19 17:19:21 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:48:17 2007 -0700"
      },
      "message": "[DCCP]: Nuke dccp_timestamp and dccps_epoch, not used anymore\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "20c2df83d25c6a95affe6157a4c9cac4cf5ffaac",
      "tree": "415c4453d2b17a50abe7a3e515177e1fa337bd67",
      "parents": [
        "64fb98fc40738ae1a98bcea9ca3145b89fb71524"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "committer": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "message": "mm: Remove slab destructors from kmem_cache_create().\n\nSlab destructors were no longer supported after Christoph\u0027s\nc59def9f222d44bb7e2f0a559f2906191a0862d7 change. They\u0027ve been\nBUGs for both slab and slub, and slob never supported them\neither.\n\nThis rips out support for the dtor pointer from kmem_cache_create()\ncompletely and fixes up every single callsite in the kernel (there were\nabout 224, not including the slab allocator definitions themselves,\nor the documentation references).\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\n"
    },
    {
      "commit": "39ebc0276bada8bb70e067cb6d0eb71839c0fb08",
      "tree": "a6afca93101b9142523d6814db12ec09d73e58ef",
      "parents": [
        "53aadcc90931dfa150f76ce9a5f9e8f3e43d57df"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@ghostprotocols.net",
        "time": "Wed Mar 28 11:54:32 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Mar 28 11:54:32 2007 -0700"
      },
      "message": "[DCCP] getsockopt: Fix DCCP_SOCKOPT_[SEND,RECV]_CSCOV\n\nWe were only checking if there was enough space to put the int, but\nleft len as specified by the (malicious) user, sigh, fix it by setting\nlen to sizeof(val) and transfering just one int worth of data, the one\nasked for.\n\nAlso check for negative len values.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c9eaf17341834de00351bf79f16b2d879c8aea96",
      "tree": "d8b2005197444fa6b6bdf8e8c8fd6eaf2db9ecd7",
      "parents": [
        "4ec93edb14fe5fdee9fae6335f2cbba204627eac"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Fri Feb 09 23:24:38 2007 +0900"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Feb 10 23:19:27 2007 -0800"
      },
      "message": "[NET] DCCP: Fix whitespace errors.\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "dbca9b2750e3b1ee6f56a616160ccfc12e8b161f",
      "tree": "bf84c0acb5495fc95bc616d32b8af946f2e3bca9",
      "parents": [
        "eac3731bd04c7131478722a3c148b78774553116"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Thu Feb 08 14:16:46 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Feb 08 14:16:46 2007 -0800"
      },
      "message": "[NET]: change layout of ehash table\n\nehash table layout is currently this one :\n\nFirst half of this table is used by sockets not in TIME_WAIT state\nSecond half of it is used by sockets in TIME_WAIT state.\n\nThis is non optimal because of for a given hash or socket, the two chain heads \nare located in separate cache lines.\nMoreover the locks of the second half are never used.\n\nIf instead of this halving, we use two list heads in inet_ehash_bucket instead \nof only one, we probably can avoid one cache miss, and reduce ram usage, \nparticularly if sizeof(rwlock_t) is big (various CONFIG_DEBUG_SPINLOCK, \nCONFIG_DEBUG_LOCK_ALLOC settings). So we still halves the table but we keep \ntogether related chains to speedup lookups and socket state change.\n\nIn this patch I did not try to align struct inet_ehash_bucket, but a future \npatch could try to make this structure have a convenient size (a power of two \nor a multiple of L1_CACHE_SIZE).\nI guess rwlock will just vanish as soon as RCU is plugged into ehash :) , so \nmaybe we dont need to scratch our heads to align the bucket...\n\nNote : In case struct inet_ehash_bucket is not a power of two, we could \nprobably change alloc_large_system_hash() (in case it use __get_free_pages()) \nto free the unused space. It currently allocates a big zone, but the last \nquarter of it could be freed. Again, this should be a temporary \u0027problem\u0027.\n\nPatch tested on ipv4 tcp only, but should be OK for IPV6 and DCCP.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8109b02b5397ed52a32c116163a62a34f4768b26",
      "tree": "0dbeae8cc999d2f6b71807b942eda7ff686ba7d2",
      "parents": [
        "1fba78b6cba14bd37fdb12c5367f1e4d58ff2e0f"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Sun Dec 10 16:01:18 2006 -0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Mon Dec 11 14:35:00 2006 -0800"
      },
      "message": "[DCCP]: Whitespace cleanups\n\nThat accumulated over the last months hackaton, shame on me for not\nusing git-apply whitespace helping hand, will do that from now on.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\n"
    },
    {
      "commit": "841bac1d607d8bf2e068e4b24393fb77372814e3",
      "tree": "ae129257665491be24e088aed36b95d7aa4e0920",
      "parents": [
        "5aed324369c94a2c38469c8288e42eb1a9fac400"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Tue Nov 28 19:42:03 2006 -0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Dec 02 21:31:00 2006 -0800"
      },
      "message": "[DCCP]: Make {set,get}sockopt(DCCP_SOCKOPT_PACKET_SIZE) return 0\n\nTo reflect the fact that this now is of no effect, not making apps\nstop working, just be warned in the system log.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\n"
    },
    {
      "commit": "5aed324369c94a2c38469c8288e42eb1a9fac400",
      "tree": "76290075540058745b53d34db1672f5e292e6b1a",
      "parents": [
        "78ad713da673a2977763521c347176137f3e493f"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Nov 28 19:33:36 2006 -0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Dec 02 21:30:59 2006 -0800"
      },
      "message": "[DCCP]: Tidy up unused structures\n\nThis removes and cleans up unused variables and structures which have become\nunnecessary following the introduction of the EWMA patch to automatically track\nthe CCID 3 receiver/sender packet sizes `s\u0027.\n\nIt deprecates the PACKET_SIZE socket option by returning an error code and\nprinting a deprecation warning if an application tries to read or write this\nsocket option.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\n"
    },
    {
      "commit": "59348b19efebfd6a8d0791ff81d207b16594c94b",
      "tree": "a9212a7bf62bd594cf02d23b9e33eb45a46d414d",
      "parents": [
        "b1308dc015eb09cf094ca169296738a13ae049ad"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Nov 20 18:39:23 2006 -0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Dec 02 21:24:38 2006 -0800"
      },
      "message": "[DCCP]: Simplified conditions due to use of enum:8 states\n\nThis reaps the benefit of the earlier patch, which changed the type of\nCCID 3 states to use enums, in that many conditions are now simplified\nand the number of possible (unexpected) values is greatly reduced.\n\nIn a few instances, this also allowed to simplify pre-conditions; where\ncare has been taken to retain logical equivalence.\n\n[DCCP]: Introduce a consistent BUG/WARN message scheme\n\nThis refines the existing set of DCCP messages so that\n * BUG(), BUG_ON(), WARN_ON() have meaningful DCCP-specific counterparts\n * DCCP_CRIT (for severe warnings) is not rate-limited\n * DCCP_WARN() is introduced as rate-limited wrapper\n\nUsing these allows a faster and cleaner transition to their original\ncounterparts once the code has matured into a full DCCP implementation.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\n"
    },
    {
      "commit": "b1308dc015eb09cf094ca169296738a13ae049ad",
      "tree": "9c408412fc94671bb7f23b356ef328489c433d1f",
      "parents": [
        "56724aa434e9b4d73548021ede7a1474f533f3fe"
      ],
      "author": {
        "name": "Ian McDonald",
        "email": "ian.mcdonald@jandi.co.nz",
        "time": "Mon Nov 20 18:30:17 2006 -0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Dec 02 21:24:37 2006 -0800"
      },
      "message": "[DCCP]: Set TX Queue Length Bounds via Sysctl\n\nPreviously the transmit queue was unbounded.\n\nThis patch:\n\t* puts a limit on transmit queue length\n\t  and sends back EAGAIN if the buffer is full\n\t* sets the TX queue length to a sensible default\n\t* implements tx buffer sysctls for DCCP\n\nSigned-off-by: Ian McDonald \u003cian.mcdonald@jandi.co.nz\u003e\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\n"
    },
    {
      "commit": "09dbc3895e3242346bd434dae743c456fd28fc6a",
      "tree": "a7bc1d0879b025152bff9e4a0ba44beaa5da654b",
      "parents": [
        "c02fdc0e81e9c735d8d895af1e201b235df326d8"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Nov 14 12:57:34 2006 -0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Dec 02 21:22:30 2006 -0800"
      },
      "message": "[DCCP]: Miscellaneous code tidy-ups\n\nThis patch does not change code; it performs some trivial clean/tidy-ups:\n\n  * removal of a `debug_prefix\u0027 string in favour of the\n    already existing dccp_role(sk)\n\n  * add documentation of structures and constants\n\n  * separated out the cases for invalid packets (step 1\n    of the packet validation)\n\n  * removing duplicate statements\n\n  * combining declaration \u0026 initialisation\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\n"
    },
    {
      "commit": "2e2e9e92bd723244ea20fa488b1780111f2b05e1",
      "tree": "2e859b2b0aa17d2e18927fe110cdefad6c4f5fe6",
      "parents": [
        "e11d9d30802278af22e78d8c10f348b683670cd9"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Nov 13 13:23:52 2006 -0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Dec 02 21:22:18 2006 -0800"
      },
      "message": "[DCCP]: Add sysctls to control retransmission behaviour\n\nThis adds 3 sysctls which govern the retransmission behaviour of DCCP control\npackets (3way handshake, feature negotiation).\n\nIt removes 4 FIXMEs from the code.\n\nThe close resemblance of sysctl variables to their TCP analogues is emphasised\nnot only by their name, but also by giving them the same initial values.\nThis is useful since there is not much practical experience with DCCP yet.\n\nFurthermore, with regard to the previous patch, it is now possible to limit\nthe number of keepalive-Responses by setting net.dccp.default.request_retries\n(also a bit like in TCP).\n\nLastly, added documentation of all existing DCCP sysctls.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\n"
    },
    {
      "commit": "6f4e5fff1e4d46714ea554fd83e44eab534e8b11",
      "tree": "4b14344fd825bbcefb6e8514e98e3e796b2dc1bd",
      "parents": [
        "a11d206d0f88e092419877c7f706cafb5e1c2e57"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Fri Nov 10 17:43:06 2006 -0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Dec 02 21:22:09 2006 -0800"
      },
      "message": "[DCCP]: Support for partial checksums (RFC 4340, sec. 9.2)\n\nThis patch does the following:\n  a) introduces variable-length checksums as specified in [RFC 4340, sec. 9.2]\n  b) provides necessary socket options and documentation as to how to use them\n  c) basic support and infrastructure for the Minimum Checksum Coverage feature\n     [RFC 4340, sec. 9.2.1]: acceptability tests, user notification and user\n     interface\n\nIn addition, it\n\n (1) fixes two bugs in the DCCPv4 checksum computation:\n \t* pseudo-header used checksum_len instead of skb-\u003elen\n\t* incorrect checksum coverage calculation based on dccph_x\n (2) removes dccp_v4_verify_checksum() since it reduplicates code of the\n     checksum computation; code calling this function is updated accordingly.\n (3) now uses skb_checksum(), which is safer than checksum_partial() if the\n     sk_buff has is a non-linear buffer (has pages attached to it).\n (4) fixes an outstanding TODO item:\n        * If P.CsCov is too large for the packet size, drop packet and return.\n\nThe code has been tested with applications, the latest version of tcpdump now\ncomes with support for partial DCCP checksums.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\n"
    },
    {
      "commit": "72a3effaf633bcae9034b7e176bdbd78d64a71db",
      "tree": "b7a331527f1b15335a358f97809134f35587e57a",
      "parents": [
        "3c62f75aac7348ee262b1295cfcfeb3473f76815"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Thu Nov 16 02:30:37 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Dec 02 21:21:44 2006 -0800"
      },
      "message": "[NET]: Size listen hash tables using backlog hint\n\nWe currently allocate a fixed size (TCP_SYNQ_HSIZE\u003d512) slots hash table for\neach LISTEN socket, regardless of various parameters (listen backlog for\nexample)\n\nOn x86_64, this means order-1 allocations (might fail), even for \u0027small\u0027\nsockets, expecting few connections. On the contrary, a huge server wanting a\nbacklog of 50000 is slowed down a bit because of this fixed limit.\n\nThis patch makes the sizing of listen hash table a dynamic parameter,\ndepending of :\n- net.core.somaxconn tunable (default is 128)\n- net.ipv4.tcp_max_syn_backlog tunable (default : 256, 1024 or 128)\n- backlog value given by user application  (2nd parameter of listen())\n\nFor large allocations (bigger than PAGE_SIZE), we use vmalloc() instead of\nkmalloc().\n\nWe still limit memory allocation with the two existing tunables (somaxconn \u0026\ntcp_max_syn_backlog). So for standard setups, this patch actually reduce RAM\nusage.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "00e4d116a7ef94eb910be037912b0b2fc09f608b",
      "tree": "81e8a52c7529691b3c07605613da65cae80f41c9",
      "parents": [
        "1ab9dd0902df4f4ff56fbf672220549090ab28ba"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Fri Sep 22 09:33:58 2006 +0100"
      },
      "committer": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Sun Sep 24 17:49:26 2006 -0300"
      },
      "message": "[DCCP]: Allow default/fallback service code.\n\nThis has been discussed on dccp@vger and removes the necessity for applications\nto supply service codes in each and every case.\n\nIf an application does not want to provide a service code, that\u0027s fine, it will\nbe given 0. Otherwise, service codes can be set via socket options as before.\n\nThis patch has been tested using various client/server configurations\n(including listening on multiple service codes).\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\n"
    }
  ],
  "next": "97e5848dd39e7e76bd6077735ebb5473763ab9c5"
}
