)]}'
{
  "log": [
    {
      "commit": "89770b0a69ee0e0e5e99c722192d535115f73778",
      "tree": "a8c96a91c2417dc81f5ce08aa59ebcfd456e0335",
      "parents": [
        "f337db64af059c9a94278a8b0ab97d87259ff62f"
      ],
      "author": {
        "name": "Daniel Borkmann",
        "email": "dborkman@redhat.com",
        "time": "Wed Jan 22 02:29:40 2014 +0100"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jan 21 23:17:20 2014 -0800"
      },
      "message": "net: introduce reciprocal_scale helper and convert users\n\nAs David Laight suggests, we shouldn\u0027t necessarily call this\nreciprocal_divide() when users didn\u0027t requested a reciprocal_value();\nlets keep the basic idea and call it reciprocal_scale(). More\nbackground information on this topic can be found in [1].\n\nJoint work with Hannes Frederic Sowa.\n\n  [1] http://homepage.cs.uiowa.edu/~jones/bcd/divide.html\n\nSuggested-by: David Laight \u003cdavid.laight@aculab.com\u003e\nCc: Jakub Zawadzki \u003cdarkjames-ws@darkjames.pl\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: linux-kernel@vger.kernel.org\nSigned-off-by: Hannes Frederic Sowa \u003channes@stressinduktion.org\u003e\nSigned-off-by: Daniel Borkmann \u003cdborkman@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1ba3aab3033b464f352659720824d7124c21dbf9",
      "tree": "3308ce1f1b158b507f802561cda5fde8866bf8e7",
      "parents": [
        "13521a57974635384db51d65135cc0267c6ae771"
      ],
      "author": {
        "name": "Jesper Dangaard Brouer",
        "email": "netoptimizer@brouer.com",
        "time": "Thu Oct 31 22:10:55 2013 +0100"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Nov 04 20:01:29 2013 -0500"
      },
      "message": "net: codel: Avoid undefined behavior from signed overflow\n\nAs described in commit 5a581b367 (jiffies: Avoid undefined\nbehavior from signed overflow), according to the C standard\n3.4.3p3, overflow of a signed integer results in undefined\nbehavior.\n\nTo fix this, do as the above commit, and do an unsigned\nsubtraction, and interpreting the result as a signed\ntwo\u0027s-complement number.  This is based on the theory from\nRFC 1982 and is nicely described in wikipedia here:\n https://en.wikipedia.org/wiki/Serial_number_arithmetic#General_Solution\n\nA side-note, I have seen practical issues with the previous logic\nwhen dealing with 16-bit, on a 64-bit machine (gcc version\n4.4.5). This were 32-bit, which I have not observed issues with.\n\nCc: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Jesper Dangaard Brouer \u003cnetoptimizer@brouer.com\u003e\nAcked-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2359a47671fc4fb0fe5e9945f76c2cb10792c0f8",
      "tree": "2ff0ca201a2797f26414dcfe5df90ededb94375b",
      "parents": [
        "55461ddbcb0b36d1575e01fb4f130c609ca1cfee"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Sun Jul 29 20:52:21 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Aug 10 16:52:54 2012 -0700"
      },
      "message": "codel: refine one condition to avoid a nul rec_inv_sqrt\n\nOne condition before codel_Newton_step() was not good if\nwe never left the dropping state for a flow. As a result\nrec_inv_sqrt was 0, instead of the ~0 initial value.\n\ncodel control law was then set to a very aggressive mode, dropping\nmany packets before reaching \u0027target\u0027 and recovering from this problem.\n\nTo keep codel_vars_init() as efficient as possible, refine\nthe condition to make sure rec_inv_sqrt initial value is correct\n\nMany thanks to Anton Mich for discovering the issue and suggesting\na fix.\n\nReported-by: Anton Mich \u003clp2s1h@gmail.com\u003e\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "865ec5523dadbedefbc5710a68969f686a28d928",
      "tree": "b9f056cdea6922d5fc3ed035764660bb6fb152b3",
      "parents": [
        "c27b46e7f1cbf3be95a4cf5840c76a7b7d54b26f"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Wed May 16 04:39:09 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed May 16 15:30:26 2012 -0400"
      },
      "message": "fq_codel: should use qdisc backlog as threshold\n\ncodel_should_drop() logic allows a packet being not dropped if queue\nsize is under max packet size.\n\nIn fq_codel, we have two possible backlogs : The qdisc global one, and\nthe flow local one.\n\nThe meaningful one for codel_should_drop() should be the global backlog,\nnot the per flow one, so that thin flows can have a non zero drop/mark\nprobability.\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nCc: Dave Taht \u003cdave.taht@bufferbloat.net\u003e\nCc: Kathleen Nichols \u003cnichols@pollere.com\u003e\nCc: Van Jacobson \u003cvan@pollere.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6ff272c9ad65eda219cd975b9da2dbc31cc812ee",
      "tree": "93236fdb1d8f23afe44fc4b7366c1997787cb8cf",
      "parents": [
        "748336087374ca7e5369f310745fa1d3b4a8cbf7"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sat May 12 21:23:23 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 14 18:32:56 2012 -0400"
      },
      "message": "codel: use u16 field instead of 31bits for rec_inv_sqrt\n\nDavid pointed out gcc might generate poor code with 31bit fields.\n\nUsing u16 is more than enough and permits a better code output.\n\nAlso make the code intent more readable using constants, fixed point arithmetic\nnot being trivial for everybody.\n\nSuggested-by: David Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "536edd67109df5e0cdb2c4ee759e9bade7976367",
      "tree": "b253ee5ce32fdc37346120c9ebbfd1f187ad6b95",
      "parents": [
        "470f16c83ce5e481d50cb6da076e836b6219a57c"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Sat May 12 03:32:13 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat May 12 15:50:49 2012 -0400"
      },
      "message": "codel: use Newton method instead of sqrt() and divides\n\nAs Van pointed out, interval/sqrt(count) can be implemented using\nmultiplies only.\n\nhttp://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Iterative_methods_for_reciprocal_square_roots\n\nThis patch implements the Newton method and reciprocal divide.\n\nTotal cost is 15 cycles instead of 120 on my Corei5 machine (64bit\nkernel).\n\nThere is a small \u0027error\u0027 for count values \u003c 5, but we don\u0027t really care.\n\nI reuse a hole in struct codel_vars :\n - pack the dropping boolean into one bit\n - use 31bit to store the reciprocal value of sqrt(count).\n\nSuggested-by: Van Jacobson \u003cvan@pollere.net\u003e\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nCc: Dave Taht \u003cdave.taht@bufferbloat.net\u003e\nCc: Kathleen Nichols \u003cnichols@pollere.com\u003e\nCc: Tom Herbert \u003ctherbert@google.com\u003e\nCc: Matt Mathis \u003cmattmathis@google.com\u003e\nCc: Yuchung Cheng \u003cycheng@google.com\u003e\nCc: Nandita Dukkipati \u003cnanditad@google.com\u003e\nCc: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "76e3cc126bb223013a6b9a0e2a51238d1ef2e409",
      "tree": "37d1c2a3c4f4ebf68e9849262c7d75115652313f",
      "parents": [
        "2dd875ff31ac7ff42d6fc7d7f78ac6c0635439f5"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Thu May 10 07:51:25 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu May 10 23:35:02 2012 -0400"
      },
      "message": "codel: Controlled Delay AQM\n\nAn implementation of CoDel AQM, from Kathleen Nichols and Van Jacobson.\n\nhttp://queue.acm.org/detail.cfm?id\u003d2209336\n\nThis AQM main input is no longer queue size in bytes or packets, but the\ndelay packets stay in (FIFO) queue.\n\nAs we don\u0027t have infinite memory, we still can drop packets in enqueue()\nin case of massive load, but mean of CoDel is to drop packets in\ndequeue(), using a control law based on two simple parameters :\n\ntarget : target sojourn time (default 5ms)\ninterval : width of moving time window (default 100ms)\n\nBased on initial work from Dave Taht.\n\nRefactored to help future codel inclusion as a plugin for other linux\nqdisc (FQ_CODEL, ...), like RED.\n\ninclude/net/codel.h contains codel algorithm as close as possible than\nKathleen reference.\n\nnet/sched/sch_codel.c contains the linux qdisc specific glue.\n\nSeparate structures permit a memory efficient implementation of fq_codel\n(to be sent as a separate work) : Each flow has its own struct\ncodel_vars.\n\ntimestamps are taken at enqueue() time with 1024 ns precision, allowing\na range of 2199 seconds in queue, and 100Gb links support. iproute2 uses\nusec as base unit.\n\nSelected packets are dropped, unless ECN is enabled and packets can get\nECN mark instead.\n\nTested from 2Mb to 10Gb speeds with no particular problems, on ixgbe and\ntg3 drivers (BQL enabled).\n\nUsage: tc qdisc ... codel [ limit PACKETS ] [ target TIME ]\n                          [ interval TIME ] [ ecn ]\n\nqdisc codel 10: parent 1:1 limit 2000p target 3.0ms interval 60.0ms ecn\n Sent 13347099587 bytes 8815805 pkt (dropped 0, overlimits 0 requeues 0)\n rate 202365Kbit 16708pps backlog 113550b 75p requeues 0\n  count 116 lastcount 98 ldelay 4.3ms dropping drop_next 816us\n  maxpacket 1514 ecn_mark 84399 drop_overlimit 0\n\nCoDel must be seen as a base module, and should be used keeping in mind\nthere is still a FIFO queue. So a typical setup will probably need a\nhierarchy of several qdiscs and packet classifiers to be able to meet\nwhatever constraints a user might have.\n\nOne possible example would be to use fq_codel, which combines Fair\nQueueing and CoDel, in replacement of sfq / sfq_red.\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: Dave Taht \u003cdave.taht@bufferbloat.net\u003e\nCc: Kathleen Nichols \u003cnichols@pollere.com\u003e\nCc: Van Jacobson \u003cvan@pollere.net\u003e\nCc: Tom Herbert \u003ctherbert@google.com\u003e\nCc: Matt Mathis \u003cmattmathis@google.com\u003e\nCc: Yuchung Cheng \u003cycheng@google.com\u003e\nCc: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    }
  ]
}
