)]}'
{
  "commit": "a1c1f281b84a751fdb5ff919da3b09df7297619f",
  "tree": "19c493625ad4a2e1915c9f0fff17734a0f0b61ca",
  "parents": [
    "47ac3199acb0676b58491b29418283f37a116952"
  ],
  "author": {
    "name": "Ilpo Järvinen",
    "email": "ilpo.jarvinen@helsinki.fi",
    "time": "Tue May 13 02:53:26 2008 -0700"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Tue May 13 02:53:26 2008 -0700"
  },
  "message": "tcp FRTO: Fix fallback to conventional recovery\n\nIt seems that commit 009a2e3e4ec (\"[TCP] FRTO: Improve\ninteroperability with other undo_marker users\") run into\nanother land-mine which caused fallback to conventional\nrecovery to break:\n\n1. Cumulative ACK arrives after FRTO retransmission\n2. tcp_try_to_open sees zero retrans_out, clears retrans_stamp\n   which should be kept like in CA_Loss state it would be\n3. undo_marker change allowed tcp_packet_delayed to return\n   true because of the cleared retrans_stamp once FRTO is\n   terminated causing LossUndo to occur, which means all loss\n   markings FRTO made are reverted.\n\nThis means that the conventional recovery basically recovered\none loss per RTT, which is not that efficient. It was quite\nunobvious that the undo_marker change broken something like\nthis, I had a quite long session to track it down because of\nthe non-intuitiviness of the bug (luckily I had a trivial\nreproducer at hand and I was also able to learn to use kprobes\nin the process as well :-)).\n\nThis together with the NewReno+FRTO fix and FRTO in-order\nworkaround this fixes Damon\u0027s problems, this and the first\nmentioned are enough to fix Bugzilla #10063.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nReported-by: Damon L. Chesser \u003cdamon@damtek.com\u003e\nTested-by: Damon L. Chesser \u003cdamon@damtek.com\u003e\nTested-by: Sebastian Hyrwall \u003czibbe@cisko.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "26c936930e927fe42ba64da212492b522885e424",
      "old_mode": 33188,
      "old_path": "net/ipv4/tcp_input.c",
      "new_id": "d6edb98fd526b6471c34dd197d8c429a5c9ffb9f",
      "new_mode": 33188,
      "new_path": "net/ipv4/tcp_input.c"
    }
  ]
}
