)]}'
{
  "commit": "69cf36a4523be026bc16743c5c989c5e82edb7d9",
  "tree": "0c6572b724d840d879ff12861d8ac57da1bad635",
  "parents": [
    "d828cd5a95e532636dbc495e4b94b625ab9abdad"
  ],
  "author": {
    "name": "Helmut Schaa",
    "email": "helmut.schaa@googlemail.com",
    "time": "Sun Jan 30 13:16:03 2011 +0100"
  },
  "committer": {
    "name": "John W. Linville",
    "email": "linville@tuxdriver.com",
    "time": "Mon Jan 31 15:06:22 2011 -0500"
  },
  "message": "rt2x00: Refactor beacon code to make use of start- and stop_queue\n\nThis patch allows to dynamically remove beaconing interfaces without\nshutting beaconing down on all interfaces.\n\nThe only place to start and stop beaconing are now the start- and\nstop_queue callbacks. Hence, we can remove some register writes during\ninterface bring up (config_intf) and only write the correct sync mode\nto the register there.\n\nWhen multiple beaconing interfaces are present we should enable\nbeaconing as soon as mac80211 enables beaconing on at least one of\nthem. The beacon queue gets stopped when the last beaconing\ninterface was stopped by mac80211. Therefore, introduce another\ninterface counter to keep track ot the number of enabled beaconing\ninterfaces and start or stop the beacon queue accordingly.\n\nTo allow single interfaces to stop beaconing, add a new driver\ncallback clear_beacon to clear a single interface\u0027s beacon without\naffecting the other interfaces. Don\u0027t overload the clear_entry callback\nfor clearing beacons as that would introduce additional overhead\n(check for each TX queue) into the clear_entry callback which is used\non the drivers TX/RX hotpaths.\n\nFurthermore, the write beacon callback doesn\u0027t need to enable beaconing\nanymore but since beaconing should be disabled while a new beacon is\nwritten or cleared we still disable beacon generation and enable it\nafterwards again in the driver specific callbacks. However, beacon\nrelated interrupts should not be disabled/enabled here, that\u0027s solely\ndone from the start- and stop queue callbacks. It would be nice to stop\nthe beacon queue just before the beacon update and enable it afterwards\nin rt2x00queue itself instead of the current implementation that relies\non the driver doing the right thing. However, since start- and\nstop_queue are mutex protected we cannot use them for atomic beacon\nupdates.\n\nSigned-off-by: Helmut Schaa \u003chelmut.schaa@googlemail.com\u003e\nAcked-by: Gertjan van Wingerde \u003cgwingerde@gmail.com\u003e\nSigned-off-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "54ca49ad347200917152bf2aa013b2baa9d9951c",
      "old_mode": 33188,
      "old_path": "drivers/net/wireless/rt2x00/rt2400pci.c",
      "new_id": "cb28e1b2f1e2a9efe140e0f2dd7b738ef126eff7",
      "new_mode": 33188,
      "new_path": "drivers/net/wireless/rt2x00/rt2400pci.c"
    },
    {
      "type": "modify",
      "old_id": "a9ff26a27724a9e95ec827d094ea01cf12a541cb",
      "old_mode": 33188,
      "old_path": "drivers/net/wireless/rt2x00/rt2500pci.c",
      "new_id": "5225ae1899fe80cd4b722fbffec544e621ecc320",
      "new_mode": 33188,
      "new_path": "drivers/net/wireless/rt2x00/rt2500pci.c"
    },
    {
      "type": "modify",
      "old_id": "6b3b1de46792e96a6119b912eb749e9f43033f67",
      "old_mode": 33188,
      "old_path": "drivers/net/wireless/rt2x00/rt2500usb.c",
      "new_id": "157516e0aab737f70bce59c1fcc5bcd4683177d5",
      "new_mode": 33188,
      "new_path": "drivers/net/wireless/rt2x00/rt2500usb.c"
    },
    {
      "type": "modify",
      "old_id": "f8ba01cbc6ddf4a0e36fa0467c1bec58b1b4833c",
      "old_mode": 33188,
      "old_path": "drivers/net/wireless/rt2x00/rt2800lib.c",
      "new_id": "4753fb1b0aafa8415bef06932d759717f64553d6",
      "new_mode": 33188,
      "new_path": "drivers/net/wireless/rt2x00/rt2800lib.c"
    },
    {
      "type": "modify",
      "old_id": "3efafb78ff771082a90a212744f7f6b4315eb5b3",
      "old_mode": 33188,
      "old_path": "drivers/net/wireless/rt2x00/rt2800lib.h",
      "new_id": "0c92d86a36f48f902745d9367d125d532f277907",
      "new_mode": 33188,
      "new_path": "drivers/net/wireless/rt2x00/rt2800lib.h"
    },
    {
      "type": "modify",
      "old_id": "bfc2fc5c1c222e5d24e46cde8fefc8f586178af6",
      "old_mode": 33188,
      "old_path": "drivers/net/wireless/rt2x00/rt2800pci.c",
      "new_id": "54e37e08c11471a1d43c38f90b841ee0a6255959",
      "new_mode": 33188,
      "new_path": "drivers/net/wireless/rt2x00/rt2800pci.c"
    },
    {
      "type": "modify",
      "old_id": "b97a4a54ff4cb2eb9499014cb8647df74efd9982",
      "old_mode": 33188,
      "old_path": "drivers/net/wireless/rt2x00/rt2800usb.c",
      "new_id": "3ebe473f85512af94ad1c00cae9f605974c81c89",
      "new_mode": 33188,
      "new_path": "drivers/net/wireless/rt2x00/rt2800usb.c"
    },
    {
      "type": "modify",
      "old_id": "84aaf393da43a06144b838d820e78f3cf866e068",
      "old_mode": 33188,
      "old_path": "drivers/net/wireless/rt2x00/rt2x00.h",
      "new_id": "985982bb65e298f78fca87aca909b0b8f9f944b7",
      "new_mode": 33188,
      "new_path": "drivers/net/wireless/rt2x00/rt2x00.h"
    },
    {
      "type": "modify",
      "old_id": "31b7db05abd913d7e5a46e79e3ecc7f610bf6197",
      "old_mode": 33188,
      "old_path": "drivers/net/wireless/rt2x00/rt2x00dev.c",
      "new_id": "2c6503878059d22c5545fc76db3790625184af9c",
      "new_mode": 33188,
      "new_path": "drivers/net/wireless/rt2x00/rt2x00dev.c"
    },
    {
      "type": "modify",
      "old_id": "a105c500627bd746f04206c50f8614821ffe59a9",
      "old_mode": 33188,
      "old_path": "drivers/net/wireless/rt2x00/rt2x00lib.h",
      "new_id": "6c6a8f15870e1bf459513e652545729525915304",
      "new_mode": 33188,
      "new_path": "drivers/net/wireless/rt2x00/rt2x00lib.h"
    },
    {
      "type": "modify",
      "old_id": "f3da051df39e1a794ba376212e47f81974d733a3",
      "old_mode": 33188,
      "old_path": "drivers/net/wireless/rt2x00/rt2x00mac.c",
      "new_id": "7d3316724bb47ea444fba46e3ad9c7f0b9c2b075",
      "new_mode": 33188,
      "new_path": "drivers/net/wireless/rt2x00/rt2x00mac.c"
    },
    {
      "type": "modify",
      "old_id": "ca82b3a91697b439722d995b2d3d3384a672abb5",
      "old_mode": 33188,
      "old_path": "drivers/net/wireless/rt2x00/rt2x00queue.c",
      "new_id": "24bcdb47a46581fddc2c77cb35400f434725076e",
      "new_mode": 33188,
      "new_path": "drivers/net/wireless/rt2x00/rt2x00queue.c"
    },
    {
      "type": "modify",
      "old_id": "8de44dd401e0f80927dca2e992fed8952fd79caf",
      "old_mode": 33188,
      "old_path": "drivers/net/wireless/rt2x00/rt61pci.c",
      "new_id": "f14cc452eb0cd06fcefa920f865123bf94e6744a",
      "new_mode": 33188,
      "new_path": "drivers/net/wireless/rt2x00/rt61pci.c"
    },
    {
      "type": "modify",
      "old_id": "029be3c6c030971f6aec1d9326e43185a8b6479a",
      "old_mode": 33188,
      "old_path": "drivers/net/wireless/rt2x00/rt73usb.c",
      "new_id": "330353ec5c96f2624f7701084e17bbde6fddb234",
      "new_mode": 33188,
      "new_path": "drivers/net/wireless/rt2x00/rt73usb.c"
    }
  ]
}
