)]}'
{
  "commit": "2a41f71d3bd97dde3305b4e1c43ab0eca46e7c71",
  "tree": "d739c170b843ff322ff0897465adbca5cd7041c7",
  "parents": [
    "073a24364fe6de7eef0a3dec0ec7d48e56624092"
  ],
  "author": {
    "name": "Alex Williamson",
    "email": "alex.williamson@hp.com",
    "time": "Wed Feb 04 09:02:34 2009 +0000"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Wed Feb 04 16:35:11 2009 -0800"
  },
  "message": "virtio_net: Add a virtqueue for outbound control commands\n\nThis will be used for RX mode, MAC filter table, VLAN filtering, etc...\n\nThe control transaction consists of one or more \"out\" sg entries and\none or more \"in\" sg entries.  The first out entry contains a header\ndefining the class and command.  Additional out entries may provide\ndata for the command.  The last in entry provides a status response\nback from the command.\n\nVirtqueues typically run asynchronous, running a callback function\nwhen there\u0027s data in the channel.  We can\u0027t readily make use of this\nin the command paths where we need to use this.  Instead, we kick\nthe virtqueue and spin.  The kick causes an I/O write, triggering an\nimmediate trap into the hypervisor.\n\nSigned-off-by: Alex Williamson \u003calex.williamson@hp.com\u003e\nAcked-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "fe576e75a538ba20f320ae80101bc6377cf50107",
      "old_mode": 33188,
      "old_path": "drivers/net/virtio_net.c",
      "new_id": "67bb583b7fc9c9023d63cc78fff06242a173dd80",
      "new_mode": 33188,
      "new_path": "drivers/net/virtio_net.c"
    },
    {
      "type": "modify",
      "old_id": "d8e362d52fd807a12262571f5fadbeb1e1d9bcb7",
      "old_mode": 33188,
      "old_path": "include/linux/virtio_net.h",
      "new_id": "245eda829aa85948b8e0ec36e7a7fae04d59d859",
      "new_mode": 33188,
      "new_path": "include/linux/virtio_net.h"
    }
  ]
}
