)]}'
{
  "commit": "93f154b594fe47e4a7e5358b309add449a046cd3",
  "tree": "479d9f2db25922a2312547c97e73d5a11b68bb1c",
  "parents": [
    "496a60cdcd5d0d884dddf6c3b4ea912923a70f13"
  ],
  "author": {
    "name": "Eric Dumazet",
    "email": "dada1@cosmosbay.com",
    "time": "Mon May 18 22:19:19 2009 -0700"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Mon May 18 22:19:19 2009 -0700"
  },
  "message": "net: release dst entry in dev_hard_start_xmit()\n\nOne point of contention in high network loads is the dst_release() performed\nwhen a transmited skb is freed. This is because NIC tx completion calls\ndev_kree_skb() long after original call to dev_queue_xmit(skb).\n\nCPU cache is cold and the atomic op in dst_release() stalls. On SMP, this is\nquite visible if one CPU is 100% handling softirqs for a network device,\nsince dst_clone() is done by other cpus, involving cache line ping pongs.\n\nIt seems right place to release dst is in dev_hard_start_xmit(), for most\ndevices but ones that are virtual, and some exceptions.\n\nDavid Miller suggested to define a new device flag, set in alloc_netdev_mq()\n(so that most devices set it at init time), and carefuly unset in devices\nwhich dont want a NULL skb-\u003edst in their ndo_start_xmit().\n\nList of devices that must clear this flag is :\n\n- loopback device, because it calls netif_rx() and quoting Patrick :\n    \"ip_route_input() doesn\u0027t accept loopback addresses, so loopback packets\n     already need to have a dst_entry attached.\"\n- appletalk/ipddp.c : needs skb-\u003edst in its xmit function\n\n- And all devices that call again dev_queue_xmit() from their xmit function\n(as some classifiers need skb-\u003edst) : bonding, vlan, macvlan, eql, ifb, hdlc_fr\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "da64ba88d7f8f362ac785570fa73c3c4ecf16935",
      "old_mode": 33188,
      "old_path": "drivers/net/appletalk/ipddp.c",
      "new_id": "f939e92fcf8aa3d8daf1cded2e6f34f0c31a9911",
      "new_mode": 33188,
      "new_path": "drivers/net/appletalk/ipddp.c"
    },
    {
      "type": "modify",
      "old_id": "96d7689995cdde6351a4ddd708093fa35cf0d9bc",
      "old_mode": 33188,
      "old_path": "drivers/net/bonding/bond_main.c",
      "new_id": "92a9d69c5650e91c6c8c536d345172d35b8acbdc",
      "new_mode": 33188,
      "new_path": "drivers/net/bonding/bond_main.c"
    },
    {
      "type": "modify",
      "old_id": "5210bb1027cce43d168d5f09d391064af2fac812",
      "old_mode": 33188,
      "old_path": "drivers/net/eql.c",
      "new_id": "19b7dd983944d84add883ee3f0d50abf270e0b80",
      "new_mode": 33188,
      "new_path": "drivers/net/eql.c"
    },
    {
      "type": "modify",
      "old_id": "60a263001933a53e48e32d28f7adc7dc8914d437",
      "old_mode": 33188,
      "old_path": "drivers/net/ifb.c",
      "new_id": "96713ef0629848dd1d529246a7b8fe1941f43816",
      "new_mode": 33188,
      "new_path": "drivers/net/ifb.c"
    },
    {
      "type": "modify",
      "old_id": "6f71157bea8e48f0058faefc19847bb9347d1315",
      "old_mode": 33188,
      "old_path": "drivers/net/loopback.c",
      "new_id": "da472c687481ab23ce0e6a9d0afa9c8733fd4ab8",
      "new_mode": 33188,
      "new_path": "drivers/net/loopback.c"
    },
    {
      "type": "modify",
      "old_id": "329cd50d0e2968a6a992e8a5461a570d3b638abb",
      "old_mode": 33188,
      "old_path": "drivers/net/macvlan.c",
      "new_id": "d5334b41e4b4eee895d1fd7d37d931956d56be1a",
      "new_mode": 33188,
      "new_path": "drivers/net/macvlan.c"
    },
    {
      "type": "modify",
      "old_id": "800530101093a10901ee16956bf75040a6ec971a",
      "old_mode": 33188,
      "old_path": "drivers/net/wan/hdlc_fr.c",
      "new_id": "bfa0161a02d32001f8f22d5f6beb2b9c5d2a2c93",
      "new_mode": 33188,
      "new_path": "drivers/net/wan/hdlc_fr.c"
    },
    {
      "type": "modify",
      "old_id": "1108f3e099e3bcb7a80b89c9ee2f43fa5dcefa88",
      "old_mode": 33188,
      "old_path": "include/linux/if.h",
      "new_id": "b9a6229f3be7751d58ea43bc938da8afecfc42b0",
      "new_mode": 33188,
      "new_path": "include/linux/if.h"
    },
    {
      "type": "modify",
      "old_id": "8faacee686336cfac9fcdf78fe90eec52c5c2bcc",
      "old_mode": 33188,
      "old_path": "net/8021q/vlan_dev.c",
      "new_id": "ff7572ac548173e8e97b61a9cc1e8e5f673e7c9f",
      "new_mode": 33188,
      "new_path": "net/8021q/vlan_dev.c"
    },
    {
      "type": "modify",
      "old_id": "6d3630d16271cfa6f3a988c79e8b4575e60374fa",
      "old_mode": 33188,
      "old_path": "net/core/dev.c",
      "new_id": "92ebeca29901fd803daba7f2cc979a6a68b890d2",
      "new_mode": 33188,
      "new_path": "net/core/dev.c"
    }
  ]
}
