)]}'
{
  "log": [
    {
      "commit": "d9b52dc6fd1fbb2bad645cbc86a60f984c1cb179",
      "tree": "2d611234ea1cd228a74b21049336149e19956700",
      "parents": [
        "5eb32bd059379530fc3809a7fcf183feca75f601"
      ],
      "author": {
        "name": "Yoichi Yuasa",
        "email": "yuasa@linux-mips.org",
        "time": "Mon May 24 18:37:02 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 24 18:37:02 2010 -0700"
      },
      "message": "net/dccp: expansion of error code size\n\nBecause MIPS\u0027s EDQUOT value is 1133(0x46d).\nIt\u0027s larger than u8.\n\nSigned-off-by: Yoichi Yuasa \u003cyuasa@linux-mips.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "871039f02f8ec4ab2e5e9010718caa8e085786f1",
      "tree": "f0d2b3127fc48c862967d68c46c2d46668137515",
      "parents": [
        "e4077e018b5ead3de9951fc01d8bf12eeeeeefed",
        "4a1032faac94ebbf647460ae3e06fc21146eb280"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Apr 11 14:53:53 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Apr 11 14:53:53 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/net/stmmac/stmmac_main.c\n\tdrivers/net/wireless/wl12xx/wl1271_cmd.c\n\tdrivers/net/wireless/wl12xx/wl1271_main.c\n\tdrivers/net/wireless/wl12xx/wl1271_spi.c\n\tnet/core/ethtool.c\n\tnet/mac80211/scan.c\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "b138338056fc423c61a583d45f8aa64cfad87131",
      "tree": "89079c1f80c62a7fce240942605e869944c81a1e",
      "parents": [
        "18062ca94714a66e75da8a22e010d0e8e61ab4cd"
      ],
      "author": {
        "name": "Frans Pop",
        "email": "elendil@planet.nl",
        "time": "Wed Mar 24 07:57:28 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Mar 24 14:01:54 2010 -0700"
      },
      "message": "net: remove trailing space in messages\n\nSigned-off-by: Frans Pop \u003celendil@planet.nl\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "129fa44785a399248ae2466b6cb5c655e96668f7",
      "tree": "c2440b83e752c6cf3e6ec6f60492b85ddb8932a9",
      "parents": [
        "e5fd56ca4eb3a130882bbef69d6952ef6aca5c8d"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Jan 04 21:45:33 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jan 04 21:45:33 2009 -0800"
      },
      "message": "dccp: Integrate the TFRC library with DCCP\n\nThis patch integrates the TFRC library, which is a dependency of CCID-3 (and\nCCID-4), with the new use of CCIDs in the DCCP module.\t\t\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "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": "991d927c8652b2ab51bd8eef2b773bb2c77d457b",
      "tree": "b21cab0ebe4b9f93a2c57b6dc6cd2f38ec828301",
      "parents": [
        "192b27ff35bad4cf76cc4239419e9f805935e4f8"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Dec 08 01:16:27 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 08 01:16:27 2008 -0800"
      },
      "message": "dccp: Integration of dynamic feature activation - part 3 (client side)\n\nThis integrates feature-activation in the client:\n\n 1. When dccp_parse_options() fails, the reset code is already set; request_sent\\\n    _state_process() currently overrides this with `Packet Error\u0027, which is not\n    intended - changed to use the reset code supplied by dccp_parse_options().\n\n 2. When feature negotiation fails, the socket should be marked as not usable,\n    so that the application is notified that an error occurred. This is achieved\n    by a new label \u0027unable_to_proceed\u0027: generating an error code of `Aborted\u0027,\n    setting the socket state to CLOSED, returning with ECOMM in sk_err.\n\n 3. Avoids parsing the Ack twice in Respond state by not doing option processing\n    again in dccp_rcv_respond_partopen_state_process (as option processing has\n    already been done on the request_sock in dccp_check_req).\n\nSince this addresses congestion-control initialisation, a corresponding\nFIXME has been removed.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nAcked-by: Ian McDonald \u003cian.mcdonald@jandi.co.nz\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "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": "49ffc29a0223adbe0ea7005eea3ab2a03abbeb06",
      "tree": "d7bf19858c85b5dbb6bded3f543fbf8a6a355a2e",
      "parents": [
        "2b81143aa3505e2460b24b357996c2f21840ea58"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:30:19 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:41 2008 +0200"
      },
      "message": "dccp: Clamping RTT values\n\nThis extracts the clamping part of dccp_sample_rtt() and makes it available\nto other parts of the code (as e.g. used in the next patch).\n\nNote: The function dccp_sample_rtt() now reduces to subtracting the elapsed\ntime. This could be eliminated but would require shorter prefixes and thus\nis not done by this patch - maybe an idea for later.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "ddab05568eaa70fc92b2aae957136f188f724e9c",
      "tree": "895f53c4e418987c97aec350996d34e166dedfdc",
      "parents": [
        "6224877b2ca4be5de96270a8ae490fe2ba11b0e0"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:30:19 2008 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Sep 04 07:45:39 2008 +0200"
      },
      "message": "dccp: Clean up slow-path input processing\n\nThis patch rearranges the order of statements of the slow-path input processing\n(i.e. any other state than OPEN), to resolve the following issues.\n\n 1. Dependencies: the order of statements now better matches RFC 4340, 8.5, i.e.\n    step 7 is before step 9 (previously 9 was before 7), and parsing options in\n    step 8 (which can consume resources) now comes after step 7.\n 2. Bug-fix: in state CLOSED, there should not be any sequence number checking\n    or option processing. This is why the test for CLOSED has been moved after\n    the test for LISTEN.\n 3. As before sequence number checks are omitted if in state LISTEN/REQUEST, due\n    to the note underneath the table in RFC 4340, 7.5.3.\n 4. Packets are now passed on to Ack Vector / CCID processing only after\n    - step 7  (receive unexpected packets), \n    - step 9  (receive Reset),\n    - step 13 (receive CloseReq),\n    - step 14 (receive Close)\n    and only if the state is PARTOPEN. This simplifies CCID processing:\n    - in LISTEN/CLOSED the CCIDs are non-existent;\n    - in RESPOND/REQUEST the CCIDs have not yet been negotiated;\n    - in CLOSEREQ and active-CLOSING the node has already closed this socket;\n    - in passive-CLOSING the client is waiting for its Reset.\n    In the last case, RFC 4340, 8.3 leaves it open to ignore further incoming\n    data, which is the approach taken here.\n\nAs a result of (3), CCID processing is now indeed confined to OPEN/PARTOPEN\nstates, i.e. congestion control is performed only on the flow of data packets. \n\nThis avoids pathological cases of doing congestion control on those messages\nwhich set up and terminate the connection. \n\nI have done a few checks to see if this creates a problem in other parts of\nthe code. This seems not to be the case; even if there were one, it would be\nbetter to fix it than to perform congestion control on Close/Request/Response\nmessages. Similarly for Ack Vectors (as they depend on the negotiated CCID).\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "283fb4a5f39d1521d53e1044bff0ba2654acf145",
      "tree": "e813566d7b3530702410d470f85cf2162e443bb3",
      "parents": [
        "e28fe59f9c82ef55fc9b55e745531c9fed86f00a"
      ],
      "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:37 2008 +0200"
      },
      "message": "dccp ccid-2: Consolidate Ack-Vector processing within main DCCP module\n\nThis aggregates Ack Vector processing (handling input and clearing old state)\ninto one function, for the following reasons and benefits:\n * all Ack Vector-specific processing is now in one place;\n * duplicated code is removed;\n * ensuring sanity: from an Ack Vector point of view, it is better to clear the\n                    old state first before entering new state;\n * Ack Event handling happens mostly within the CCIDs, not the main DCCP module.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e  \n"
    },
    {
      "commit": "68b1de15765f2b0e0925e692dab2b2fa2abd93fc",
      "tree": "893594a088a7d9ba4bff6c1820ec014740ca62bf",
      "parents": [
        "d7dc7e5f49299739e610ea8febf9ea91a4dc1ae9"
      ],
      "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:37 2008 +0200"
      },
      "message": "dccp ccid-2: Algorithm to update buffer state\n\nThis provides a routine to consistently update the buffer state when the\npeer acknowledges receipt of Ack Vectors; updating state in the list of Ack\nVectors as well as in the circular buffer.\n\nWhile based on RFC 4340, several additional (and necessary) precautions were\nadded to protect the consistency of the buffer state. These additions are\nessential, since analysis and experience showed that the basic algorithm was\ninsufficient for this task (which lead to problems that were hard to debug).\n\nThe algorithm now\n * deals with HC-sender acknowledging to HC-receiver and vice versa,\n * keeps track of the last unacknowledged but received seqno in tail_ackno,\n * has special cases to reset the overflow condition when appropriate,\n * is protected against receiving older information (would mess up buffer state).\n\nNote: The older code performed an unnecessary step, where the sender cleared\nAck Vector state by parsing the Ack Vector received by the HC-receiver. Doing\nthis was entirely redundant, since\n * the receiver always puts the full acknowledgment window (groups 2,3 in 11.4.2)\n   into the Ack Vectors it sends; hence the HC-receiver is only interested in the\n   highest state that the HC-sender received;\n * this means that the acknowledgment number on the (Data)Ack from the HC-sender\n   is sufficient; and work done in parsing earlier state is not necessary, since\n   the later state subsumes the  earlier one (see also RFC 4340, A.4).\nThis older interface (dccp_ackvec_parse()) is therefore removed.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "ff49e27089ec363b7fc3849504e0435d447ab18a",
      "tree": "eb6f7d4ec829f2c0ca206c0769c15c08e592743c",
      "parents": [
        "b8c6bcee1dbc1aadcd67af998e414e73fa166a7d"
      ],
      "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:36 2008 +0200"
      },
      "message": "dccp ccid-2: Ack Vector interface clean-up\n\nThis patch brings the Ack Vector interface up to date. Its main purpose is\nto lay the basis for the subsequent patches of this set, which will use the\nnew data structure fields and routines.\n\nThere are no real algorithmic changes, rather an adaptation:\n\n (1) Replaced the static Ack Vector size (2) with a #define so that it can\n     be adapted (with low loss / Ack Ratio, a value of 1 works, so 2 seems\n     to be sufficient for the moment) and added a solution so that computing\n     the ECN nonce will continue to work - even with larger Ack Vectors.\n\n (2) Replaced the #defines for Ack Vector states with a complete enum.\n\n (3) Replaced #defines to compute Ack Vector length and state with general\n     purpose routines (inlines), and updated code to use these.\n\n (4) Added a `tail\u0027 field (conversion to circular buffer in subsequent patch).\n\n (5) Updated the (outdated) documentation for Ack Vector struct.\n\n (6) All sequence number containers now trimmed to 48 bits.\n\n (7) Removal of unused bits:\n     * removed dccpav_ack_nonce from struct dccp_ackvec, since this is already\n       redundantly stored in the `dccpavr_ack_nonce\u0027 (of Ack Vector record);\n     * removed Elapsed Time for Ack Vectors (it was nowhere used);\n     * replaced semantics of dccpavr_sent_len with dccpavr_ack_runlen, since\n       the code needs to be able to remember the old run length; \n     * reduced the de-/allocation routines (redundant / duplicate tests).\n\n\nJustification for removing Elapsed Time information [can be removed]:\n---------------------------------------------------------------------\n 1. The Elapsed Time information for Ack Vectors was nowhere used in the code.\n 2. DCCP does not implement rate-based pacing of acknowledgments. The only\n    recommendation for always including Elapsed Time is in section 11.3 of\n    RFC 4340: \"Receivers that rate-pace acknowledgements SHOULD [...]\n    include Elapsed Time options\". But such is not the case here.\n 3. It does not really improve estimation accuracy. The Elapsed Time field only\n    records the time between the arrival of the last acknowledgeable packet and\n    the time the Ack Vector is sent out. Since Linux does not (yet) implement\n    delayed Acks, the time difference will typically be small, since often the\n    arrival of a data packet triggers sending feedback at the HC-receiver.\n\n\nJustification for changes in de-/allocation routines [can be removed]:\n----------------------------------------------------------------------\n  * INIT_LIST_HEAD in dccp_ackvec_record_new was redundant, since the list\n    pointers were later overwritten when the node was added via list_add();\n  * dccp_ackvec_record_new() was called in a single place only;\n  * calls to list_del_init() before calling dccp_ackvec_record_delete() were\n    redundant, since subsequently the entire element was k-freed;\n  * since all calls to dccp_ackvec_record_delete() were preceded to a call to\n    list_del_init(), the WARN_ON test would never evaluate to true;\n  * since all calls to dccp_ackvec_record_delete() were made from within\n    list_for_each_entry_safe(), the test for avr \u003d\u003d NULL was redundant;\n  * list_empty() in ackvec_free was redundant, since the same condition is\n    embedded in the loop condition of the subsequent list_for_each_entry_safe().\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "bfbddd085a5bced6efb9e1bc4d029438f9639784",
      "tree": "2187b8a4a2d4864419bd5897ccfdff57a6bc3b48",
      "parents": [
        "2975abd251d795810932b20354729ba236d95bf9"
      ],
      "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:35 2008 +0200"
      },
      "message": "dccp: Fix the adjustments to AWL and SWL\n\nThis fixes a problem and a potential loophole with regard to seqno/ackno\nvalidity: the problem is that the initial adjustments to AWL/SWL were\nonly performed at the begin of the connection, during the handshake.\n\nSince the Sequence Window feature is always greater than Wmin\u003d32 (7.5.2), \nit is however necessary to perform these adjustments at least for the first\nW/W\u0027 (variables as per 7.5.1) packets in the lifetime of a connection.\n\nThis requirement is complicated by the fact that W/W\u0027 can change at any time\nduring the lifetime of a connection.\n\nTherefore the consequence is to perform this safety check each time SWL/AWL\nare updated.\n\nA second problem solved by this patch is that the remote/local Sequence Window\nfeature values (which set the bounds for AWL/SWL/SWH) are undefined until the\nfeature negotiation has completed.\n\nDuring the initial handshake we have more stringent sequence number protection,\nthe changes added by this patch effect that {A,S}W{L,H} are within the correct\nbounds at the instant that feature negotiation completes (since the SeqWin\nfeature activation handlers call dccp_update_gsr/gss()). \n\nA detailed rationale is below -- can be removed from the commit message.\n\n\n1. Server sequence number checks during initial handshake\n---------------------------------------------------------\nThe server can not use the fields of the listening socket for seqno/ackno checks\nand thus needs to store all relevant information on a per-connection basis on\nthe dccp_request socket. This is a size-constrained structure and has currently\nonly ISS (dreq_iss) and ISR (dreq_isr) defined.\nAdding further fields (SW{L,H}, AW{L,H}) would increase the size of the struct\nand it is questionable whether this will have any practical gain. The currently\nimplemented solution is as follows.\n * receiving first Request: dccp_v{4,6}_conn_request sets \n                            ISR :\u003d P.seqno, ISS :\u003d dccp_v{4,6}_init_sequence()\n\n * sending first Response:  dccp_v{4,6}_send_response via dccp_make_response()\t\n                            sets P.seqno :\u003d ISS, sets P.ackno :\u003d ISR\n\n * receiving retransmitted Request: dccp_check_req() overrides ISR :\u003d P.seqno\n\n * answering retransmitted Request: dccp_make_response() sets ISS +\u003d 1,\n                                    otherwise as per first Response\n\n * completing the handshake: succeeds in dccp_check_req() for the first Ack\n                             where P.ackno \u003d\u003d ISS (P.seqno is not tested)\n\n * creating child socket: ISS, ISR are copied from the request_sock\n\nThis solution will succeed whenever the server can receive the Request and the\nsubsequent Ack in succession, without retransmissions. If there is packet loss,\nthe client needs to retransmit until this condition succeeds; it will otherwise\neventually give up. Adding further fields to the request_sock could increase\nthe robustness a bit, in that it would make possible to let a reordered Ack\n(from a retransmitted Response) pass. The argument against such a solution is\nthat if the packet loss is not persistent and an Ack gets through, why not\nwait for the one answering the original response: if the loss is persistent, it\nis probably better to not start the connection in the first place.\n\nLong story short: the present design (by Arnaldo) is simple and will likely work\njust as well as a more complicated solution. As a consequence, {A,S}W{L,H} are\nnot needed until the moment the request_sock is cloned into the accept queue.\n\nAt that stage feature negotiation has completed, so that the values for the local\nand remote Sequence Window feature (7.5.2) are known, i.e. we are now in a better\nposition to compute {A,S}W{L,H}.\n\n\n2. Client sequence number checks during initial handshake\n---------------------------------------------------------\nUntil entering PARTOPEN the client does not need the adjustments, since it \nconstrains the Ack window to the packet it sent.\n\n * sending first Request: dccp_v{4,6}_connect() choose ISS, \n                          dccp_connect() then sets GAR :\u003d ISS (as per 8.5),\n\t\t\t  dccp_transmit_skb() (with the previous bug fix) sets\n\t\t\t         GSS :\u003d ISS, AWL :\u003d ISS, AWH :\u003d GSS\n * n-th retransmitted Request (with previous patch):\n\t                  dccp_retransmit_skb() via timer calls\n\t\t\t  dccp_transmit_skb(), which sets GSS :\u003d ISS+n\n                          and then AWL :\u003d ISS, AWH :\u003d ISS+n\n\t                  \n * receiving any Response: dccp_rcv_request_sent_state_process() \n\t                   -- accepts packet if AWL \u003c\u003d P.ackno \u003c\u003d AWH;\n\t\t\t   -- sets GSR \u003d ISR \u003d P.seqno\n\n * sending the Ack completing the handshake: dccp_send_ack() calls \n                           dccp_transmit_skb(), which sets GSS +\u003d 1\n\t\t\t   and AWL :\u003d ISS, AWH :\u003d GSS\n\t\t\t   \n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\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": "c49b22729f3da7479c4e6c572d53fdd40201d0bd",
      "tree": "2c58a67f089c97a55a132697ecf2ccc438bbed7f",
      "parents": [
        "e70cacb90d76f0632f7bba69c87a62e709e84619"
      ],
      "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 3 (client side)\n\nThis integrates feature-activation in the client, with these details:\n\n 1. When dccp_parse_options() fails, the reset code is already set, request_sent\n    _state_process() currently overrides this with `Packet Error\u0027, which is not\n    intended - so changed to use the reset code set in dccp_parse_options();\n\n 2. There was a FIXME to change the error code when dccp_ackvec_add() fails.\n    I have looked this up and found 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\n 3. When feature negotiation fails, the socket should be marked as not usable,\n    so that the application is notified that an error occurs. This is achieved\n    by a new label, which uses an error code of `Aborted\u0027 and which sets the\n    socket state to CLOSED, as well as sk_err.\n\n 4. Avoids parsing the Ack twice in Respond state by not doing option processing\n    again in dccp_rcv_respond_partopen_state_process (as option processing has\n    already been done on the request_sock in dccp_check_req).    \n\nSince this addresses congestion-control initialisation, a corresponding\nFIXME has been removed.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nAcked-by: Ian McDonald \u003cian.mcdonald@jandi.co.nz\u003e\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": "ba1a6c7bc0ff33e405f5156dc8f4145437255f1f",
      "tree": "5ea885a744253efca4b31f0c16704d375391da23",
      "parents": [
        "fca1287a3a9246d4facc27a0a455fada18fd1164"
      ],
      "author": {
        "name": "Wei Yongjun",
        "email": "yjwei@cn.fujitsu.com",
        "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:24 2008 +0200"
      },
      "message": "dccp: Always generate a Reset in response to option errors\n\nRFC4340 states that if a packet is received with an option error (such as a\nMandatory Option as the last byte of the option list), the endpoint should\nrepond with a Reset.\n\nIn the LISTEN and RESPOND states, the endpoint correctly reponds with Reset,\nwhile in the REQUEST/OPEN states, packets with option errors are just ignored.\n\nThe packet sequence is as follows:\n\nCase 1:\n\n  Endpoint A                           Endpoint B\n  (CLOSED)                             (CLOSED)\n\n               \u003c----------------       REQUEST\n\n  RESPONSE     -----------------\u003e      (*1)\n  (with invalid option)\n               \u003c----------------       RESET\n                                       (with Reset Code 5, \"Option Error\")\n\n  (*1) currently just ignored, no Reset is sent\n\nCase 2:\n\n  Endpoint A                           Endpoint B\n  (OPEN)                               (OPEN)\n\n  DATA-ACK     -----------------\u003e      (*2)\n  (with invalid option)\n               \u003c----------------       RESET\n                                       (with Reset Code 5, \"Option Error\")\n\n  (*2) currently just ignored, no Reset is sent\n\nThis patch fixes the problem, by generating a Reset instead of silently\nignoring option errors.\n\nSigned-off-by: Wei Yongjun \u003cyjwei@cn.fujitsu.com\u003e\nAcked-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nAcked-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "d28934ad8a4e87203a95de9c376611de8bc2f013",
      "tree": "4ee2a055492d3c462101edd9945e199450497f30",
      "parents": [
        "4d8863a29c4755a0461cd31b6865026187d6c43a"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Aug 18 21:14:20 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Aug 18 21:14:20 2008 -0700"
      },
      "message": "dccp: Fix panic caused by too early termination of retransmission mechanism\n\nThanks is due to Wei Yongjun for the detailed analysis and description of this\nbug at http://marc.info/?l\u003ddccp\u0026m\u003d121739364909199\u0026w\u003d2\n\nThe problem is that invalid packets received by a client in state REQUEST cause\nthe retransmission timer for the DCCP-Request to be reset. This includes freeing\nthe Request-skb ( in dccp_rcv_request_sent_state_process() ). As a consequence,\n * the arrival of further packets cause a double-free, triggering a panic(),\n * the connection then may hang, since further retransmissions are blocked.\n\nThis patch changes the order of statements so that the retransmission timer is\nreset, and the pending Request freed, only if a valid Response has arrived (or\nthe number of sysctl-retries has been exhausted).\n\nFurther changes:\n----------------\nTo be on the safe side, replaced __kfree_skb with kfree_skb so that if due to\nunexpected circumstances the sk_send_head is NULL the WARN_ON is used instead.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n\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": "8b819412481494fb6861c08d360b75fabcbbfbbf",
      "tree": "ddd9f976f051fb5cff794992b38613bbbfcb9cc1",
      "parents": [
        "7913350663e2756ecb91dd3a7c773806b943426e"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Dec 13 12:29:24 2007 -0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:57:50 2008 -0800"
      },
      "message": "[DCCP]: Allow to parse options on Request Sockets\n\nThe option parsing code currently only parses on full sk\u0027s. This causes a problem for\noptions sent during the initial handshake (in particular timestamps and feature-negotiation\noptions). Therefore, this patch extends the option parsing code with an additional argument\nfor request_socks: if it is non-NULL, options are parsed on the request socket, otherwise\nthe normal path (parsing on the sk) is used.\n\nSubsequent patches, which implement feature negotiation during connection setup, make use\nof this facility.\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": "69567d0b63b7f4ffeb53fe746c87bd6efe1c284b",
      "tree": "d2ce8ff37ecc6481684cddd386bc302f47a0a468",
      "parents": [
        "96eba69dbac767f4e287df39e6fa489d37f1aa7b"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Dec 13 11:28:43 2007 -0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:57:45 2008 -0800"
      },
      "message": "[DCCP]: Perform SHUT_RD and SHUT_WR on receiving close\n\nThis patch performs two changes:\n\n1) Close the write-end in addition to the read-end when a fin-like segment\n  (Close or CloseReq) is received by DCCP. This accounts for the fact that DCCP,\n  in contrast to TCP, does not have a half-close. RFC 4340 says in this respect\n  that when a fin-like segment has been sent there is no guarantee at all that\n  any   further data will be processed.\n  Thus this patch performs SHUT_WR in addition to the SHUT_RD when a fin-like\n  segment is encountered.\n\n2) Minor change: I noted that code appears twice in different places and think it\n   makes sense to put this into a self-contained function (dccp_enqueue()).\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": "3159afe0d2c1994392c269cf9dee2797830d016b",
      "tree": "cae67feeee5c22c74a35a9d704e27679ac507ee2",
      "parents": [
        "0c869620762fea4b3acf6502d9e80840b27ec642"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Nov 28 12:06:04 2007 -0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:55:14 2008 -0800"
      },
      "message": "[DCCP]: Remove duplicate test for CloseReq\n\nThis removes a redundant test for unexpected packet types. In dccp_rcv_state_process\nit is tested twice whether a DCCP-server has received a CloseReq (Step 7):\n\n * first in the combined if-statement,\n * then in the call to dccp_rcv_closereq().\n\nThe latter is necesssary since dccp_rcv_closereq() is also called from\n__dccp_rcv_established().\n\nThis patch removes the duplicate test.\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": "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": "8d8ad9d7c4bfe79bc91b7fc419ecfb9dcdfe6a51",
      "tree": "4b655c4b898e634f39fd170eeb8d06f45b240660",
      "parents": [
        "ce865a61c810c971b47f57c729ec6e9b2d522d94"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Mon Nov 26 20:10:50 2007 +0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:55:03 2008 -0800"
      },
      "message": "[NET]: Name magic constants in sock_wake_async()\n\nThe sock_wake_async() performs a bit different actions\ndepending on \"how\" argument. Unfortunately this argument\nony has numerical magic values.\n\nI propose to give names to their constants to help people\nreading this function callers understand what\u0027s going on\nwithout looking into this function all the time.\n\nI suppose this is 2.6.25 material, but if it\u0027s not (or the\nnaming seems poor/bad/awful), I can rework it against the\ncurrent net-2.6 tree.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\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": "d8ef2c29a0dcfccb2d90cac990143d1a4668708a",
      "tree": "f84aa65931c586117958718b23aa209136719372",
      "parents": [
        "1238d0873b29f7a2de75d576b4cc706c1c75ffbf"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Oct 24 10:27:48 2007 -0200"
      },
      "committer": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@ghostprotocols.net",
        "time": "Wed Oct 24 10:27:48 2007 -0200"
      },
      "message": "[DCCP]: Convert Reset code into socket error number\n\nThis adds support for converting the 11 currently defined Reset codes into system\nerror numbers, which are stored in sk_err for further interpretation.\n\nThis makes the externally visible API behaviour similar to TCP, since a client\nconnecting to a non-existing port will experience ECONNREFUSED.\n\n* Code 0, Unspecified, is interpreted as non-error (0);\n* Code 1, Closed (normal termination), also maps into 0;\n* Code 2, Aborted, maps into \"Connection reset by peer\" (ECONNRESET);\n* Code 3, No Connection and\n  Code 7, Connection Refused, map into \"Connection refused\" (ECONNREFUSED);\n* Code 4, Packet Error, maps into \"No message of desired type\" (ENOMSG);\n* Code 5, Option Error, maps into \"Illegal byte sequence\" (EILSEQ);\n* Code 6, Mandatory Error, maps into \"Operation not supported on transport endpoint\" (EOPNOTSUPP);\n* Code 8, Bad Service Code, maps into \"Invalid request code\" (EBADRQC);\n* Code 9, Too Busy, maps into \"Too many users\" (EUSERS);\n* Code 10, Bad Init Cookie, maps into \"Invalid request descriptor\" (EBADR);\n* Code 11, Aggression Penalty, maps into \"Quota exceeded\" (EDQUOT)\n  which makes sense in terms of using more than the `fair share\u0027 of bandwidth.\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: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\n"
    },
    {
      "commit": "bd5435e76a226b7151ae5aaee2cd366ab003dd2e",
      "tree": "54d0d4f05d9fe182abbac3f0d60628835df48a93",
      "parents": [
        "dc8a82ad285dcd2831feb2fd8f7b41ce1f82e243"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Oct 17 19:33:06 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Oct 17 19:33:06 2007 -0700"
      },
      "message": "[DCCP]: fix link error with !CONFIG_SYSCTL\n\nDo not define the sysctl_dccp_sync_ratelimit sysctl variable in the\nCONFIG_SYSCTL dependent sysctl.c module - move it to input.c instead.\n\nThis fixes the following build bug:\n\n net/built-in.o: In function `dccp_check_seqno\u0027:\n input.c:(.text+0xbd859): undefined reference to `sysctl_dccp_sync_ratelimit\u0027\n distcc[29953] ERROR: compile (null) on localhost failed\n make: *** [vmlinux] Error 1\n\nFound via \u0027make randconfig\u0027 build testing.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Ian McDonald \u003cian.mcdonald@jandi.co.nz\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.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": "08831700cc65f85a497d6b32b1c83ca84d71de4a",
      "tree": "419a08b43e529f211dbdc7224283ed560334b4b3",
      "parents": [
        "53465eb4ab16660eab0a7be168a087a97172e650"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Sep 26 10:30:05 2007 -0300"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:52:40 2007 -0700"
      },
      "message": "[DCCP]: Send Reset upon Sync in state REQUEST\n\nThis fixes the code to correspond to RFC 4340, 7.5.4, which states the\nexception that a Sync received in state REQUEST generates a Reset (not\na SyncAck).\n\nTo achieve this, only a small change is required. Since\ndccp_rcv_request_sent_state_process() already uses the correct Reset Code\nnumber 4 (\"Packet Error\"), we only need to shift the if-statement a few\nlines further down.\n\n(To test this case: replace DCCP_PKT_RESPONSE with DCCP_PKT_SYNC\n                    in dccp_make_response.)\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": "e155d7692290f7bc539ccb8ebc3450ec964e53fd",
      "tree": "ceca4fe0902c5efc8fb0936ec40d9482907d5d3a",
      "parents": [
        "cbe1f5f88af454303a9c1a0624209269430d49fe"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Sep 25 22:41:56 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:52:37 2007 -0700"
      },
      "message": "[DCCP]: Fix Reset/Sync-Flood Bug\n\nThis updates sequence number checking with regard to RFC 4340, 7.5.4.\nMissing in the code was an exception for sequence-invalid Reset packets,\nwhich get a Sync acknowledging GSR, instead of (as usual) P.seqno.\n\nThis can lead to an oscillating ping-pong flood of Reset packets.\n\nIn fact, it has been observed on the wire as follows:\n\n 1. client establishes connection to server;\n 2. before server can write to client, client crashes without notifying\n    the server (NB: now no longer possible due to ABORT function);\n 3. server sends DCCP-Data packet (has no ackno);\n 4. client generates Reset \"No Connection\", seqno\u003d0, increments seqno;\n 5. server replies with Sync, using ackno \u003d P.seqno;\n 6. client generates Reset \"No Connection\" with seqno \u003d ackno + 1;\n 7. goto (5).\n\nThe difference is that now in (5) the server uses GSR.  This causes the\nReset sent by the client in (6) to become sequence-valid, so that in (7)\nthe vicious circle is broken; the Reset is then enqueued and causes the\nsocket to enter TIMEWAIT state.\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\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "cbe1f5f88af454303a9c1a0624209269430d49fe",
      "tree": "6edfe1ee1b660e06fb7be3788b5587f55f41972c",
      "parents": [
        "3393da8241ae3a53e183ba15f8bd822995ec97cd"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Sep 25 22:41:19 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:52:36 2007 -0700"
      },
      "message": "[DCCP]: Shorten variable names in dccp_check_seqno\n\nThis patch is in part required by the next patch; it\n\n * replaces 6 instances of `DCCP_SKB_CB(skb)-\u003edccpd_seq\u0027 with `seqno\u0027;\n * replaces 7 instances of `DCCP_SKB_CB(skb)-\u003edccpd_ack_seq\u0027 with `ackno\u0027;\n * replaces 1 use of dccp_inc_seqno() by unfolding `ADD48\u0027 macro in place.\n\nNo changes in algorithm, all changes are text replacement/substitution.\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\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3393da8241ae3a53e183ba15f8bd822995ec97cd",
      "tree": "28e6d2823d901976844982319e4c53b76a55967c",
      "parents": [
        "4c70f383e0c0273c4092c4efdb414be0966978b7"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Sep 25 22:40:44 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:52:35 2007 -0700"
      },
      "message": "[DCCP]: Simplify interface of dccp_sample_rtt\n\nThe third parameter of dccp_sample_rtt now becomes useless and is removed.\n\nAlso combined the subtraction of the timestamp echo and the elapsed time.\nThis is safe, since (a) presence of timestamp echo is tested first and (b)\nelapsed time is either present and non-zero or it is not set and equals 0\ndue to the memset in dccp_parse_options.\n\nTo avoid measuring option-processing time, the timestamp for measuring the\ninitial Request/Response RTT sample is taken directly when the function is\ncalled (the Linux implementation always adds a timestamp on the Request,\nso there is no loss in doing this).\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\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9823b7b5542858afe5b6a1e2df83b3847c28f3d6",
      "tree": "14be62612143fbcec66cd1b28a1d76564c578453",
      "parents": [
        "a272378d1128d1c60a463a315646c86d174ff74c"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@ghostprotocols.net",
        "time": "Sun Aug 19 17:16:35 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:48:13 2007 -0700"
      },
      "message": "[DCCP]: Convert dccp_sample_rtt to ktime_t\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "89560b53b92a07c529e13a462aa7fd87a844f1f5",
      "tree": "89409bee68da1ee44b7945315efecd779d7fe60a",
      "parents": [
        "7dfee1a9c07f80a82aa5fbad340146f2b5c794b4"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Mar 20 15:27:17 2007 -0300"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Apr 25 22:27:02 2007 -0700"
      },
      "message": "[DCCP]: Sample RTT from SYN exchange\n\nFunction:\n"
    },
    {
      "commit": "4712a792ee661921374c163eb6a4d06e33fd305f",
      "tree": "0c5ecf7973a195bff36101904417bb7b90fd18aa",
      "parents": [
        "0c150efb280986db7958cf2a559b91d826241e59"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Mar 20 15:23:18 2007 -0300"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Apr 25 22:27:00 2007 -0700"
      },
      "message": "[DCCP]: Provide function for RTT sampling\n\nA recurring problem, in particular in the CCID code, is that RTT samples\nfrom packets with timestamp echo and elapsed time options need to be taken.\n\nThis service is provided via a new function dccp_sample_rtt in this patch.\nFurthermore, to protect against `insane\u0027 RTT samples, the sampled value\nis bounded between 100 microseconds and 4 seconds - for which u32 is sufficient.\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": "8d13bf9a0bd4984756e234ce54299b92acefab99",
      "tree": "3a5fa39fec52b934d0d86afe93423cb9bb5ded20",
      "parents": [
        "b16be51b5e5d75cec71b18ebc75f15a4734c62ad"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Mar 20 13:08:19 2007 -0300"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Apr 25 22:26:46 2007 -0700"
      },
      "message": "[DCCP]: Remove ambiguity in the way before48 is used\n\nThis removes two ambiguities in employing the new definition of before48,\nfollowing the analysis on http://www.mail-archive.com/dccp@vger.kernel.org/msg01295.html\n\n (1) Updating GSR when P.seqno \u003e\u003d S.SWL\n     With the old definition we did not update when P.seqno and S.SWL are 2^47 apart. To\n     ensure the same behaviour as with the old definition, this is replaced with the\n     equivalent condition dccp_delta_seqno(S.SWL, P.seqno) \u003e\u003d 0\n\n (2) Sending SYNC when P.seqno \u003e\u003d S.OSR\n     Here it is debatable whether the new definition causes an ambiguity: the case is\n     similar to (1); and to have consistency with the case (1), we use the equivalent\n     condition dccp_delta_seqno(S.OSR, P.seqno) \u003e\u003d 0\n\nDetailed Justification\n"
    },
    {
      "commit": "151a99317ee9efcfd3e642da62e1edf4f47fcb3e",
      "tree": "8abf1427c3e25fc7ec6d48c863a4a2cf33ddc004",
      "parents": [
        "286930797d74b2c9a5beae84836044f6a836235f"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Mar 07 12:53:48 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Mar 07 16:08:07 2007 -0800"
      },
      "message": "[DCCP]: Revert patch which disables bidirectional mode\n\nThis reverts an earlier patch which disabled bidirectional mode, meaning that\na listening (passive) socket was not allowed to write to the other (active)\nend of the connection.\n\nThis mode had been disabled when there were problems with CCID3, but it\nimposes a constraint on socket programming and thus hinders deployment.\n\nA change is included to ignore RX feedback received by the TX CCID3 module.\n\nMany thanks to Andre Noll for pointing out this issue.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4d46861be6196d0f1614724590968d8da26af82a",
      "tree": "d9c579064159f52edd5dbebed85214ae6a3468df",
      "parents": [
        "1e51f9513e6b021abcaefd7c76f9b5d682f83232"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Mar 06 14:24:18 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Mar 06 14:24:18 2007 -0800"
      },
      "message": "[DCCP]: Correctly split CCID half connections\n\nThis fixes a bug caused by a previous patch, which causes DCCP servers in\nLISTEN state to not receive packets.\n\nThis patch changes the logic so that\n * servers in either LISTEN or OPEN state get the RX half connection packets\n * clients in OPEN state get the TX half connection packets\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": "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": "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": "bf58a381e8106fe73247c753e3da58fcb5eabd2e",
      "tree": "4f0539a3d96930bddc5291b136f4fa08c1af8e77",
      "parents": [
        "d63d8364cfe17fc9bb738f554f452595f76f21d2"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Dec 10 00:04:43 2006 -0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Mon Dec 11 14:34:47 2006 -0800"
      },
      "message": "[DCCP]: Only deliver to the CCID rx side in charge\n\nThis is an optimisation to reduce CPU load. The received feedback is now\nonly directed to the active CCID component, without requiring processing\nalso by the inactive one.\n\nAs a consequence, a similar test in ccid3.c is now redundant and is\nalso removed.\n\nJustification:\n\n Currently DCCP works as a unidirectional service, i.e. a listening server\n is not at the same time a connecting client.\n As far as I can see, several modifications are necessary until that\n becomes possible.\n At the present time, received feedback is both fed to the rx/tx CCID\n modules. In unidirectional service, only one of these is active at any\n one time.\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: 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": "d83ca5accb256de1b44835cd222bfdc3207bd7dc",
      "tree": "c7be8b1f61d4403fe15bd279ecf9d52619134592",
      "parents": [
        "cf557926f6955b4c3fa55e81fdb3675e752e8eed"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Fri Nov 10 16:29:14 2006 -0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Dec 02 21:22:04 2006 -0800"
      },
      "message": "[DCCP]: Update code comments for Step 2/3\n\nSorts out the comments for processing steps 2,3 in section 8.5 of RFC 4340.\nAll comments have been updated against this document, and the reference to step\n2 has been made consistent throughout the files.\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": "0e64e94e477f8ed04e9295b11a5898d443c28a47",
      "tree": "0a02a3017d41a3a21038ff081b93b5b6359e1692",
      "parents": [
        "977a415f2b70b5693aaa23b1a16ad57ea20a1dce"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Oct 24 16:17:51 2006 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 24 16:17:51 2006 -0700"
      },
      "message": "[DCCP]: Update documentation references.\n\nUpdates the references to spec documents throughout the code, taking into\naccount that\n\n* the DCCP, CCID 2, and CCID 3 drafts all became RFCs in March this year\n\n* RFC 1063 was obsoleted by RFC 1191\n\n* draft-ietf-tcpimpl-pmtud-0x.txt was published as an Informational\n  RFC, RFC 2923 on 2000-09-22.\n\nAll references verified.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6ab3d5624e172c553004ecc862bfeac16d9d68b7",
      "tree": "6d98881fe91fd9583c109208d5c27131b93fa248",
      "parents": [
        "e02169b682bc448ccdc819dc8639ed34a23cedd8"
      ],
      "author": {
        "name": "Jörn Engel",
        "email": "joern@wohnheim.fh-wedel.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "message": "Remove obsolete #include \u003clinux/config.h\u003e\n\nSigned-off-by: Jörn Engel \u003cjoern@wohnheim.fh-wedel.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "a4bf3902427a128455b8de299ff0918072b2e974",
      "tree": "5269cd4d84702a0a728b390e08242be01252d20d",
      "parents": [
        "e6f507196c2b50243beb09b1bfa4639f999d4d1e"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Mon Mar 20 22:50:58 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Mar 20 22:50:58 2006 -0800"
      },
      "message": "[DCCP] minisock: Rename struct dccp_options to struct dccp_minisock\n\nThis will later be included in struct dccp_request_sock so that we can\nhave per connection feature negotiation state while in the 3way\nhandshake, when we clone the DCCP_ROLE_LISTEN socket (in\ndccp_create_openreq_child) we\u0027ll just copy this state from\ndreq_minisock to dccps_minisock.\n\nAlso the feature negotiation and option parsing code will mostly touch\ndccps_minisock, which will simplify some stuff.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c25a18ba347f091d1ce620ba33e6772b60a528e1",
      "tree": "788c596356e150a26e0a67243ffc68213abdd493",
      "parents": [
        "5e0817f84c33285c2ac7d3848e8896d025b5deff"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Mon Mar 20 21:58:56 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Mar 20 21:58:56 2006 -0800"
      },
      "message": "[DCCP]: Uninline some functions\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "017487d7d1e905a5bb529f6a2bc8cf8ea14e2307",
      "tree": "6a68904ea48ccae0c4c17f7dc248831fd46bd3e6",
      "parents": [
        "e55d912f5b75723159348a7fc7692f869a86636a"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Mon Mar 20 19:25:24 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Mar 20 19:25:24 2006 -0800"
      },
      "message": "[DCCP]: Generalize dccp_v4_send_reset\n\nRenaming it to dccp_send_reset and moving it from the ipv4 specific\ncode to the core dccp code.\n\nThis fixes some bugs in IPV6 where timers would send v4 resets, etc.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "91f0ebf7b6d5cb2b6e818d48587566144821babe",
      "tree": "505c66f36bd72014d7eacb7a04ea011bae2e9a3a",
      "parents": [
        "f38c39d6ce8226519455a6dfe91c2ad84f363f6f"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Mon Mar 20 19:21:44 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Mar 20 19:21:44 2006 -0800"
      },
      "message": "[DCCP] CCID: Improve CCID infrastructure\n\n1. No need for -\u003eccid_init nor -\u003eccid_exit, this is what module_{init,exit}\n   does and anynways neither ccid2 nor ccid3 were using it.\n\n2. Rename struct ccid to struct ccid_operations and introduce struct ccid\n   with a pointer to ccid_operations and rigth after it the rx or tx\n   private state.\n\n3. Remove the pointer to the state of the half connections from struct\n   dccp_sock, now its derived thru ccid_priv() from the ccid pointer.\n\nNow we also can implement the setsockopt for changing the CCID easily as\nno ccid init routines can affect struct dccp_sock in any way that prevents\nother CCIDs from working if a CCID switch operation is asked by apps.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "afe00251dd9b53d51de91ff0099961f42bbf3754",
      "tree": "a56aa987140662cf3e6e65be402b8591298c5ced",
      "parents": [
        "2a91aa3967398fb94eccc8da67c82bce9f67afdf"
      ],
      "author": {
        "name": "Andrea Bittau",
        "email": "a.bittau@cs.ucl.ac.uk",
        "time": "Mon Mar 20 17:43:56 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Mar 20 17:43:56 2006 -0800"
      },
      "message": "[DCCP]: Initial feature negotiation implementation\n\nStill needs more work, but boots and doesn\u0027t crashes, even\ndoes some negotiation!\n\n18:38:52.174934  127.0.0.1.43458 \u003e 127.0.0.1.5001: request \u003cchange_l ack_ratio 2, change_r ccid 2, change_l ccid 2\u003e\n18:38:52.218526  127.0.0.1.5001 \u003e 127.0.0.1.43458: response \u003cnop, nop, change_l ack_ratio 2, confirm_r ccid 2 2, confirm_l ccid 2 2, confirm_r ack_ratio 2\u003e\n18:38:52.185398  127.0.0.1.43458 \u003e 127.0.0.1.5001: \u003cnop, confirm_r ack_ratio 2, ack_vector0 0x00, elapsed_time 212\u003e\n\n:-)\n\nSigned-off-by: Andrea Bittau \u003ca.bittau@cs.ucl.ac.uk\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e84a9f5e9cd2b229dda24002334bc3cd36c1109d",
      "tree": "4b4f51efb168618f507ce89645e4cb7d443e3742",
      "parents": [
        "9e377202d2c968dde8efd6121d94c7f0a77787aa"
      ],
      "author": {
        "name": "Andrea Bittau",
        "email": "a.bittau@cs.ucl.ac.uk",
        "time": "Tue Jan 03 14:26:15 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jan 03 14:26:15 2006 -0800"
      },
      "message": "[DCCP]: Notify CCID only after ACK vectors have been processed.\n\nThe CCID should be notified of packet reception only when a packet is\nvalid.  Therefore, the ACK vector needs to be processed before\nnotifying the CCID.  Also, the CCID might need information provided by\nthe ACK vector.\n\nSigned-off-by: Andrea Bittau \u003ca.bittau@cs.ucl.ac.uk\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9e377202d2c968dde8efd6121d94c7f0a77787aa",
      "tree": "e52e9cbd49a99bcbac5bb4831b12bd5b1cb23f18",
      "parents": [
        "709dd3aaf5304993083c2297c73f5531c36fba5a"
      ],
      "author": {
        "name": "Andrea Bittau",
        "email": "a.bittau@cs.ucl.ac.uk",
        "time": "Tue Jan 03 14:25:49 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jan 03 14:25:49 2006 -0800"
      },
      "message": "[DCCP]: Send an ACK vector when ACKing a response packet\n\nIf ACK vectors are used, each packet with an ACK should contain an ACK\nvector.  The only exception currently is response packets.  It\nprobably is not a good idea to store ACK vector state before the\nconnection is completed (to help protect from syn floods).\n\nSigned-off-by: Andrea Bittau \u003ca.bittau@cs.ucl.ac.uk\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "709dd3aaf5304993083c2297c73f5531c36fba5a",
      "tree": "8e6929b88040fb9acb92c3bfe1c45f210ad8e659",
      "parents": [
        "5062430c5cc526655e3d10c670fc9c263656f66c"
      ],
      "author": {
        "name": "Andrea Bittau",
        "email": "a.bittau@cs.ucl.ac.uk",
        "time": "Tue Jan 03 14:25:17 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jan 03 14:25:17 2006 -0800"
      },
      "message": "[DCCP]: Do not process a packet twice when it\u0027s not in state DCCP_OPEN.\n\nWhen packets are received, the connection is either in DCCP_OPEN\n[fast-path] or it isn\u0027t.  If it\u0027s not [e.g. DCCP_PARTOPEN] upper\nlayers will perform sanity checks and parse options.  If it is in\nDCCP_OPEN, dccp_rcv_established() will do it.  It is important not to\nre-parse options in dccp_rcv_established() when it is not called from\nthe fast-path.  Else, fore example, the ack vector will be added twice\nand the CCID will see the packet twice.\n\nThe solution is to always enfore sanity checks from the upper layers.\nWhen packets arrive in the fast-path, sanity checks will be performed\nbefore calling dccp_rcv_established().\n\nNote(acme): I rewrote the patch to achieve the same result but keeping\ndccp_rcv_established with the previous semantics and having it split\ninto __dccp_rcv_established, that doesn\u0027t does do any sanity check,\ncode in state !\u003d DCCP_OPEN use this lighter version as they already do\nthe sanity checks.\n\nSigned-off-by: Andrea Bittau \u003ca.bittau@cs.ucl.ac.uk\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d83d8461f902c672bc1bd8fbc6a94e19f092da97",
      "tree": "0534c553ab92baa2eb9dbb5bba64f2c4540b1e89",
      "parents": [
        "22712813620fa8e682dbfb253a60ca0131da1e07"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Tue Dec 13 23:26:10 2005 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Tue Jan 03 13:10:58 2006 -0800"
      },
      "message": "[IP_SOCKGLUE]: Remove most of the tcp specific calls\n\nAs DCCP needs to be called in the same spots.\n\nNow we have a member in inet_sock (is_icsk), set at sock creation time from\nstruct inet_protosw-\u003eflags (if INET_PROTOSW_ICSK is set, like for TCP and\nDCCP) to see if a struct sock instance is a inet_connection_sock for places\nlike the ones in ip_sockglue.c (v4 and v6) where we previously were looking if\nsk_type was SOCK_STREAM, that is insufficient because we now use the same code\nfor DCCP, that has sk_type SOCK_DCCP.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f21e68caa0ddffddf98a1e729e734a470957b6ec",
      "tree": "52b372d10cbacd066867ba1c918f48b9fdaad950",
      "parents": [
        "34ca6860810342441f801226b19ae6c9e0ecb34f"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Tue Dec 13 23:24:16 2005 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Tue Jan 03 13:10:50 2006 -0800"
      },
      "message": "[DCCP]: Prepare the AF agnostic core for the introduction of DCCPv6\n\nBasically exports a similar set of functions as the one exported by\nthe non-AF specific TCP code.\n\nIn the process moved some non-AF specific code from dccp_v4_connect to\ndccp_connect_init and moved the checksum verification from\ndccp_invalid_packet to dccp_v4_rcv, so as to use it in dccp_v6_rcv\ntoo.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "57cca05af1e20fdc65b55be52c042c234f86c866",
      "tree": "43b18dca01340861e7ad392c0c2ce398a1c878fd",
      "parents": [
        "af05dc9394feb193d221bc9d4c6db768facb4b40"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Tue Dec 13 23:16:16 2005 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Tue Jan 03 13:10:40 2006 -0800"
      },
      "message": "[DCCP]: Introduce dccp_ipv4_af_ops\n\nAnd make the core DCCP code AF agnostic, just like TCP, now its time\nto work on net/dccp/ipv6.c, we are close to the end!\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2a9bc9bb4d3a4570a8a48aadf071b91e657adb89",
      "tree": "b20dc78e5e9dc6deed61c47bf12a72ec8f9a9768",
      "parents": [
        "777b25a2fea7129222eb11fba55c0a67982383ff"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@ghostprotocols.net",
        "time": "Mon Oct 10 21:25:00 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Oct 10 21:25:00 2005 -0700"
      },
      "message": "[DCCP]: Transition from PARTOPEN to OPEN when receiving DATA packets\n\nNoticed by Andrea Bittau, that provided a patch that was modified to\nnot transition from RESPOND to OPEN when receiving DATA packets.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ae31c3399d17b1f7bc1742724f70476b5417744f",
      "tree": "c34099afb228936672e6e589f0af7d81f1f62443",
      "parents": [
        "21f130a2370ba837cdfc5204ebe52e7c664fec3d"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Sun Sep 18 00:17:51 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Sep 18 00:17:51 2005 -0700"
      },
      "message": "[DCCP]: Move the ack vector code to net/dccp/ackvec.[ch]\n\nIsolating it, that will be used when we introduce a CCID2 (TCP-Like)\nimplementation.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0c10c5d96865ce611d6a780888eff0ef4fab358b",
      "tree": "ab1303166355b32730185445557623bec09a1dcb",
      "parents": [
        "37f7f421cce13435fdc0d870caf51141e5ebf079"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Fri Sep 16 16:58:33 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Sep 16 16:58:33 2005 -0700"
      },
      "message": "[DCCP]: More precisely set reset_code when sending RESET packets\n\nMoving the setting of DCCP_SKB_CB(skb)-\u003edccpd_reset_code to the places\nwhere events happen that trigger sending a RESET packet.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2b80230a7f8cd346c1e2ebafdd02be432bf10459",
      "tree": "a51d45efbe4b77c395ffe4fc51894e173d6d7345",
      "parents": [
        "811265b8e8bf84e3b91507bf6a3a8eea20e7a4b7"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Tue Sep 13 19:05:08 2005 -0300"
      },
      "committer": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Tue Sep 13 19:05:08 2005 -0300"
      },
      "message": "[DCCP]: Handle SYNC packets in dccp_rcv_state_process\n\nEliciting a SYNCACK in response, we were handling SYNC packets\nonly in the DCCP_OPEN state, in dccp_rcv_established.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\n"
    },
    {
      "commit": "811265b8e8bf84e3b91507bf6a3a8eea20e7a4b7",
      "tree": "7b27a9c2c2a1bac2a4b3c9176f8741e5d71ced41",
      "parents": [
        "24b8e05dc1b03c1f80828e642838511c16e17250"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Tue Sep 13 19:03:15 2005 -0300"
      },
      "committer": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Tue Sep 13 19:03:15 2005 -0300"
      },
      "message": "[DCCP]: Check if already in the CLOSING state in dccp_rcv_closereq\n\nIt is possible to receive more than one CLOSEREQ packet if the\nCLOSE packet sent in response is somehow lost, change the state\nto DCCP_CLOSING only on the first CLOSEREQ packet received.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\n"
    },
    {
      "commit": "b0e567806d16586629468c824dfb2e71155df7da",
      "tree": "70f5905fae3270985fed1050335c56598fd32646",
      "parents": [
        "954ee31f366fabe53fb450482789258fe552f40b"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Fri Sep 09 02:38:35 2005 -0300"
      },
      "committer": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Fri Sep 09 02:38:35 2005 -0300"
      },
      "message": "[DCCP] Introduce dccp_timestamp\n\nTo start the timestamps with 0.0ms, easing the integer maths in the CCIDs, this\nprobably will be reworked to use the to be introduced struct timeval_offset\ninfrastructure out of skb_get_timestamp, etc.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\n"
    },
    {
      "commit": "331968bd0c1b2437f3ad773cbf55f2e0737bafc0",
      "tree": "ec9c5aeaa5217c8ce009a7e5e07a60c3a390e021",
      "parents": [
        "8efa544f9c84919c047dc2f96e308c902e8fb1a4"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Tue Aug 23 21:54:23 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Mon Aug 29 16:05:45 2005 -0700"
      },
      "message": "[DCCP]: Initial dccp_poll implementation\n\nTested with a patched netcat, no horror stories so far 8)\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7ad07e7cf343181002c10c39d3f57a88e4903d4f",
      "tree": "c22067f3f443faebdcd3403fa8ce7c5c89662c60",
      "parents": [
        "58e45131dc269eff0983c6d44494f9e687686900"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Tue Aug 23 21:50:06 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Mon Aug 29 16:04:31 2005 -0700"
      },
      "message": "[DCCP]: Implement the CLOSING timer\n\nSo that we retransmit CLOSE/CLOSEREQ packets till they elicit an\nanswer or we hit a timeout.\n\nMost of the machinery uses TCP approaches, this code has to be\npolished \u0026 audited, but this is better than we had before.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "58e45131dc269eff0983c6d44494f9e687686900",
      "tree": "2ad04be66ec5ac7471c89180ff85f301e4f19a87",
      "parents": [
        "05465343bf74e00c8c2c5a310740157de3149f27"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Aug 21 23:46:01 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Mon Aug 29 16:04:27 2005 -0700"
      },
      "message": "[DCCP]: Fix printf format warnings on 64-bit.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "03ace394ac9bcad38043a381ae5f4860b9c9fa1c",
      "tree": "bbe5f7fc56074224ded47113974dbc3db550b303",
      "parents": [
        "a3054d48b9b9d6290eccc9fc09c286ef450d9b1d"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Sun Aug 21 05:36:45 2005 -0300"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Mon Aug 29 16:03:42 2005 -0700"
      },
      "message": "[DCCP]: Fix the ACK and SEQ window variables settings\n\nThis is from a first audit, more eyeballs are more than welcome.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a3054d48b9b9d6290eccc9fc09c286ef450d9b1d",
      "tree": "08a6b91f57e6c7c66a4839ba4fb3c0bf570cebf6",
      "parents": [
        "2807d4ffb0dccb8f932c3e1701b6b6163153d333"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Sun Aug 21 05:35:18 2005 -0300"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Mon Aug 29 16:03:33 2005 -0700"
      },
      "message": "[DCCP]: Give more info on Step 6 failure debug printk\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c59eab4637dbc3f832503be4ccb9213b0f323d92",
      "tree": "95bf99ecc5150dc9a97c63f20b9e5d90a61edc13",
      "parents": [
        "5480855bfbc125f34d9b752689bb9a64da7e1fc6"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Thu Aug 18 21:12:02 2005 -0300"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Mon Aug 29 16:02:26 2005 -0700"
      },
      "message": "[DCCP]: Use LIMIT_NETDEBUG in some debugging printks\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e92ae93a8aa66aea12935420cb22d4df1c18d023",
      "tree": "61ffc292a8e437f7d44bbfe00c4e052f7488dd25",
      "parents": [
        "ba602a816132dcc66e875dddf2c62512a9f6f8cb"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Wed Aug 17 03:10:59 2005 -0300"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Mon Aug 29 16:01:50 2005 -0700"
      },
      "message": "[DCCP]: Send SYNCACK packets in response to SYNC packets\n\nAlso fix step 6 when receiving SYNC or SYNCACK packets, i.e. we were not using\nthe updated swl.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8649b0d4166e6e80ffa298e75abd8f2afdd491a6",
      "tree": "e6024532d165f5dc9987fe38fb84cb2076c86100",
      "parents": [
        "725ba8eee3881e619c8e5a0116f1bdb6480ac2d9"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Sat Aug 13 20:36:01 2005 -0300"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Mon Aug 29 15:59:50 2005 -0700"
      },
      "message": "[DCCP]: Fix RESET handling in dccp_rcv_state_process\n\nTo avoid holding TIMEWAIT state for sockets in the LISTEN state.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7690af3fff7633e40b1b9950eb8489129251d074",
      "tree": "92fa07234a7547c4a7dd74877972b5a291673fcf",
      "parents": [
        "c173437669967301facff151bfeb7bae67354e4c"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@mandriva.com",
        "time": "Sat Aug 13 20:34:54 2005 -0300"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Mon Aug 29 15:59:26 2005 -0700"
      },
      "message": "[DCCP]: Just reflow the source code to fit in 80 columns\n\nAndrew Morton should be happy now 8)\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@mandriva.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "64ce207306debd7157f47282be94770407bec01c",
      "tree": "b4004f01b2b0e935b95bcce9a78e60a9e9e17f65",
      "parents": [
        "64cf1e5d8b5f88d56509260e08fa0d8314277350"
      ],
      "author": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Tue Aug 09 20:50:53 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Mon Aug 29 15:56:08 2005 -0700"
      },
      "message": "[NET]: Make NETDEBUG pure printk wrappers\n\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f6ccf55419c4f0021e7382f000f2fd14a29f3d3c",
      "tree": "c0b6446bf3ebf84437eeb16d357a7845598de206",
      "parents": [
        "1d3de414eb20d937d82c5219fd13ee4cedc499cb"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Aug 09 20:27:14 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Mon Aug 29 15:54:34 2005 -0700"
      },
      "message": "[DCCP]: Fix u64 printf format warnings.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7c657876b63cb1d8a2ec06f8fc6c37bb8412e66c",
      "tree": "3cb2732870c9cf8f976cb6fa57e0223f1c648e2a",
      "parents": [
        "c4365c9235f80128c3c3d5993074173941b1c1f0"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@ghostprotocols.net",
        "time": "Tue Aug 09 20:14:34 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Mon Aug 29 15:49:46 2005 -0700"
      },
      "message": "[DCCP]: Initial implementation\n\nDevelopment to this point was done on a subversion repository at:\n\nhttp://oops.ghostprotocols.net:81/cgi-bin/viewcvs.cgi/dccp-2.6/\n\nThis repository will be kept at this site for the foreseable future,\nso that interested parties can see the history of this code,\nattributions, etc.\n\nIf I ever decide to take this offline I\u0027ll provide the full history at\nsome other suitable place.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    }
  ]
}
