)]}'
{
  "commit": "b0da8537037f337103348f239ad901477e907aa8",
  "tree": "498a5dceb0d536fa54dcf4acc26ae1d1b43dfaf1",
  "parents": [
    "877ce7c1b3afd69a9b1caeb1b9964c992641f52a"
  ],
  "author": {
    "name": "Michael Chan",
    "email": "mchan@broadcom.com",
    "time": "Thu Jun 29 12:30:00 2006 -0700"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@sunset.davemloft.net",
    "time": "Thu Jun 29 16:58:08 2006 -0700"
  },
  "message": "[NET]: Add ECN support for TSO\n\nIn the current TSO implementation, NETIF_F_TSO and ECN cannot be\nturned on together in a TCP connection.  The problem is that most\nhardware that supports TSO does not handle CWR correctly if it is set\nin the TSO packet.  Correct handling requires CWR to be set in the\nfirst packet only if it is set in the TSO header.\n\nThis patch adds the ability to turn on NETIF_F_TSO and ECN using\nGSO if necessary to handle TSO packets with CWR set.  Hardware\nthat handles CWR correctly can turn on NETIF_F_TSO_ECN in the dev-\u003e\nfeatures flag.\n\nAll TSO packets with CWR set will have the SKB_GSO_TCPV4_ECN set.  If\nthe output device does not have the NETIF_F_TSO_ECN feature set, GSO\nwill split the packet up correctly with CWR only set in the first\nsegment.\n\nWith help from Herbert Xu \u003cherbert@gondor.apana.org.au\u003e.\n\nSince ECN can always be enabled with TSO, the SOCK_NO_LARGESEND sock\nflag is completely removed.\n\nSigned-off-by: Michael Chan \u003cmchan@broadcom.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "efd1e2af0bf32ce4d09bcb28f64b4a4621edd172",
      "old_mode": 33188,
      "old_path": "include/linux/netdevice.h",
      "new_id": "aa2d3c12c4d80cffdb6a011ee1d01a0ca57f8af9",
      "new_mode": 33188,
      "new_path": "include/linux/netdevice.h"
    },
    {
      "type": "modify",
      "old_id": "5fb72da7da03656cad40587408751f94954a11d5",
      "old_mode": 33188,
      "old_path": "include/linux/skbuff.h",
      "new_id": "e74c294929a0792c038a2aa91199e2f6ae030859",
      "new_mode": 33188,
      "new_path": "include/linux/skbuff.h"
    },
    {
      "type": "modify",
      "old_id": "2d8d6adf16161b9dff029cfee3418e66b77d5f1f",
      "old_mode": 33188,
      "old_path": "include/net/sock.h",
      "new_id": "7136bae48c2f1d98977542f253d7b0b97a055829",
      "new_mode": 33188,
      "new_path": "include/net/sock.h"
    },
    {
      "type": "modify",
      "old_id": "c6b84397448dac0b810079c96fe1c642773b16fd",
      "old_mode": 33188,
      "old_path": "include/net/tcp_ecn.h",
      "new_id": "7bb366f70934787e19b7dfa2f0ddd05895cd12a0",
      "new_mode": 33188,
      "new_path": "include/net/tcp_ecn.h"
    },
    {
      "type": "modify",
      "old_id": "94fe5b1f9dcbeb1b819da503b8d5a09d0c35569c",
      "old_mode": 33188,
      "old_path": "net/ipv4/tcp_input.c",
      "new_id": "7fa0b4a8a389c6e08c7eaf51ba1ceb922e1eede9",
      "new_mode": 33188,
      "new_path": "net/ipv4/tcp_input.c"
    },
    {
      "type": "modify",
      "old_id": "2b9b7f6c7f7c101867d1318bcc56d64b995eb0ed",
      "old_mode": 33188,
      "old_path": "net/ipv4/tcp_minisocks.c",
      "new_id": "54b2ef7d3efeb26e2fa7866d344604faa47c8bca",
      "new_mode": 33188,
      "new_path": "net/ipv4/tcp_minisocks.c"
    },
    {
      "type": "modify",
      "old_id": "bdd71db8bf908e3d20dad25ee43ec777970c139c",
      "old_mode": 33188,
      "old_path": "net/ipv4/tcp_output.c",
      "new_id": "5a7cb4a9c867f7a0cd4c1edf738dae2138a9e6c6",
      "new_mode": 33188,
      "new_path": "net/ipv4/tcp_output.c"
    }
  ]
}
