)]}'
{
  "log": [
    {
      "commit": "4b549a2ef4bef9965d97cbd992ba67930cd3e0fe",
      "tree": "2b30a5af713817396ca0c259cddbb2e0972a03e7",
      "parents": [
        "536edd67109df5e0cdb2c4ee759e9bade7976367"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Fri May 11 09:30:50 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat May 12 15:53:42 2012 -0400"
      },
      "message": "fq_codel: Fair Queue Codel AQM\n\nFair Queue Codel packet scheduler\n\nPrinciples :\n\n- Packets are classified (internal classifier or external) on flows.\n- This is a Stochastic model (as we use a hash, several flows might\n                              be hashed on same slot)\n- Each flow has a CoDel managed queue.\n- Flows are linked onto two (Round Robin) lists,\n  so that new flows have priority on old ones.\n\n- For a given flow, packets are not reordered (CoDel uses a FIFO)\n- head drops only.\n- ECN capability is on by default.\n- Very low memory footprint (64 bytes per flow)\n\ntc qdisc ... fq_codel [ limit PACKETS ] [ flows number ]\n                      [ target TIME ] [ interval TIME ] [ noecn ]\n                      [ quantum BYTES ]\n\ndefaults : 1024 flows, 10240 packets limit, quantum : device MTU\n           target : 5ms (CoDel default)\n           interval : 100ms (CoDel default)\n\nImpressive results on load :\n\nclass htb 1:1 root leaf 10: prio 0 quantum 1514 rate 200000Kbit ceil 200000Kbit burst 1475b/8 mpu 0b overhead 0b cburst 1475b/8 mpu 0b overhead 0b level 0\n Sent 43304920109 bytes 33063109 pkt (dropped 0, overlimits 0 requeues 0)\n rate 201691Kbit 28595pps backlog 0b 312p requeues 0\n lended: 33063109 borrowed: 0 giants: 0\n tokens: -912 ctokens: -912\n\nclass fq_codel 10:1735 parent 10:\n (dropped 1292, overlimits 0 requeues 0)\n backlog 15140b 10p requeues 0\n  deficit 1514 count 1 lastcount 1 ldelay 7.1ms\nclass fq_codel 10:4524 parent 10:\n (dropped 1291, overlimits 0 requeues 0)\n backlog 16654b 11p requeues 0\n  deficit 1514 count 1 lastcount 1 ldelay 7.1ms\nclass fq_codel 10:4e74 parent 10:\n (dropped 1290, overlimits 0 requeues 0)\n backlog 6056b 4p requeues 0\n  deficit 1514 count 1 lastcount 1 ldelay 6.4ms dropping drop_next 92.0ms\nclass fq_codel 10:628a parent 10:\n (dropped 1289, overlimits 0 requeues 0)\n backlog 7570b 5p requeues 0\n  deficit 1514 count 1 lastcount 1 ldelay 5.4ms dropping drop_next 90.9ms\nclass fq_codel 10:a4b3 parent 10:\n (dropped 302, overlimits 0 requeues 0)\n backlog 16654b 11p requeues 0\n  deficit 1514 count 1 lastcount 1 ldelay 7.1ms\nclass fq_codel 10:c3c2 parent 10:\n (dropped 1284, overlimits 0 requeues 0)\n backlog 13626b 9p requeues 0\n  deficit 1514 count 1 lastcount 1 ldelay 5.9ms\nclass fq_codel 10:d331 parent 10:\n (dropped 299, overlimits 0 requeues 0)\n backlog 15140b 10p requeues 0\n  deficit 1514 count 1 lastcount 1 ldelay 7.0ms\nclass fq_codel 10:d526 parent 10:\n (dropped 12160, overlimits 0 requeues 0)\n backlog 35870b 211p requeues 0\n  deficit 1508 count 12160 lastcount 1 ldelay 15.3ms dropping drop_next 247us\nclass fq_codel 10:e2c6 parent 10:\n (dropped 1288, overlimits 0 requeues 0)\n backlog 15140b 10p requeues 0\n  deficit 1514 count 1 lastcount 1 ldelay 7.1ms\nclass fq_codel 10:eab5 parent 10:\n (dropped 1285, overlimits 0 requeues 0)\n backlog 16654b 11p requeues 0\n  deficit 1514 count 1 lastcount 1 ldelay 5.9ms\nclass fq_codel 10:f220 parent 10:\n (dropped 1289, overlimits 0 requeues 0)\n backlog 15140b 10p requeues 0\n  deficit 1514 count 1 lastcount 1 ldelay 7.1ms\n\nqdisc htb 1: root refcnt 6 r2q 10 default 1 direct_packets_stat 0 ver 3.17\n Sent 43331086547 bytes 33092812 pkt (dropped 0, overlimits 66063544 requeues 71)\n rate 201697Kbit 28602pps backlog 0b 260p requeues 71\nqdisc fq_codel 10: parent 1:1 limit 10240p flows 65536 target 5.0ms interval 100.0ms ecn\n Sent 43331086547 bytes 33092812 pkt (dropped 949359, overlimits 0 requeues 0)\n rate 201697Kbit 28602pps backlog 189352b 260p requeues 0\n  maxpacket 1514 drop_overlimit 0 new_flow_count 5582 ecn_mark 125593\n  new_flows_len 0 old_flows_len 11\n\nPING 172.30.42.18 (172.30.42.18) 56(84) bytes of data.\n64 bytes from 172.30.42.18: icmp_req\u003d1 ttl\u003d64 time\u003d0.227 ms\n64 bytes from 172.30.42.18: icmp_req\u003d2 ttl\u003d64 time\u003d0.165 ms\n64 bytes from 172.30.42.18: icmp_req\u003d3 ttl\u003d64 time\u003d0.166 ms\n64 bytes from 172.30.42.18: icmp_req\u003d4 ttl\u003d64 time\u003d0.151 ms\n64 bytes from 172.30.42.18: icmp_req\u003d5 ttl\u003d64 time\u003d0.164 ms\n64 bytes from 172.30.42.18: icmp_req\u003d6 ttl\u003d64 time\u003d0.172 ms\n64 bytes from 172.30.42.18: icmp_req\u003d7 ttl\u003d64 time\u003d0.175 ms\n64 bytes from 172.30.42.18: icmp_req\u003d8 ttl\u003d64 time\u003d0.183 ms\n64 bytes from 172.30.42.18: icmp_req\u003d9 ttl\u003d64 time\u003d0.158 ms\n64 bytes from 172.30.42.18: icmp_req\u003d10 ttl\u003d64 time\u003d0.200 ms\n\n10 packets transmitted, 10 received, 0% packet loss, time 8999ms\nrtt min/avg/max/mdev \u003d 0.151/0.176/0.227/0.022 ms\n\nMuch better than SFQ because of priority given to new flows, and fast\npath dirtying less cache lines.\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.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"
    },
    {
      "commit": "c3059be16c9ef29c05f0876a9df5fea21f29724f",
      "tree": "18e5635982b69c7d8369e441d3233c437d2262df",
      "parents": [
        "17b8a74f00474fb4fe6154aa426a80bcf1220997"
      ],
      "author": {
        "name": "Shriram Rajagopalan",
        "email": "rshriram@cs.ubc.ca",
        "time": "Sun Feb 05 13:51:32 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Feb 07 12:54:56 2012 -0500"
      },
      "message": "net/sched: sch_plug - Queue traffic until an explicit release command\n\nThe qdisc supports two operations - plug and unplug. When the\nqdisc receives a plug command via netlink request, packets arriving\nhenceforth are buffered until a corresponding unplug command is received.\nDepending on the type of unplug command, the queue can be unplugged\nindefinitely or selectively.\n\nThis qdisc can be used to implement output buffering, an essential\nfunctionality required for consistent recovery in checkpoint based\nfault-tolerance systems. Output buffering enables speculative execution\nby allowing generated network traffic to be rolled back. It is used to\nprovide network protection for Xen Guests in the Remus high availability\nproject, available as part of Xen.\n\nThis module is generic enough to be used by any other system that wishes\nto add speculative execution and output buffering to its applications.\n\nThis module was originally available in the linux 2.6.32 PV-OPS tree,\nused as dom0 for Xen.\n\nFor more information, please refer to http://nss.cs.ubc.ca/remus/\nand http://wiki.xensource.com/xenwiki/Remus\n\nChanges in V3:\n  * Removed debug output (printk) on queue overflow\n  * Added TCQ_PLUG_RELEASE_INDEFINITE - that allows the user to\n    use this qdisc, for simple plug/unplug operations.\n  * Use of packet counts instead of pointers to keep track of\n    the buffers in the queue.\n\nSigned-off-by: Shriram Rajagopalan \u003crshriram@cs.ubc.ca\u003e\nSigned-off-by: Brendan Cully \u003cbrendan@cs.ubc.ca\u003e\n[author of the code in the linux 2.6.32 pvops tree]\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0545a3037773512d3448557ba048cebb73b3e4af",
      "tree": "fff0f5cf53ed953b002be1c4de0f3c2c7a88bd22",
      "parents": [
        "fc3e5941248be00996150965a469d38c92913ac2"
      ],
      "author": {
        "name": "stephen hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Mon Apr 04 05:30:58 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Apr 04 11:10:24 2011 -0700"
      },
      "message": "pkt_sched: QFQ - quick fair queue scheduler\n\nThis is an implementation of the Quick Fair Queue scheduler developed\nby Fabio Checconi. The same algorithm is already implemented in ipfw\nin FreeBSD. Fabio had an earlier version developed on Linux, I just\ncleaned it up.  Thanks to Eric Dumazet for testing this under load.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e13e02a3c68d899169c78d9a18689bd73491d59a",
      "tree": "6e6b40ef37261df391cd445ec0f1b3d538b23a47",
      "parents": [
        "dee9f4bceb5fd9dbfcc1567148fccdbf16d6a38a"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Feb 23 10:56:17 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Feb 23 14:05:11 2011 -0800"
      },
      "message": "net_sched: SFB flow scheduler\n\nThis is the Stochastic Fair Blue scheduler, based on work from :\n\nW. Feng, D. Kandlur, D. Saha, K. Shin. Blue: A New Class of Active Queue\nManagement Algorithms. U. Michigan CSE-TR-387-99, April 1999.\n\nhttp://www.thefengs.com/wuchang/blue/CSE-TR-387-99.pdf\n\nThis implementation is based on work done by Juliusz Chroboczek\n\nGeneral SFB algorithm can be found in figure 14, page 15:\n\nB[l][n] : L x N array of bins (L levels, N bins per level)\nenqueue()\nCalculate hash function values h{0}, h{1}, .. h{L-1}\nUpdate bins at each level\nfor i \u003d 0 to L - 1\n   if (B[i][h{i}].qlen \u003e bin_size)\n      B[i][h{i}].p_mark +\u003d p_increment;\n   else if (B[i][h{i}].qlen \u003d\u003d 0)\n      B[i][h{i}].p_mark -\u003d p_decrement;\np_min \u003d min(B[0][h{0}].p_mark ... B[L-1][h{L-1}].p_mark);\nif (p_min \u003d\u003d 1.0)\n    ratelimit();\nelse\n    mark/drop with probabilty p_min;\n\nI did the adaptation of Juliusz code to meet current kernel standards,\nand various changes to address previous comments :\n\nhttp://thread.gmane.org/gmane.linux.network/90225\nhttp://thread.gmane.org/gmane.linux.network/90375\n\nDefault flow classifier is the rxhash introduced by RPS in 2.6.35, but\nwe can use an external flow classifier if wanted.\n\ntc qdisc add dev $DEV parent 1:11 handle 11:  \\\n        est 0.5sec 2sec sfb limit 128\n\ntc filter add dev $DEV protocol ip parent 11: handle 3 \\\n        flow hash keys dst divisor 1024\n\nNotes:\n\n1) SFB default child qdisc is pfifo_fast. It can be changed by another\nqdisc but a child qdisc MUST not drop a packet previously queued. This\nis because SFB needs to handle a dequeued packet in order to maintain\nits virtual queue states. pfifo_head_drop or CHOKe should not be used.\n\n2) ECN is enabled by default, unlike RED/CHOKe/GRED\n\nWith help from Patrick McHardy \u0026 Andi Kleen\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCC: Juliusz Chroboczek \u003cJuliusz.Chroboczek@pps.jussieu.fr\u003e\nCC: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nCC: Patrick McHardy \u003ckaber@trash.net\u003e\nCC: Andi Kleen \u003candi@firstfloor.org\u003e\nCC: John W. Linville \u003clinville@tuxdriver.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "45e144339ac59971eb44be32e1282760aaabe861",
      "tree": "b9d93acb2c1bb505d3b6facc426d307c59dc63a4",
      "parents": [
        "119b3d386985fcd477b3131190c041516a73f83a"
      ],
      "author": {
        "name": "stephen hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Wed Feb 02 15:21:10 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Feb 02 20:52:42 2011 -0800"
      },
      "message": "sched: CHOKe flow scheduler\n\nCHOKe (\"CHOose and Kill\" or \"CHOose and Keep\") is an alternative\npacket scheduler based on the Random Exponential Drop (RED) algorithm.\n\nThe core idea is:\n  For every packet arrival:\n  \tCalculate Qave\n\tif (Qave \u003c minth)\n\t     Queue the new packet\n\telse\n\t     Select randomly a packet from the queue\n\t     if (both packets from same flow)\n\t     then Drop both the packets\n\t     else if (Qave \u003e maxth)\n\t          Drop packet\n\t     else\n\t       \t  Admit packet with proability p (same as RED)\n\nSee also:\n  Rong Pan, Balaji Prabhakar, Konstantinos Psounis, \"CHOKe: a stateless active\n   queue management scheme for approximating fair bandwidth allocation\",\n  Proceeding of INFOCOM\u00272000, March 2000.\n\nHelp from:\n     Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\n     Patrick McHardy \u003ckaber@trash.net\u003e\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b8970f0bfc78103cb74c66055de7379b15097840",
      "tree": "a85578cddfd506e049af0c78a56dd0ee342fc93b",
      "parents": [
        "4f57c087de9b46182545676d2c594120a20f2e58"
      ],
      "author": {
        "name": "John Fastabend",
        "email": "john.r.fastabend@intel.com",
        "time": "Mon Jan 17 08:06:09 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jan 19 23:31:11 2011 -0800"
      },
      "message": "net_sched: implement a root container qdisc sch_mqprio\n\nThis implements a mqprio queueing discipline that by default creates\na pfifo_fast qdisc per tx queue and provides the needed configuration\ninterface.\n\nUsing the mqprio qdisc the number of tcs currently in use along\nwith the range of queues alloted to each class can be configured. By\ndefault skbs are mapped to traffic classes using the skb priority.\nThis mapping is configurable.\n\nConfigurable parameters,\n\nstruct tc_mqprio_qopt {\n\t__u8    num_tc;\n\t__u8    prio_tc_map[TC_BITMASK + 1];\n\t__u8    hw;\n\t__u16   count[TC_MAX_QUEUE];\n\t__u16   offset[TC_MAX_QUEUE];\n};\n\nHere the count/offset pairing give the queue alignment and the\nprio_tc_map gives the mapping from skb-\u003epriority to tc.\n\nThe hw bit determines if the hardware should configure the count\nand offset values. If the hardware bit is set then the operation\nwill fail if the hardware does not implement the ndo_setup_tc\noperation. This is to avoid undetermined states where the hardware\nmay or may not control the queue mapping. Also minimal bounds\nchecking is done on the count/offset to verify a queue does not\nexceed num_tx_queues and that queue ranges do not overlap. Otherwise\nit is left to user policy or hardware configuration to create\nuseful mappings.\n\nIt is expected that hardware QOS schemes can be implemented by\ncreating appropriate mappings of queues in ndo_tc_setup().\n\nOne expected use case is drivers will use the ndo_setup_tc to map\nqueue ranges onto 802.1Q traffic classes. This provides a generic\nmechanism to map network traffic onto these traffic classes and\nremoves the need for lower layer drivers to know specifics about\ntraffic types.\n\nSigned-off-by: John Fastabend \u003cjohn.r.fastabend@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "eb4d40654505e47aa9d2035bb97f631fa61d14b4",
      "tree": "bed2a1c5026e9797c0ed48c67c48b050e7f07e3c",
      "parents": [
        "49e8ab03ebcacd8e37660ffec20c0c46721a2800"
      ],
      "author": {
        "name": "Grégoire Baron",
        "email": "baronchon@n7mm.org",
        "time": "Wed Aug 18 13:10:35 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Aug 20 01:42:59 2010 -0700"
      },
      "message": "net/sched: add ACT_CSUM action to update packets checksums\n\nnet/sched: add ACT_CSUM action to update packets checksums\n\nACT_CSUM can be called just after ACT_PEDIT in order to re-compute some\naltered checksums in IPv4 and IPv6 packets. The following checksums are\nsupported by this patch:\n - IPv4: IPv4 header, ICMP, IGMP, TCP, UDP \u0026 UDPLite\n - IPv6: ICMPv6, TCP, UDP \u0026 UDPLite\nIt\u0027s possible to request in the same action to update different kind of\nchecksums, if the packets flow mix TCP, UDP and UDPLite, ...\n\nAn example of usage is done in the associated iproute2 patch.\n\nVersion 3 changes:\n - remove useless goto instructions\n - improve IPv6 hop options decoding\n\nVersion 2 changes:\n - coding style correction\n - remove useless arguments of some functions\n - use stack in tcf_csum_dump()\n - add tcf_csum_skb_nextlayer() to factor code\n\nSigned-off-by: Gregoire Baron \u003cbaronchon@n7mm.org\u003e\nAcked-by: jamal \u003chadi@cyberus.ca\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6ec1c69a8f6492fd25722f4762721921da074c12",
      "tree": "a78323d1f7f84acbe08c25d7300b935ae4bb7c62",
      "parents": [
        "589983cd21f4a2e4ed74a958805a90fa676845c5"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Sep 06 01:58:51 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Sep 06 02:07:05 2009 -0700"
      },
      "message": "net_sched: add classful multiqueue dummy scheduler\n\nThis patch adds a classful dummy scheduler which can be used as root qdisc\nfor multiqueue devices and exposes each device queue as a child class.\n\nThis allows to address queues individually and graft them similar to regular\nclasses. Additionally it presents an accumulated view of the statistics of\nall real root qdiscs in the dummy root.\n\nTwo new callbacks are added to the qdisc_ops and qdisc_class_ops:\n\n- cl_ops-\u003eselect_queue selects the tx queue number for new child classes.\n\n- qdisc_ops-\u003eattach() overrides root qdisc device grafting to attach\n  non-shared qdiscs to the queues.\n\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "13d2a1d2b032de08d7dcab6a1edcd47802681f96",
      "tree": "a60915e015f1dc7a9b5681ef5c5135c59167edb3",
      "parents": [
        "0c19b0adb8dd33dbd10ff48e41971231c486855c"
      ],
      "author": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Thu Nov 20 04:10:00 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 20 04:10:00 2008 -0800"
      },
      "message": "pkt_sched: add DRR scheduler\n\nAdd classful DRR scheduler as a more flexible replacement for SFQ.\n\nThe main difference to the algorithm described in \"Efficient Fair Queueing\nusing Deficit Round Robin\" is that this implementation doesn\u0027t drop packets\nfrom the longest queue on overrun because its classful and limits are\nhandled by each individual child qdisc.\n\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f400923735ecbb67cbe4a3606c9479f694754f51",
      "tree": "bfe96ecb2860837bf858ceb180c489c931ed74d9",
      "parents": [
        "505d4f73dda9e20d59da05008f1f5eb432613e71"
      ],
      "author": {
        "name": "Thomas Graf",
        "email": "tgraf@suug.ch",
        "time": "Fri Nov 07 22:56:00 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Nov 07 22:56:00 2008 -0800"
      },
      "message": "pkt_sched: Control group classifier\n\nThe classifier should cover the most common use case and will work\nwithout any special configuration.\n\nThe principle of the classifier is to directly access the\ntask_struct via get_current(). In order for this to work,\nclassification requests from softirqs must be ignored. This is\nnot a problem because the vast majority of packets in softirq\ncontext are not assigned to a task anyway. For this to work, a\nmechanism is needed to trace softirq context. \n\nThis repost goes back to the method of relying on the number of\nnested bh disable calls for the sake of not adding too much\ncomplexity and the option to come up with something more reliable\nif actually needed.\n\nSigned-off-by: Thomas Graf \u003ctgraf@suug.ch\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ca9b0e27e072be4cef2f5f0cbc0b0fd94eae3520",
      "tree": "c236e31759299193e688cf7fe78809c24449ede1",
      "parents": [
        "92651940ab00dbe64722e908f70d816713d677b7"
      ],
      "author": {
        "name": "Alexander Duyck",
        "email": "alexander.h.duyck@intel.com",
        "time": "Fri Sep 12 16:30:20 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Sep 12 16:30:20 2008 -0700"
      },
      "message": "pkt_action: add new action skbedit\n\nThis new action will have the ability to change the priority and/or\nqueue_mapping fields on an sk_buff.\n\nSigned-off-by: Alexander Duyck \u003calexander.h.duyck@intel.com\u003e\nSigned-off-by: Jeff Kirsher \u003cjeffrey.t.kirsher@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "92651940ab00dbe64722e908f70d816713d677b7",
      "tree": "b68fdef99784bfa46b67aabaf70c19b0e5e0a144",
      "parents": [
        "78d15e82754945ee9821fb491b57faf43abfb9d7"
      ],
      "author": {
        "name": "Alexander Duyck",
        "email": "alexander.h.duyck@intel.com",
        "time": "Fri Sep 12 16:29:34 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Sep 12 16:29:34 2008 -0700"
      },
      "message": "pkt_sched: Add multiqueue scheduler support\n\nThis patch is intended to add a qdisc to support the new tx multiqueue\narchitecture by providing a band for each hardware queue.  By doing\nthis it is possible to support a different qdisc per physical hardware\nqueue.\n\nThis qdisc uses the skb-\u003equeue_mapping to select which band to place\nthe traffic onto.  It then uses a round robin w/ a check to see if the\nsubqueue is stopped to determine which band to dequeue the packet from.\n\nSigned-off-by: Alexander Duyck \u003calexander.h.duyck@intel.com\u003e\nSigned-off-by: Jeff Kirsher \u003cjeffrey.t.kirsher@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e5dfb815181fcb186d6080ac3a091eadff2d98fe",
      "tree": "25ec6cc5b3c75536dc45a14089ca14fc8bd67938",
      "parents": [
        "94de78d19580143c407ff2492edf2410d0e7d48c"
      ],
      "author": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Thu Jan 31 18:37:42 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jan 31 19:28:36 2008 -0800"
      },
      "message": "[NET_SCHED]: Add flow classifier\n\nAdd new \"flow\" classifier, which is meant to extend the SFQ hashing\ncapabilities without hard-coding new hash functions and also allows\ndeterministic mappings of keys to classes, replacing some out of tree\niptables patches like IPCLASSIFY (maps IPs to classes), IPMARK (maps\nIPs to marks, with fw filters to classes), ...\n\nSome examples:\n\n- Classic SFQ hash:\n\n  tc filter add ... flow hash \\\n  \tkeys src,dst,proto,proto-src,proto-dst divisor 1024\n\n- Classic SFQ hash, but using information from conntrack to work properly in\n  combination with NAT:\n\n  tc filter add ... flow hash \\\n  \tkeys nfct-src,nfct-dst,proto,nfct-proto-src,nfct-proto-dst divisor 1024\n\n- Map destination IPs of 192.168.0.0/24 to classids 1-257:\n\n  tc filter add ... flow map \\\n  \tkey dst addend -192.168.0.0 divisor 256\n\n- alternatively:\n\n  tc filter add ... flow map \\\n  \tkey dst and 0xff\n\n- similar, but reverse ordered:\n\n  tc filter add ... flow map \\\n  \tkey dst and 0xff xor 0xff\n\nPerturbation is currently not supported because we can\u0027t reliable kill the\ntimer on destruction.\n\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b4219952356baa162368f2f5dab6421a5dbc5e15",
      "tree": "4d99027b3453853c79a32793c4ebda76c6386169",
      "parents": [
        "ce1234d299f3823ea07019c0f7b7b0bcb81ee7a0"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Thu Sep 27 12:48:05 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:53:11 2007 -0700"
      },
      "message": "[PKT_SCHED]: Add stateless NAT\n\nStateless NAT is useful in controlled environments where restrictions are\nplaced on through traffic such that we don\u0027t need connection tracking to\ncorrectly NAT protocol-specific data.\n\nIn particular, this is of interest when the number of flows or the number\nof addresses being NATed is large, or if connection tracking information\nhas to be replicated and where it is not practical to do so.\n\nPreviously we had stateless NAT functionality which was integrated into\nthe IPv4 routing subsystem.  This was a great solution as long as the NAT\nworked on a subnet to subnet basis such that the number of NAT rules was\nrelatively small.  The reason is that for SNAT the routing based system\nhad to perform a linear scan through the rules.\n\nIf the number of rules is large then major renovations would have take\nplace in the routing subsystem to make this practical.\n\nFor the time being, the least intrusive way of achieving this is to use\nthe u32 classifier written by Alexey Kuznetsov along with the actions\ninfrastructure implemented by Jamal Hadi Salim.\n\nThe following patch is an attempt at this problem by creating a new nat\naction that can be invoked from u32 hash tables which would allow large\nnumber of stateless NAT rules that can be used/updated in constant time.\n\nThe actual NAT code is mostly based on the previous stateless NAT code\nwritten by Alexey.  In future we might be able to utilise the protocol\nNAT code from netfilter to improve support for other protocols.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c3bc7cff8fddb6ff9715be8bfc3d911378c4d69d",
      "tree": "e23946fb3583ee17e95c07f6e04b5dcc498fa581",
      "parents": [
        "73ca4918fbb98311421259d82ef4ab44feeace43"
      ],
      "author": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Sun Jul 15 00:03:05 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jul 15 00:03:05 2007 -0700"
      },
      "message": "[NET_SCHED]: Kill CONFIG_NET_CLS_POLICE\n\nThe NET_CLS_ACT option is now a full replacement for NET_CLS_POLICE,\nremove the old code. The config option will be kept around to select\nthe equivalent NET_CLS_ACT options for a short time to allow easier\nupgrades.\n\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9b2f7bcf0efea98666da56073448647e2b373b67",
      "tree": "f2e4719d070aab492236d9878a7fda70e9b84bf7",
      "parents": [
        "703071b5b93d88d5acb0edd5b9dd86c69ad970f2"
      ],
      "author": {
        "name": "Robert P. J. Day",
        "email": "rpjday@mindspring.com",
        "time": "Mon Mar 26 16:20:34 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Mar 26 16:20:34 2007 -0700"
      },
      "message": "[NET]: Remove dead net/sched/Makefile entry for sch_hpfq.o.\n\nRemove the worthless net/sched/Makefile entry for the non-existent\nsource file sch_hpfq.c.\n\nSigned-off-by: Robert P. J. Day \u003crpjday@mindspring.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3c62f75aac7348ee262b1295cfcfeb3473f76815",
      "tree": "ce7acdf403d50224bfc4250c7f0ff8f9281f56e4",
      "parents": [
        "3dfbcc411e461db51a1ac1aa1c6ebe2c5a0275a0"
      ],
      "author": {
        "name": "David Kimdon",
        "email": "david.kimdon@devicescape.com",
        "time": "Thu Nov 09 16:16:21 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Dec 02 21:21:43 2006 -0800"
      },
      "message": "[PKT_SCHED]: Make sch_fifo.o available when CONFIG_NET_SCHED is not set.\n\nBased on patch by Patrick McHardy.\n\nAdd a new option, NET_SCH_FIFO, which provides a simple fifo qdisc\nwithout requiring CONFIG_NET_SCHED.\n\nThe d80211 stack needs a generic fifo qdisc for WME.  At present it\nuses net/d80211/fifo_qdisc.c which is functionally equivalent to\nsch_fifo.c.  This patch will allow the d80211 stack to remove\nnet/d80211/fifo_qdisc.c and use sch_fifo.c instead.\n\nSigned-off-by: David Kimdon \u003cdavid.kimdon@devicescape.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4bba3925924148c24fb0c7636a04ad69a6a56b84",
      "tree": "9f8af6ab6509dd1bf3dcb7232a4e6fdc8cbf8629",
      "parents": [
        "541673c859c0d71dedaaea1c148dfe3ccccc9422"
      ],
      "author": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Sun Jan 08 22:22:14 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Mon Jan 09 14:16:14 2006 -0800"
      },
      "message": "[PKT_SCHED]: Prefix tc actions with act_\n\nClean up the net/sched directory a bit by prefix all actions with act_.\n\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "63d886c96b2a580b1bf764de238ba3c63515b5ee",
      "tree": "df855d79c4d956f5db562c0793ce307dd22f62b4",
      "parents": [
        "c1b4a7e69576d65efc31a8cea0714173c2841244"
      ],
      "author": {
        "name": "Thomas Graf",
        "email": "tgraf@suug.ch",
        "time": "Tue Jul 05 15:29:16 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 05 15:29:16 2005 -0700"
      },
      "message": "[PKT_SCHED]: Blackhole queueing discipline\n\nUseful in combination with classful qdiscs to drop or\ntemporary disable certain flows, e.g. one could block\nspecific ds flows with dsmark.\n\nUnlike the noop qdisc it can be controlled by the user and\nstatistic accounting is done.\n\nSigned-off-by: Thomas Graf \u003ctgraf@suug.ch\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d675c989ed2d4ba23dff615330b04371aea83534",
      "tree": "856df6f7dc1fba81b134e2363e42dbf6022fa671",
      "parents": [
        "3fc7e8a6d842f72d16d2623b1022814a635ab961"
      ],
      "author": {
        "name": "Thomas Graf",
        "email": "tgraf@suug.ch",
        "time": "Thu Jun 23 21:00:58 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jun 23 21:00:58 2005 -0700"
      },
      "message": "[PKT_SCHED]: Packet classification based on textsearch (ematch)\n\nSigned-off-by: Thomas Graf \u003ctgraf@suug.ch\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "db7530797992bb2be703f9f3cc69b1a578f812f8",
      "tree": "741ca281d2acb1f5a62df20ccda4ad294b57347b",
      "parents": [
        "ac6910e189471e6b46ecea59e7620b083329ad4f"
      ],
      "author": {
        "name": "Jamal Hadi Salim",
        "email": "hadi@cyberus.ca",
        "time": "Sun Apr 24 20:10:16 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Apr 24 20:10:16 2005 -0700"
      },
      "message": "[PKT_SCHED]: Introduce simple actions.\n\nAnd provide an example simply action in order to\ndemonstrate usage.\n\nSigned-off-by: Jamal Hadi Salim \u003chadi@cyberus.ca\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
