)]}'
{
  "commit": "01ff367e62f0474e4d39aa5812cbe2a30d96e1e9",
  "tree": "cbe69160bfd0dd0d84b25d60405d511120e8001b",
  "parents": [
    "aa55a08687059aa169d10a313c41f238c2070488"
  ],
  "author": {
    "name": "David S. Miller",
    "email": "davem@sunset.davemloft.net",
    "time": "Thu Sep 29 17:07:20 2005 -0700"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@sunset.davemloft.net",
    "time": "Thu Sep 29 17:07:20 2005 -0700"
  },
  "message": "[TCP]: Revert 6b251858d377196b8cea20e65cae60f584a42735\n\nBut retain the comment fix.\n\nAlexey Kuznetsov has explained the situation as follows:\n\n--------------------\n\nI think the fix is incorrect. Look, the RFC function init_cwnd(mss) is\nnot continuous: f.e. for mss\u003d1095 it needs initial window 1095*4, but\nfor mss\u003d1096 it is 1096*3. We do not know exactly what mss sender used\nfor calculations. If we advertised 1096 (and calculate initial window\n3*1096), the sender could limit it to some value \u003c 1096 and then it\nwill need window his_mss*4 \u003e 3*1096 to send initial burst.\n\nSee?\n\nSo, the honest function for inital rcv_wnd derived from\ntcp_init_cwnd() is:\n\n\tinit_rcv_wnd(mss)\u003d\n\t  min { init_cwnd(mss1)*mss1 for mss1 \u003c\u003d mss }\n\nIt is something sort of:\n\n\tif (mss \u003c 1096)\n\t\treturn mss*4;\n\tif (mss \u003c 1096*2)\n\t\treturn 1096*4;\n\treturn mss*2;\n\n(I just scrablled a graph of piece of paper, it is difficult to see or\nto explain without this)\n\nI selected it differently giving more window than it is strictly\nrequired.  Initial receive window must be large enough to allow sender\nfollowing to the rfc (or just setting initial cwnd to 2) to send\ninitial burst.  But besides that it is arbitrary, so I decided to give\nslack space of one segment.\n\nActually, the logic was:\n\nIf mss is low/normal (\u003c\u003dethernet), set window to receive more than\ninitial burst allowed by rfc under the worst conditions\ni.e. mss*4. This gives slack space of 1 segment for ethernet frames.\n\nFor msses slighlty more than ethernet frame, take 3. Try to give slack\nspace of 1 frame again.\n\nIf mss is huge, force 2*mss. No slack space.\n\nValue 1460*3 is really confusing. Minimal one is 1096*2, but besides\nthat it is an arbitrary value. It was meant to be ~4096. 1460*3 is\njust the magic number from RFC, 1460*3 \u003d 1095*4 is the magic :-), so\nthat I guess hands typed this themselves.\n\n--------------------\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "caf2e2cff29365ece4d1075ac2eae72c7bf12816",
      "old_mode": 33188,
      "old_path": "net/ipv4/tcp_output.c",
      "new_id": "c5b911f9b662cb33b959755cebd3f2fb8d8c7fe0",
      "new_mode": 33188,
      "new_path": "net/ipv4/tcp_output.c"
    }
  ]
}
