)]}'
{
  "commit": "4f4dc8ce9a52c78c16a2eae2e27756fe8190be99",
  "tree": "2fdaf36325f9cc31e8f908b57c6ebd1bc3bd00c5",
  "parents": [
    "576d7e5e0fd208d5f071f6eddecc85467e95dcd5"
  ],
  "author": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Fri Feb 27 18:05:11 2015 -0500"
  },
  "committer": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Mon Mar 02 11:59:11 2015 -0500"
  },
  "message": "BNX2X: Transmit synchronization\n\nThe transmit function is called serially, per txdata, meaning there is only\never one caller of it.  Instead of a netif lock, we use the poker, which\nguarantees mutual exclusion (per poke_tracker).\n\nThe transmitter stops when the device is full.  Concurrently, the tx_int\ncould have freed up space in the tx ring.  When tx_int calls poke, poke\nwill make sure the transmit function runs at least once after poke is\ncalled.  This ensures we don\u0027t stall on transmits.\n\nIf you\u0027re concerned about the network stack calling transmit over and\nover while the TX ring is full, we can optimize slightly.  See the notes\nabove __bnx2x_tx_queue() for details.  In short, poke() is powerful, but\nit won\u0027t solve all of your problems.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ba58476ae683ba5774ced5b47ed91aec523924ad",
      "old_mode": 33188,
      "old_path": "kern/drivers/net/bnx2x/bnx2x.h",
      "new_id": "1aec4b4de625c0b0f4bbea2874ac5843cda203d9",
      "new_mode": 33188,
      "new_path": "kern/drivers/net/bnx2x/bnx2x.h"
    },
    {
      "type": "modify",
      "old_id": "4c5f0d55b240b5a3af19f9eaa10b0a2e1920a6c0",
      "old_mode": 33188,
      "old_path": "kern/drivers/net/bnx2x/bnx2x_cmn.c",
      "new_id": "ec5cb0c59ac8e8eda05997c327cfcb8739544f74",
      "new_mode": 33188,
      "new_path": "kern/drivers/net/bnx2x/bnx2x_cmn.c"
    },
    {
      "type": "modify",
      "old_id": "4d928e6de027b3de16a5c3eec0d07554bf7fd2bc",
      "old_mode": 33188,
      "old_path": "kern/drivers/net/bnx2x/bnx2x_cmn.h",
      "new_id": "6bb10510dcd43665edd0c1123932d656b1889222",
      "new_mode": 33188,
      "new_path": "kern/drivers/net/bnx2x/bnx2x_cmn.h"
    },
    {
      "type": "modify",
      "old_id": "96bc8e10ee42147fa6db51a014ce59356092ad57",
      "old_mode": 33188,
      "old_path": "kern/drivers/net/bnx2x/bnx2x_dev.c",
      "new_id": "8a3c8f97eabf37d254eb76cf515e134502766a59",
      "new_mode": 33188,
      "new_path": "kern/drivers/net/bnx2x/bnx2x_dev.c"
    }
  ]
}
