)]}'
{
  "commit": "c8628155ece363487b57d33441ea0359018c0fa7",
  "tree": "a3a4e89d3f66208f4145bb2ed401e464474a8d9f",
  "parents": [
    "e86b291962cbf477e35d983d312428cf737bc0f8"
  ],
  "author": {
    "name": "Eric Dumazet",
    "email": "eric.dumazet@gmail.com",
    "time": "Sun Mar 18 11:07:47 2012 +0000"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Mon Mar 19 16:53:08 2012 -0400"
  },
  "message": "tcp: reduce out_of_order memory use\n\nWith increasing receive window sizes, but speed of light not improved\nthat much, out of order queue can contain a huge number of skbs, waiting\nto be moved to receive_queue when missing packets can fill the holes.\n\nSome devices happen to use fat skbs (truesize of 4096 + sizeof(struct\nsk_buff)) to store regular (MTU \u003c\u003d 1500) frames. This makes highly\nprobable sk_rmem_alloc hits sk_rcvbuf limit, which can be 4Mbytes in\nmany cases.\n\nWhen limit is hit, tcp stack calls tcp_collapse_ofo_queue(), a true\nlatency killer and cpu cache blower.\n\nDoing the coalescing attempt each time we add a frame in ofo queue\npermits to keep memory use tight and in many cases avoid the\ntcp_collapse() thing later.\n\nTested on various wireless setups (b43, ath9k, ...) known to use big skb\ntruesize, this patch removed the \"packets collapsed in receive queue due\nto low socket buffer\" I had before.\n\nThis also reduced average memory used by tcp sockets.\n\nWith help from Neal Cardwell.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Neal Cardwell \u003cncardwell@google.com\u003e\nCc: Yuchung Cheng \u003cycheng@google.com\u003e\nCc: H.K. Jerry Chu \u003chkchu@google.com\u003e\nCc: Tom Herbert \u003ctherbert@google.com\u003e\nCc: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nAcked-by: Neal Cardwell \u003cncardwell@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8ee8af4e6da966c661123b0bcd2a26fbb1ceb1d8",
      "old_mode": 33188,
      "old_path": "include/linux/snmp.h",
      "new_id": "2e68f5ba03896947942c9b9886476c4af2a5da03",
      "new_mode": 33188,
      "new_path": "include/linux/snmp.h"
    },
    {
      "type": "modify",
      "old_id": "02d61079f08b0c7639b5c1864fd126f4e5658a03",
      "old_mode": 33188,
      "old_path": "net/ipv4/proc.c",
      "new_id": "8af0d44e4e2219cee75126adc6f2348e1d1f2d70",
      "new_mode": 33188,
      "new_path": "net/ipv4/proc.c"
    },
    {
      "type": "modify",
      "old_id": "fa7de12c4a5263f7ab95db95cff460474c9a96ff",
      "old_mode": 33188,
      "old_path": "net/ipv4/tcp_input.c",
      "new_id": "e886e2f7fa8d03edc8644179a6f1ef7ca6a374f6",
      "new_mode": 33188,
      "new_path": "net/ipv4/tcp_input.c"
    }
  ]
}
