)]}'
{
  "commit": "8a9c7e92e0ca97632126feee32ba2698b4eb6c8f",
  "tree": "b569d6e39f3630f7a973814a925502035c63904b",
  "parents": [
    "8995a238ef6869bc5c80240440bc58452c7af283"
  ],
  "author": {
    "name": "Gerrit Renker",
    "email": "gerrit@erg.abdn.ac.uk",
    "time": "Wed Dec 12 13:50:51 2007 -0200"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Mon Jan 28 14:57:18 2008 -0800"
  },
  "message": "[TFRC]: Ringbuffer to track loss interval history\n\nA ringbuffer-based implementation of loss interval history is easier to\nmaintain, allocate, and update.\n\nThe `swap\u0027 routine to keep the RX history sorted is due to and was written\nby Arnaldo Carvalho de Melo, simplifying an earlier macro-based variant.\n\nDetails:\n * access to the Loss Interval Records via macro wrappers (with safety checks);\n * simplified, on-demand allocation of entries (no extra memory consumption on\n   lossless links); cache allocation is local to the module / exported as service;\n * provision of RFC-compliant algorithm to re-compute average loss interval;\n * provision of comprehensive, new loss detection algorithm\n \t- support for all cases of loss, including re-ordered/duplicate packets;\n \t- waiting for NDUPACK\u003d3 packets to fill the hole;\n\t- updating loss records when a late-arriving packet fills a hole.\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",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c0a933a1d28eb8cbbbae20059b9bb9a3bdb20e59",
      "old_mode": 33188,
      "old_path": "net/dccp/ccids/lib/loss_interval.c",
      "new_id": "39980d1f53523d9a39e55f21fbb3b0f4f15dd856",
      "new_mode": 33188,
      "new_path": "net/dccp/ccids/lib/loss_interval.c"
    },
    {
      "type": "modify",
      "old_id": "27bee92dae13481a5299e8e7fb686b6133b956b4",
      "old_mode": 33188,
      "old_path": "net/dccp/ccids/lib/loss_interval.h",
      "new_id": "5e3c5c54a495cbf508c04bdc7a217689aab06e56",
      "new_mode": 33188,
      "new_path": "net/dccp/ccids/lib/loss_interval.h"
    },
    {
      "type": "modify",
      "old_id": "dd2cf2d6b8fc20af0601755f855a093bb0baaf15",
      "old_mode": 33188,
      "old_path": "net/dccp/ccids/lib/packet_history.c",
      "new_id": "5b10a1ecf138b9163fcb554e780fcfc92141831c",
      "new_mode": 33188,
      "new_path": "net/dccp/ccids/lib/packet_history.c"
    },
    {
      "type": "modify",
      "old_id": "e58b0fcdc6aebc5582562bbc4561f65c31b7130a",
      "old_mode": 33188,
      "old_path": "net/dccp/ccids/lib/packet_history.h",
      "new_id": "24edd8df54b96f77861b523bbcc28808afbd13b6",
      "new_mode": 33188,
      "new_path": "net/dccp/ccids/lib/packet_history.h"
    },
    {
      "type": "modify",
      "old_id": "ab8848c0f8c9ada4a212f4ca8305f4cffbaad18a",
      "old_mode": 33188,
      "old_path": "net/dccp/ccids/lib/tfrc.h",
      "new_id": "1fb1187bbf1ca818a133fe476e5cb3781bbd3818",
      "new_mode": 33188,
      "new_path": "net/dccp/ccids/lib/tfrc.h"
    }
  ]
}
