)]}'
{
  "log": [
    {
      "commit": "d26ad3771fe7405bf80d736cae9ba4c706a7b1d8",
      "tree": "d6c071ed6e30802ab9c70a655b03c60d2af5a3ff",
      "parents": [
        "6b5773ebd5c9719aec30e58429db2d3b3f343d2c"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Mon Feb 20 11:38:41 2012 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Mon Feb 27 14:06:32 2012 -0500"
      },
      "message": "mac80211: clean up asm/unaligned.h inclusion\n\nSome files implicitly get this via mesh.h\nwhich itself doesn\u0027t need it, so move the\ninclusion into the right files. Some other\nfiles don\u0027t need it at all but include it,\nso remove it from there.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "89c91caeccf45bbeb86104445125fe1eaec12079",
      "tree": "55c39a8b8e4e4515995e3c8e86369433a7b291c1",
      "parents": [
        "077f49392819608084c6d8d20e3dcca230afe07d"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Fri Jan 20 13:55:19 2012 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Mon Feb 06 14:48:24 2012 -0500"
      },
      "message": "mac80211: dont program keys for stations not uploaded\n\nIf a station couldn\u0027t be uploaded to the driver but\nis still kept (only in IBSS mode) we still shouldn\u0027t\ntry to program the keys for it into hardware; fix\nthis bug by skipping the key upload in this case.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "077f49392819608084c6d8d20e3dcca230afe07d",
      "tree": "7b19e4537933e9c7e0524421d16701576c4b74b2",
      "parents": [
        "c8987876e9bf9b7b83e75b325586bc77ea8ac825"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Fri Jan 20 13:55:18 2012 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Mon Feb 06 14:48:24 2012 -0500"
      },
      "message": "mac80211: simplify AP_VLAN handling\n\nSetting keys and updating TKIP keys must use the\nBSS sdata (not AP_VLAN), so we translate. Move\nthe translation into driver-ops wrappers instead\nof having it inline in the code to simplify the\nnormal code flow.\n\nThe same can be done for sta_add/remove which\nalready does the translation in the wrapper.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "e11c259f745889b55bc5596ca78271f2f5cf08d2",
      "tree": "5025f0bf9093e84d0643beb9097249c176dbbea7",
      "parents": [
        "8d26784cf0d04c1238e906efdd5de76439cb0a1e",
        "b4487c2d0edaf1332d7a9f11b5661044955ef5e2"
      ],
      "author": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Thu Nov 17 13:11:43 2011 -0500"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Thu Nov 17 13:11:43 2011 -0500"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem\n\nConflicts:\n\tinclude/net/bluetooth/bluetooth.h\n"
    },
    {
      "commit": "077a9154898b374f20555adc3f620cccd02581d6",
      "tree": "77549521a0633899874a2b7f694f240cd7e61414",
      "parents": [
        "3b7b72eed19684824806b3fbefef653a180ef2b0"
      ],
      "author": {
        "name": "Arik Nemtsov",
        "email": "arik@wizery.com",
        "time": "Sun Oct 23 08:21:41 2011 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Tue Nov 08 15:54:27 2011 -0500"
      },
      "message": "mac80211: support adding IV-room in the skb for CCMP keys\n\nSome cards can generate CCMP IVs in HW, but require the space for the IV\nto be pre-allocated in the frame at the correct offset. Add a key flag\nthat allows us to achieve this.\n\nSigned-off-by: Arik Nemtsov \u003carik@wizery.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "bc3b2d7fb9b014d75ebb79ba371a763dbab5e8cf",
      "tree": "b0fd4e724bdb1c0a1783616614ae5a9dec1cfa5c",
      "parents": [
        "d9b9384215e17c68d7b6bd05d6fa409e5d4140d7"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Fri Jul 15 11:47:34 2011 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Oct 31 19:30:30 2011 -0400"
      },
      "message": "net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules\n\nThese files are non modular, but need to export symbols using\nthe macros now living in export.h -- call out the include so\nthat things won\u0027t break when we remove the implicit presence\nof module.h from everywhere.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "c2c98fdeb5c897499644eb247285c8e3dacc6450",
      "tree": "aaa9c0f8dd16ab896308470e21a0813041094670",
      "parents": [
        "deeaee197b0fa694ba6c8f02cdb57b3be7115b4f"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Thu Sep 29 16:04:36 2011 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Sep 30 15:57:19 2011 -0400"
      },
      "message": "mac80211: optimise station flags\n\nThe flaglock in struct sta_info has long been\nsomething that I wanted to get rid of, this\nfinally does the conversion to atomic bitops.\n\nThe conversion itself is straight-forward in\nmost places, a few things needed to change a\nbit since we can no longer use multiple bits\nat the same time.\n\nOn x86-64, this is a fairly significant code\nsize reduction:\n   text\t   data\t    bss\t    dec\t    hex\n 427861\t  23648\t   1008\t 452517\t  6e7a5\tbefore\n 425383\t  23648\t    976\t 450007\t  6ddd7\tafter\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "f850e00fcd7767d01101e2f0a6d464bee8e48b47",
      "tree": "c90d77261e09a6304e1b507c363e4ff66bc61b8d",
      "parents": [
        "8bca5d815311f53ada13b62f5e590df40fef317e"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Wed Jul 13 19:50:53 2011 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Jul 15 13:38:33 2011 -0400"
      },
      "message": "mac80211: let key iteration get keys in install order\n\nieee80211_iter_keys() currently returns keys in\nthe backward order they were installed in, which\nis a bit confusing. Add them to the tail of the\nkey list to make sure iterations go in the same\norder that keys were originally installed in.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "3ea542d3c2862142ae511fac5ce2dfc7419dcc53",
      "tree": "472807c6d2a0aefa050a63cc34d9e2a2f7a3f2a6",
      "parents": [
        "9e26297a56453315ae6829aec609b5a6309af7b4"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Thu Jul 07 18:58:00 2011 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Jul 08 11:42:22 2011 -0400"
      },
      "message": "mac80211: allow drivers to access key sequence counter\n\nIn order to implement GTK rekeying, the device needs\nto be able to encrypt frames with the right PN/IV and\ncheck the PN/IV in RX frames. To be able to tell it\nabout all those counters, we need to be able to get\nthem from mac80211, this adds the required API.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "523b02ea23b175dd3e46e3daf1bc9354376640a3",
      "tree": "a11f69f05cdfb457a42b2866e33e73937c35ec1e",
      "parents": [
        "397915c30731340ee3f348d1be597b22467acbdf"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Thu Jul 07 22:28:01 2011 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Jul 08 11:11:19 2011 -0400"
      },
      "message": "mac80211: fix TKIP races, make API easier to use\n\nOur current TKIP code races against itself on TX\nsince we can process multiple packets at the same\ntime on different ACs, but they all share the TX\ncontext for TKIP. This can lead to bad IVs etc.\n\nAlso, the crypto offload helper code just obtains\nthe P1K/P2K from the cache, and can update it as\nwell, but there\u0027s no guarantee that packets are\nreally processed in order.\n\nTo fix these issues, first introduce a spinlock\nthat will protect the IV16/IV32 values in the TX\ncontext. This first step makes sure that we don\u0027t\nassign the same IV multiple times or get confused\nin other ways.\n\nSecondly, change the way the P1K cache works. I\nadd a field \"p1k_iv32\" that stores the value of\nthe IV32 when the P1K was last recomputed, and\nif different from the last time, then a new P1K\nis recomputed. This can cause the P1K computation\nto flip back and forth if packets are processed\nout of order. All this also happens under the new\nspinlock.\n\nFinally, because there are argument differences,\nsplit up the ieee80211_get_tkip_key() API into\nieee80211_get_tkip_p1k() and ieee80211_get_tkip_p2k()\nand give them the correct arguments.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "c68f4b892c241bdddeb6f1c1864ac26197229471",
      "tree": "7100d2b756dff22ed1f248a3b0204e500290c89a",
      "parents": [
        "e5497d766adb92bcbd1fa4a147e188f84f34b20a"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Tue Jul 05 16:35:41 2011 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Jul 06 15:05:43 2011 -0400"
      },
      "message": "mac80211: support GTK rekey offload\n\nThis adds the necessary mac80211 APIs to support\nGTK rekey offload, mirroring the functionality\nfrom cfg80211.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "830af02f24fbc087999b757b8eca51829c67fa6f",
      "tree": "9a029493580c0d822badfa9f2218ef0c72ae6f33",
      "parents": [
        "68dd49ef907f92127aabb30b3368b80eb0ffb459"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Tue Jul 05 16:35:39 2011 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Jul 06 15:05:41 2011 -0400"
      },
      "message": "mac80211: allow driver to iterate keys\n\nWhen in suspend/wowlan, devices might implement crypto\noffload differently (more features), and might require\nreprogramming keys for the WoWLAN (as it is the case\nfor Intel devices that use another uCode image). Thus\nallow the driver to iterate all keys in this context.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "3bff1865186c6bb97855f0c13e3850543dce9cef",
      "tree": "4a9150f82cbb83a01f8fb82b3bf2d69028230928",
      "parents": [
        "252e735d64880b011f6cdeb41ebcac2eaeb58fd3"
      ],
      "author": {
        "name": "Yogesh Ashok Powar",
        "email": "yogeshp@marvell.com",
        "time": "Tue Jun 28 18:41:37 2011 +0530"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Tue Jul 05 15:26:50 2011 -0400"
      },
      "message": "mac80211: Skip tailroom reservation for full HW-crypto devices with race fix\n\nBased on inputs from Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nfrom http://article.gmane.org/gmane.linux.kernel.wireless.general/68193\nand http://article.gmane.org/gmane.linux.kernel.wireless.general/71702\n\nIn xmit path, devices that do full hardware crypto (including\nMMIC and ICV) need no tailroom. For such devices, tailroom\nreservation can be skipped if all the keys are programmed into\nthe hardware (i.e software crypto is not used for any of the\nkeys) and none of the keys wants software to generate Michael\nMIC and IV.\n\nv2: Added check for IV along with MMIC.\nReported-by: Fabio Rossi \u003crossi.f@inwind.it\u003e\nTested-by: Fabio Rossi \u003crossi.f@inwind.it\u003e\nSigned-off-by: Mohammed Shafi Shajakhan \u003cmshajakhan@atheros.com\u003e\nCc: Mohammed Shafi Shajakhan \u003cmshajakhan@atheros.com\u003e\n\nv3: Fixing races to avoid WARNING: at net/mac80211/wpa.c:397\n    ccmp_encrypt_skb+0xc4/0x1f0\nReported-by: Andreas Hartmann \u003candihartmann@01019freenet.de\u003e\nTested-by: Andreas Hartmann \u003candihartmann@01019freenet.de\u003e\n\nv4: Added links with message ID\n\nSigned-off-by: Yogesh Ashok Powar \u003cyogeshp@marvell.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "ab6a44ce1da48d35fe7ec95fa068aa617bd7e8dd",
      "tree": "fa8cc877e369e5da15a6daead490d3a87f15909f",
      "parents": [
        "d2ac49fe3c7c4730323c1042fb53a2e008643b6a"
      ],
      "author": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Mon Jun 06 14:35:27 2011 -0400"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Mon Jun 06 15:23:53 2011 -0400"
      },
      "message": "Revert \"mac80211: Skip tailroom reservation for full HW-crypto devices\"\n\nThis reverts commit aac6af5534fade2b18682a0b9efad1a6c04c34c6.\n\nConflicts:\n\n\tnet/mac80211/key.c\n\nThat commit has a race that causes a warning, as documented in the thread\nhere:\n\n\thttp://marc.info/?l\u003dlinux-wireless\u0026m\u003d130717684914101\u0026w\u003d2\n\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "40b275b69ee660274b77fb612b0db31fd282fc3f",
      "tree": "29a4f82a44a12edcf9db5de6a3c6df9615a5799e",
      "parents": [
        "ec034b208dc8aa5dc73ec46c3f27e34c5efbf113"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Fri May 13 14:15:49 2011 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Mon May 16 14:10:41 2011 -0400"
      },
      "message": "mac80211: sparse RCU annotations\n\nThis adds sparse RCU annotations to most of\nmac80211, only the mesh code remains to be\ndone.\n\nDue the the previous patches, the annotations\nare pretty simple. The only thing that this\nactually changes is removing the RCU usage of\nkey-\u003esta in debugfs since this pointer isn\u0027t\nactually an RCU-managed pointer (it only has\na single assignment done before the key even\ngoes live). As that is otherwise harmless, I\ndecided to make it part of this patch.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "5c0c36412b2dc6b1e243c7e9115306fe286583b7",
      "tree": "a189957b3a8e939d19da304541ba087f1264085a",
      "parents": [
        "dea4096bc41a9642039840ced91e585d04883a16"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Thu May 12 14:31:49 2011 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Thu May 12 14:10:53 2011 -0400"
      },
      "message": "mac80211: make key locking clearer\n\nThe code in ieee80211_del_key() doesn\u0027t acquire the\nkey_mtx properly when it dereferences the keys. It\nturns out that isn\u0027t actually necessary since the\nkey_mtx itself seems to be redundant since all key\nmanipulations are done under the RTNL, but as long\nas we have the key_mtx we should use it the right\nway too.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "eaef6a93bd52a2cc47b9fce201310010707afdb4",
      "tree": "1fb27412c8c777380d8b1b9464c174269595b7eb",
      "parents": [
        "1a5b306f5d7398c7ffb0f69fe9a2d0023f28deb9"
      ],
      "author": {
        "name": "Mohammed Shafi Shajakhan",
        "email": "mshajakhan@atheros.com",
        "time": "Thu May 05 10:59:24 2011 +0530"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Thu May 05 10:57:23 2011 -0400"
      },
      "message": "mac80211: Fix a warning due to skipping tailroom reservation for IV\n\nThe devices that require IV generation in software need tailroom\nreservation  for ICVs used in TKIP or WEP encryptions.\nCurrently, decision to skip the tailroom reservation in the tx\npath was taken only on whether driver wants MMIC to be generated\nin software or not. Following patch appends IV generation check for\nsuch decisions and fixes the following warning.\n\nWARNING: at net/mac80211/wep.c:101 ieee80211_wep_add_iv+0x56/0xf3()\nHardware name: 64756D6\nModules linked in: ath9k ath9k_common ath9k_hw\nPid: 0, comm: swapper Tainted: G        W   2.6.39-rc5-wl\n Call Trace:\n[\u003cc102fd29\u003e] warn_slowpath_common+0x65/0x7a\n[\u003cc1465c4e\u003e] ? ieee80211_wep_add_iv+0x56/0xf3\n[\u003cc102fd4d\u003e] warn_slowpath_null+0xf/0x13\n[\u003cc1465c4e\u003e] ieee80211_wep_add_iv+0x56/0xf3\n[\u003cc1466007\u003e] ieee80211_crypto_wep_encrypt+0x63/0x88\n[\u003cc1478bf3\u003e] ieee80211_tx_h_encrypt+0x2f/0x63\n[\u003cc1478cba\u003e] invoke_tx_handlers+0x93/0xe1\n[\u003cc1478eda\u003e] ieee80211_tx+0x4b/0x6d\n[\u003cc147907c\u003e] ieee80211_xmit+0x180/0x188\n[\u003cc147779d\u003e] ? ieee80211_skb_resize+0x95/0xd9\n[\u003cc1479edf\u003e] ieee80211_subif_start_xmit+0x64f/0x668\n[\u003cc13956fc\u003e] dev_hard_start_xmit+0x368/0x48c\n[\u003cc13a8bd6\u003e] sch_direct_xmit+0x4d/0x101\n[\u003cc1395ae1\u003e] dev_queue_xmit+0x2c1/0x43f\n[\u003cc13a74a2\u003e] ? eth_header+0x1e/0x90\n[\u003cc13a7400\u003e] ? eth_type_trans+0x91/0xc2\n[\u003cc13a7484\u003e] ? eth_rebuild_header+0x53/0x53\n[\u003cc139f079\u003e] neigh_resolve_output+0x223/0x27e\n[\u003cc13c6b23\u003e] ip_finish_output2+0x1d4/0x1fe\n[\u003cc13c6bc6\u003e] ip_finish_output+0x79/0x7d\n[\u003cc13c6cbe\u003e] T.1075+0x43/0x48\n[\u003cc13c6e6e\u003e] ip_output+0x75/0x7b\n[\u003cc13c4970\u003e] dst_output+0xc/0xe\n[\u003cc13c62c9\u003e] ip_local_out+0x17/0x1a\n[\u003cc13c67bb\u003e] ip_queue_xmit+0x2aa/0x2f8\n[\u003cc138b742\u003e] ? sk_setup_caps+0x21/0x92\n[\u003cc13d95ea\u003e] ? __tcp_v4_send_check+0x7e/0xb7\n[\u003cc13d5d2e\u003e] tcp_transmit_skb+0x6a1/0x6d7\n[\u003cc13d533b\u003e] ? tcp_established_options+0x20/0x8b\n[\u003cc13d6f28\u003e] tcp_retransmit_skb+0x43a/0x527\n[\u003cc13d8d6d\u003e] tcp_retransmit_timer+0x32e/0x45d\n[\u003cc13d8f23\u003e] tcp_write_timer+0x87/0x16c\n[\u003cc103a030\u003e] run_timer_softirq+0x156/0x1f9\n[\u003cc13d8e9c\u003e] ? tcp_retransmit_timer+0x45d/0x45d\n[\u003cc1034d65\u003e] __do_softirq+0x97/0x14a\n[\u003cc1034cce\u003e] ? irq_enter+0x4d/0x4d\n\nCc: Yogesh Powar \u003cyogeshp@marvell.com\u003e\nReported-by: Fabio Rossi \u003crossi.f@inwind.it\u003e\nTested-by: Fabio Rossi \u003crossi.f@inwind.it\u003e\nSigned-off-by: Mohammed Shafi Shajakhan \u003cmshajakhan@atheros.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "aac6af5534fade2b18682a0b9efad1a6c04c34c6",
      "tree": "786840d7b3dc0ea942e91075ffe6f2cf5ba9d5d9",
      "parents": [
        "e2186b7c25ef9cdb6d631c8dd6a672f41abe22d5"
      ],
      "author": {
        "name": "Yogesh Ashok Powar",
        "email": "yogeshp@marvell.com",
        "time": "Wed Apr 27 18:40:29 2011 +0530"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Thu Apr 28 14:53:21 2011 -0400"
      },
      "message": "mac80211: Skip tailroom reservation for full HW-crypto devices\n\nIn xmit path, devices that do full hardware crypto (including\nTKIP MMIC) need no tailroom. For such devices, tailroom\nreservation can be skipped if all the keys are programmed into\nthe hardware (i.e software crypto is not used for any of the\nkeys) and none of the keys wants software to generate Michael\nMIC.\n\nSigned-off-by: Yogesh Ashok Powar \u003cyogeshp@marvell.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "67aa030c0dff6095128bcb4e8043b48360f32331",
      "tree": "91f839fbe604cf1f96a12b2ca09bb65a317fe284",
      "parents": [
        "1f951a7f8ba05192291f781ef99a892697e47d62"
      ],
      "author": {
        "name": "Mariusz Kozlowski",
        "email": "mk@lab.zgora.pl",
        "time": "Sat Mar 26 18:58:51 2011 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Mon Mar 28 15:42:02 2011 -0400"
      },
      "message": "mac80211: fix possible NULL pointer dereference\n\nThis patch moves \u0027key\u0027 dereference after BUG_ON(!key) so that when key is NULL\nwe will see proper trace instead of oops.\n\nSigned-off-by: Mariusz Kozlowski \u003cmk@lab.zgora.pl\u003e\nAcked-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "1f951a7f8ba05192291f781ef99a892697e47d62",
      "tree": "88ff9259029103301e54de42be6deef69bd59ec2",
      "parents": [
        "f62d816fc4324afbb7cf90110c70b6a14139b225"
      ],
      "author": {
        "name": "Petr Štetiar",
        "email": "ynezz@true.cz",
        "time": "Sun Mar 27 13:31:26 2011 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Mon Mar 28 15:42:02 2011 -0400"
      },
      "message": "mac80211: fix NULL pointer dereference in ieee80211_key_alloc()\n\nThe ieee80211_key struct can be kfree()d several times in the function, for\nexample if some of the key setup functions fails beforehand, but there\u0027s no\ncheck if the struct is still valid before we call memcpy() and INIT_LIST_HEAD()\non it.  In some cases (like it was in my case), if there\u0027s missing aes-generic\nmodule it could lead to the following kernel OOPS:\n\n\tUnable to handle kernel NULL pointer dereference at virtual address 0000018c\n\t....\n\tPC is at memcpy+0x80/0x29c\n\t...\n\tBacktrace:\n\t[\u003cbf11c5e4\u003e] (ieee80211_key_alloc+0x0/0x234 [mac80211]) from [\u003cbf1148b4\u003e] (ieee80211_add_key+0x70/0x12c [mac80211])\n\t[\u003cbf114844\u003e] (ieee80211_add_key+0x0/0x12c [mac80211]) from [\u003cbf070cc0\u003e] (__cfg80211_set_encryption+0x2a8/0x464 [cfg80211])\n\nSigned-off-by: Petr Štetiar \u003cynezz@true.cz\u003e\nReviewed-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "6303710d7aa62bfb154cd13ab5ab12cfa8baaf91",
      "tree": "4718ca3186d92819b3d617f32813eab6a1896b91",
      "parents": [
        "db98a6cfcc9ac951067c9a2cb60459b618fd7b10",
        "d2460f4b2fa6dbdeec800414f9cf5b1fc8b71197"
      ],
      "author": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Jan 05 14:35:41 2011 -0500"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Jan 05 14:35:41 2011 -0500"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6\n"
    },
    {
      "commit": "b5c34f662a3519d34f9634a14d8de638fdbe0ca3",
      "tree": "0de22e8f97feedf9ad2b729802b338237ae5d6f3",
      "parents": [
        "cc72128750700d01c31f583a355c5f8f809498bb"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Mon Jan 03 19:51:09 2011 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Tue Jan 04 14:46:14 2011 -0500"
      },
      "message": "mac80211: fix some key comments and code\n\nThe key documentation is slightly out of date, fix\nthat. Also, the list entry in the key struct is no\nlonger used that way, so list_del_init() isn\u0027t\nnecessary any more there.\n\nFinally, ieee80211_key_link() is no longer invoked\nunder RCU read lock, but rather with an appropriate\nstation lock held.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "d2460f4b2fa6dbdeec800414f9cf5b1fc8b71197",
      "tree": "01ce2bf5ec6b29143b3e0003ffbf05812f6bb7c0",
      "parents": [
        "919bbad580445801c22ef6ccbe624551fee652bd"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Mon Jan 03 19:42:24 2011 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Tue Jan 04 14:17:23 2011 -0500"
      },
      "message": "mac80211: add missing synchronize_rcu\n\ncommit ad0e2b5a00dbec303e4682b403bb6703d11dcdb2\nAuthor: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nDate:   Tue Jun 1 10:19:19 2010 +0200\n\n    mac80211: simplify key locking\n\nremoved the synchronization against RCU and thus\nopened a race window where we can use a key for\nTX while it is already freed. Put a synchronisation\ninto the right place to close that window.\n\nReported-by: Jussi Kivilinna \u003cjussi.kivilinna@mbnet.fi\u003e\nCc: stable@kernel.org [2.6.36+]\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "f7e0104c1a4e77cc4f23d5969b0677bdc4f62c63",
      "tree": "6d1622ec2f6152b611867df1b7a0269471655b53",
      "parents": [
        "dbd2fd656f2060abfd3a16257f8b51ec60f6d2ed"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Thu Dec 09 19:49:02 2010 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Mon Dec 13 15:23:29 2010 -0500"
      },
      "message": "mac80211: support separate default keys\n\nAdd support for split default keys (unicast\nand multicast) in mac80211.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "18890d4b89d8507ad09289f6f57a71591c7e9e83",
      "tree": "a183e9035f004f4e7676c59aab5679c74661c961",
      "parents": [
        "b2e253cf300c5e33f49b7dd8b593bfc722177401"
      ],
      "author": {
        "name": "Helmut Schaa",
        "email": "helmut.schaa@googlemail.com",
        "time": "Fri Nov 19 08:11:01 2010 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Mon Nov 22 15:48:51 2010 -0500"
      },
      "message": "mac80211: Disable hw crypto for GTKs on AP VLAN interfaces\n\nWhen using AP VLAN interfaces, each VLAN interface should be in its own\nbroadcast domain. Hostapd achieves this by assigning different GTKs to\ndifferent AP VLAN interfaces.\n\nHowever, mac80211 drivers are not aware of AP VLAN interfaces and as\nsuch mac80211 sends the GTK to the driver in the context of the base AP\nmode interface. This causes problems when multiple AP VLAN interfaces\nare used since the driver will use the same key slot for the different\nGTKs (there\u0027s no way for the driver to distinguish the different GTKs\nfrom different AP VLAN interfaces). Thus, only the clients associated\nto one AP VLAN interface (the one that was created last) can actually\nuse broadcast traffic.\n\nFix this by not programming any GTKs for AP VLAN interfaces into the hw\nbut fall back to using software crypto. The GTK for the underlying AP\ninterface is still sent to the driver.\n\nThat means, broadcast traffic to stations associated to an AP VLAN\ninterface is encrypted in software whereas broadcast traffic to\nstations associated to the non-VLAN AP interface is encrypted in\nhardware.\n\nCc: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: Helmut Schaa \u003chelmut.schaa@googlemail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "e31b82136d1adc7a599b6e99d3321e5831841f5a",
      "tree": "c72d78d4cccfd08587e909c7efe59956f1cbc23e",
      "parents": [
        "53f73c09d64f1fa7d7e6e8b6bb7468d42eddc92d"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Tue Oct 05 19:39:30 2010 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Oct 06 16:30:40 2010 -0400"
      },
      "message": "cfg80211/mac80211: allow per-station GTKs\n\nThis adds API to allow adding per-station GTKs,\nupdates mac80211 to support it, and also allows\ndrivers to remove a key from hwaccel again when\nthis may be necessary due to multiple GTKs.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "46a5ebaf02d69e26ee0f47a0b8d2d9bc619240d4",
      "tree": "77bc5ceee61ce125c4b608d7b979bf8d033ffdcc",
      "parents": [
        "f5521b13880f4f4f612e1d20dd4f565122d16e04"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Wed Sep 15 13:28:15 2010 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Thu Sep 16 15:46:00 2010 -0400"
      },
      "message": "cfg80211/mac80211: use lockdep_assert_held\n\nInstead of using a WARN_ON(!mutex_is_locked())\nuse lockdep_assert_held() which compiles away\ncompletely when lockdep isn\u0027t enabled, and\nalso is a more accurate assertion since it\nchecks that the current thread is holding the\nmutex.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "3ffc2a905b1faae4c0fe39d66f0752c3a4cbb3c7",
      "tree": "d50902e1e171877e4fb034e36c837f16984ab9b4",
      "parents": [
        "7d64b7cc1fc33bab24567903a93f699d11649c0b"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Fri Aug 27 14:26:52 2010 +0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Aug 27 13:27:07 2010 -0400"
      },
      "message": "mac80211: allow vendor specific cipher suites\n\nAllow drivers to specify their own set of cipher\nsuites to advertise vendor-specific ciphers. The\ndriver is then required to implement hardware\ncrypto offload for it.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: Juuso Oikarinen \u003cjuuso.oikarinen@nokia.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "0fb9a9ec27718fbf7fa3153bc94becefb716ceeb",
      "tree": "8f5d6a5fa9f2c6b8b08273dc198d6187d0a70361",
      "parents": [
        "b62177a0aa0521fd07cd7501534c0c3b256ebce6"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Fri Aug 20 16:25:38 2010 -0700"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Aug 25 14:33:17 2010 -0400"
      },
      "message": "net/mac80211: Use wiphy_\u003clevel\u003e\n\nStandardize logging messages from\n\tprintk(KERN_\u003clevel\u003e \"%s: \" fmt , wiphy_name(foo), args);\nto\n\twiphy_\u003clevel\u003e(foo, fmt, args);\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "60ae0f20058d19ada94093dc3ef7ae0737597fba",
      "tree": "2428c7561d8f7927bb79ddc96f0d448070873454",
      "parents": [
        "97359d1235eaf634fe706c9faa6e40181cc95fb8"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Tue Aug 10 09:46:39 2010 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Mon Aug 16 16:45:20 2010 -0400"
      },
      "message": "mac80211: move key tfm setup\n\nThere\u0027s no need to keep separate if statements\nfor setting up the CCMP/AES-CMAC tfm structs;\nmove that into the existing switch statement.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "97359d1235eaf634fe706c9faa6e40181cc95fb8",
      "tree": "5799455c94622eaa6a4fb065bd3b5c350bb705e0",
      "parents": [
        "915a824e30c503157c38115eb6a85f60bb653738"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Tue Aug 10 09:46:38 2010 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Mon Aug 16 16:45:11 2010 -0400"
      },
      "message": "mac80211: use cipher suite selectors\n\nCurrently, mac80211 translates the cfg80211\ncipher suite selectors into ALG_* values.\nThat isn\u0027t all too useful, and some drivers\nbenefit from the distinction between WEP40\nand WEP104 as well. Therefore, convert it\nall to use the cipher suite selectors.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nAcked-by: Gertjan van Wingerde \u003cgwingerde@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "1ac62ba7c985109868a18d959986425148481f47",
      "tree": "35504e08e075978f7dcdd791bdfa2fab132b778a",
      "parents": [
        "a85d7cca1204f2dba86d2f61693f0fe8c48f0fa5"
      ],
      "author": {
        "name": "Ben Hutchings",
        "email": "ben@decadent.org.uk",
        "time": "Sun Aug 01 17:37:03 2010 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Mon Aug 16 15:26:38 2010 -0400"
      },
      "message": "mac80211: Don\u0027t squash error codes in key setup functions\n\nieee80211_add_key() currently returns -ENOMEM in case of any error,\nincluding a missing crypto algorithm.  Change ieee80211_key_alloc()\nand ieee80211_aes_{key_setup_encrypt,cmac_key_setup}() to encode\nerrors with ERR_PTR() rather than returning NULL, and change\nieee80211_add_key() accordingly.\n\nCompile-tested only.\n\nReported-by: Marcin Owsiany \u003cporridge@debian.org\u003e\nSigned-off-by: Ben Hutchings \u003cben@decadent.org.uk\u003e\nAcked-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "32162a4dab0e6a4ca7f886a01173b5f9b80843be",
      "tree": "a8337e9b9788b787c13241ec9a9642527d5aad6a",
      "parents": [
        "1b2fb7dc71c1f8f97663c2da84fa1c8183588474"
      ],
      "author": {
        "name": "Jouni Malinen",
        "email": "j@w1.fi",
        "time": "Mon Jul 26 15:52:03 2010 -0700"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Tue Jul 27 14:59:58 2010 -0400"
      },
      "message": "mac80211: Fix key freeing to handle unlinked keys\n\nKey locking simplification removed key-\u003esdata !\u003d NULL verification from\nieee80211_key_free(). While that is fine for most use cases, there is one\npath where this function can be called with an unlinked key (i.e.,\nkey-\u003esdata \u003d\u003d NULL \u0026\u0026 key-\u003elocal \u003d\u003d NULL). This results in a NULL pointer\ndereference with the current implementation. This is known to happen at\nleast with FT protocol when wpa_supplicant tries to configure the key\nbefore association.\n\nAvoid the issue by passing in the local pointer to\nieee80211_key_free(). In addition, do not clear the key from hw_accel\nor debugfs if it has not yet been added. At least the hw_accel one could\ntrigger another NULL pointer dereference.\n\nSigned-off-by: Jouni Malinen \u003cj@w1.fi\u003e\nReviewed-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "9190252c952a33efa1ceff4ef35188f8a27b81cb",
      "tree": "f6c7473c919e7a3f0ff7c1b6543da44f8c338d02",
      "parents": [
        "05e48e8e437148298f4673e1efe81f9ead5f41d7"
      ],
      "author": {
        "name": "Jouni Malinen",
        "email": "jouni.malinen@atheros.com",
        "time": "Fri Jun 11 10:27:33 2010 -0700"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Tue Jun 15 16:00:49 2010 -0400"
      },
      "message": "mac80211: Use a separate CCMP PN receive counter for management frames\n\nWhen management frame protection (IEEE 802.11w) is used, we must use a\nseparate counter for tracking received CCMP packet number for the\nmanagement frames. The previously used NUM_RX_DATA_QUEUESth queue was\nshared with data frames when QoS was not used and that can cause\nproblems in detecting replays incorrectly for robust management frames.\nAdd a new counter just for robust management frames to avoid this issue.\n\nSigned-off-by: Jouni Malinen \u003cjouni.malinen@atheros.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "ad0e2b5a00dbec303e4682b403bb6703d11dcdb2",
      "tree": "b7aeb06a284af0cfb4aa1de840592478b373f554",
      "parents": [
        "efe4c457a1d4e56840c42bf2e409dc04e8ad4304"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Tue Jun 01 10:19:19 2010 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Thu Jun 03 14:10:46 2010 -0400"
      },
      "message": "mac80211: simplify key locking\n\nSince I recently made station management able\nto sleep, I can now rework key management as\nwell; since it will no longer need a spinlock\nand can also use a mutex instead, a bunch of\ncode to allow drivers\u0027 set_key to sleep while\nkey management is protected by a spinlock can\nnow be removed.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "3dc3fc52ea1537f5f37ab301d2b1468a0e79988f",
      "tree": "1d958b8f26d09c26ff4e3b05c4126e75c8f799da",
      "parents": [
        "617f3d0d71e2eae4d8d475cefe9363b140e52083"
      ],
      "author": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Mon May 24 13:36:37 2010 -0400"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Mon May 24 14:59:27 2010 -0400"
      },
      "message": "Revert \"ath9k: Group Key fix for VAPs\"\n\nThis reverts commit 03ceedea972a82d343fa5c2528b3952fa9e615d5.\n\nThis patch was reported to cause a regression in which connectivity is\nlost and cannot be reestablished after a suspend/resume cycle.\n\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "3b51cc996e81d8a113416d8094fa4a88f8360a51",
      "tree": "e75b98b228bb4e456c30673fcc4b56ffa1d09cf5",
      "parents": [
        "c68ed255265968c3948fa2678bf59d15c471b055",
        "672724403b42da1d276c6cf811e8e34d15efd964"
      ],
      "author": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Apr 23 14:43:45 2010 -0400"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Apr 23 14:43:45 2010 -0400"
      },
      "message": "Merge branch \u0027master\u0027 into for-davem\n\nConflicts:\n\tdrivers/net/wireless/ath/ath9k/phy.c\n\tdrivers/net/wireless/iwlwifi/iwl-6000.c\n\tdrivers/net/wireless/iwlwifi/iwl-debugfs.c\n"
    },
    {
      "commit": "03ceedea972a82d343fa5c2528b3952fa9e615d5",
      "tree": "7b46f62e4fd82e969bc1cea1999249d25234e330",
      "parents": [
        "e8958330190c57c0d32bee88b64a12de2f58059f"
      ],
      "author": {
        "name": "Daniel Yingqiang Ma",
        "email": "yma.cool@gmail.com",
        "time": "Tue Apr 13 15:12:07 2010 +0800"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Tue Apr 20 11:50:51 2010 -0400"
      },
      "message": "ath9k: Group Key fix for VAPs\n\nWhen I set up multiple VAPs with ath9k, I encountered an issue that\nthe traffic may be lost after a while.\n\nThe detailed phenomenon is\n1. After a while the clients connected to one of these VAPs will get\ninto a state that no broadcast/multicast packets can be transfered\nsuccessfully while the unicast packets can be transfered normally.\n2. Minutes latter the unitcast packets transfer will fail as well,\nbecause the ARP entry is expired and it can\u0027t be freshed due to the\nbroadcast trouble.\n\nIt\u0027s caused by the group key overwritten and someone discussed this\nissue in ath9k-devel maillist before, but haven\u0027t work out a fix yet.\n\nI referred the method in madwifi, and made a patch for ath9k.\nThe method is to set the high bit of the sender(AP)\u0027s address, and\nassociated that mac and the group key. It requires the hardware\nsupports multicast frame key search. It seems true for AR9160.\n\nNot sure whether it\u0027s the correct way to fix this issue. But it seems\nto work in my test. The patch is attached, feel free to revise it.\n\nSigned-off-by: Daniel Yingqiang ma \u003cyma.cool@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "9607e6b66a0d25ca63b70d54a4283fa13d8f7c9d",
      "tree": "706cb2c2db2df69fa446eb3848b27107b67f2d25",
      "parents": [
        "d30506e0357e5448c7d38bb3739c451dbe4c174e"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Wed Dec 23 13:15:31 2009 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Mon Dec 28 16:54:49 2009 -0500"
      },
      "message": "mac80211: add ieee80211_sdata_running\n\nInstead of always using netif_running(sdata-\u003edev)\nuse ieee80211_sdata_running(sdata) now which is\njust an inline containing netif_running() for now.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "12375ef933fa8271396ed0c1e318cb1bd2e2689d",
      "tree": "b05ccc4573cb8f0a1b89edeeae7e6c5805f75f67",
      "parents": [
        "47846c9b0c10808d9337d2e7d09361f3e0a0a71a"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Wed Nov 25 20:30:31 2009 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Mon Dec 21 18:38:54 2009 -0500"
      },
      "message": "mac80211: trace interface name\n\nIt\u0027s not all that useful to have the vif/sdata pointer,\nwe\u0027d rather refer to the interfaces by their name.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "abe60632f311d515b082b450504ee24006023951",
      "tree": "a51fc3b135fa8a31cc0d7953be43502ecc6433c6",
      "parents": [
        "15920d8afc87861672e16fa95ae2764b065d6dd3"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Wed Nov 25 17:46:18 2009 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Mon Dec 21 18:38:51 2009 -0500"
      },
      "message": "mac80211: make station management completely depend on vif\n\nThe station management currently uses the virtual\ninterface, but you cannot add the same station to\nmultiple virtual interfaces if you\u0027re communicating\nwith it in multiple ways.\n\nThis restriction should be lifted so that in the\nfuture we can, for instance, support bluetooth 3\nwith an access point that mac80211 is already\nassociated to.\n\nWe can do that by requiring all sta_info_get users\nto provide the virtual interface and making the RX\ncode aware that an address may match more than one\nstation struct. Thanks to the previous patches this\none isn\u0027t all that large and except for the RX and\nTX status paths changes has low complexity.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "523d2f6982136d332c9b7dd00e9e16da1091f060",
      "tree": "b2bd70e0e6c5ffe285a2464003fde157d7bbdc7b",
      "parents": [
        "8cdb045632e5ee22854538619ac6f150eb0a4894"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Wed Jul 01 21:26:43 2009 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Mon Aug 17 13:38:34 2009 -0400"
      },
      "message": "mac80211: fix todo lock\n\nThe key todo lock can be taken from different locks\nthat require it to be _bh to avoid lock inversion\ndue to (soft)irqs.\n\nThis should fix the two problems reported by Bob and\nGabor:\nhttp://mid.gmane.org/20090619113049.GB18956@hash.localnet\nhttp://mid.gmane.org/4A3FA376.8020307@openwrt.org\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nCc: Bob Copeland \u003cme@bobcopeland.com\u003e\nCc: Gabor Juhos \u003cjuhosg@openwrt.org\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "9f26a952210e44691f784b77bf1f83a500d63f58",
      "tree": "a11a5ab475cc8cfa61362e57b6b6c4e018d21996",
      "parents": [
        "cc65965cbb24d2ca2bb70f26cac9d7243349e7e3"
      ],
      "author": {
        "name": "Jouni Malinen",
        "email": "jouni.malinen@atheros.com",
        "time": "Fri May 15 12:38:32 2009 +0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed May 20 14:46:25 2009 -0400"
      },
      "message": "nl80211: Validate NL80211_ATTR_KEY_SEQ length\n\nValidate RSC (NL80211_ATTR_KEY_SEQ) length in nl80211/cfg80211 instead\nof having to do this in all the drivers.\n\nSigned-off-by: Jouni Malinen \u003cjouni.malinen@atheros.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "faa8fdc85347cc76d87b43ea718785661c54f656",
      "tree": "d6a2bad74310885e8f0836791c93070d243b6b2c",
      "parents": [
        "3f77316c6b99f596bfbf72c0542f47f7230b702e"
      ],
      "author": {
        "name": "Jouni Malinen",
        "email": "jouni.malinen@atheros.com",
        "time": "Mon May 11 21:57:58 2009 +0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed May 13 15:44:39 2009 -0400"
      },
      "message": "nl80211: Add RSC configuration for new keys\n\nWhen setting a key with NL80211_CMD_NEW_KEY, we should allow the key\nsequence number (RSC) to be set in order to allow replay protection to\nwork correctly for group keys. This patch documents this use for\nnl80211 and adds the couple of missing pieces in nl80211/cfg80211 and\nmac80211 to support this. In addition, WEXT SIOCSIWENCODEEXT compat\nprocessing in cfg80211 is extended to handle the RSC (this was already\nspecified in WEXT, but just not implemented in cfg80211/mac80211).\n\nSigned-off-by: Jouni Malinen \u003cjouni.malinen@atheros.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "2448798133d747ad339e57099e32a1d1e68aca1c",
      "tree": "ee09385f5dca9e243c38f5f888baa02605423bd7",
      "parents": [
        "2d0ddec5b2b859f06116f631fc0ffe94fbceb556"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Thu Apr 23 18:52:52 2009 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed May 06 15:14:37 2009 -0400"
      },
      "message": "mac80211: add driver ops wrappers\n\nIn order to later add tracing or verifications to the driver\ncalls mac80211 makes, this patch adds static inline wrappers\nfor all operations.\n\nAll calls are now written as\n\n\tdrv_\u003cop\u003e(local, ...);\n\ninstead of\n\n\tlocal-\u003eops-\u003e\u003cop\u003e(\u0026local-\u003ehw, ...);\n\nWhere necessary, the wrappers also do existence checking and\nreturn default values as appropriate.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "469002983fc90c2ff0959e2b03335c0fe2e4d5a9",
      "tree": "fdcf78dcdaeadba897abd86d39d0275e236803b3",
      "parents": [
        "96f5e66e8a79810e2982cdcfa28e554f3d97da21"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Sun Feb 15 12:44:28 2009 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Feb 27 14:51:42 2009 -0500"
      },
      "message": "mac80211: split IBSS/managed code\n\nThis patch splits out the ibss code and data from managed (station) mode.\nThe reason to do this is to better separate the state machines, and have\nthe code be contained better so it gets easier to determine what exactly\na given change will affect, that in turn makes it easier to understand.\n\nThis is quite some churn, especially because I split sdata-\u003eu.sta into\nsdata-\u003eu.mgd and sdata-\u003eu.ibss, but I think it\u0027s easier to maintain that\nway. I\u0027ve also shuffled around some code -- null function sending is only\napplicable to managed interfaces so put that into that file, some other\nfunctions are needed from various places so put them into util, and also\nrearranged the prototypes in ieee80211_i.h accordingly.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "3cfcf6ac6d69dc290e96416731eea5c88ac7d426",
      "tree": "35bc626e2e3f7c37a7eb50c1f057adb4830eccc6",
      "parents": [
        "765cb46a3fc856245ea68a7c961ac87c77e4ae2d"
      ],
      "author": {
        "name": "Jouni Malinen",
        "email": "j@w1.fi",
        "time": "Thu Jan 08 13:32:02 2009 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Thu Jan 29 16:00:03 2009 -0500"
      },
      "message": "mac80211: 802.11w - Use BIP (AES-128-CMAC)\n\nAdd mechanism for managing BIP keys (IGTK) and integrate BIP into the\nTX/RX paths.\n\nSigned-off-by: Jouni Malinen \u003cj@w1.fi\u003e\nAcked-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "dc822b5db479dc0178d5c04cbb656dad0b6564fb",
      "tree": "f06d09fb4d70830ce1489f4589cb03a491833955",
      "parents": [
        "b3093664c931aa06fc50da42e25b3b6dc307a915"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Mon Dec 29 12:55:09 2008 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Thu Jan 29 15:59:42 2009 -0500"
      },
      "message": "mac80211: clean up set_key callback\n\nThe set_key callback now seems rather odd, passing a MAC address\ninstead of a station struct, and a local address instead of a\nvif struct. Change that.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nAcked-by: Bob Copeland \u003cme@bobcopeland.com\u003e [ath5k]\nAcked-by: Ivo van Doorn \u003civdoorn@gmail.com\u003e [rt2x00]\nAcked-by: Christian Lamparter \u003cchunkeey@web.de\u003e [p54]\nTested-by: Kalle Valo \u003ckalle.valo@nokia.com\u003e [iwl3945]\nTested-by: Samuel Ortiz \u003csamuel@sortiz.org\u003e [iwl3945]\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "0c68ae2605dbcf67414d8d1f19af93be44b355fb",
      "tree": "19175d53668f5358d346929e5db01d8fe41cb2aa",
      "parents": [
        "dd45c9cf687682c9ce256ab14bd8914db77410bb"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Mon Oct 27 15:56:10 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Oct 27 17:06:16 2008 -0700"
      },
      "message": "mac80211: convert to %pM away from print_mac\n\nAlso remove a few stray DECLARE_MAC_BUF that were no longer\nused at all.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "76708dee382a69b2f9d0e50f413f99fefb2dc509",
      "tree": "ce1b8014520c08641423a0842d03eace38da0c4e",
      "parents": [
        "417bd25ac4c6f76c8aafe8a584f3620f4a936b72"
      ],
      "author": {
        "name": "Felix Fietkau",
        "email": "nbd@openwrt.org",
        "time": "Sun Oct 05 18:02:48 2008 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Mon Oct 06 18:14:57 2008 -0400"
      },
      "message": "mac80211: free up 2 bytes in skb-\u003ecb\n\nFree up 2 bytes in skb-\u003ecb to be used for multi-rate retry later.\nMove iv_len and icv_len initialization into key alloc.\n\nSigned-off-by: Felix Fietkau \u003cnbd@openwrt.org\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "17741cdc264e4d768167766a252210e201c1519a",
      "tree": "72c0e697af29a40c03bce002b529c3951d34a3b7",
      "parents": [
        "8aa21e6fd703cb3fed66ac07dcbcb861f00cf6d6"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Thu Sep 11 00:02:02 2008 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Mon Sep 15 16:48:23 2008 -0400"
      },
      "message": "mac80211: share STA information with driver\n\nThis patch changes mac80211 to share some more data about\nstations with drivers. Should help iwlwifi and ath9k when\n they get around to updating, and might also help with\nimplementing rate control algorithms without internals.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nCc: Sujith Manoharan \u003cSujith.Manoharan@atheros.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "05c914fe330fa8e1cc67870dc0d3809dfd96c107",
      "tree": "df53bcab47335f3361c09478d6b1447b7d298536",
      "parents": [
        "96dd22ac06b0dbfb069fdf530c72046a941e9694"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Thu Sep 11 00:01:58 2008 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Mon Sep 15 16:48:23 2008 -0400"
      },
      "message": "mac80211: use nl80211 interface types\n\nThere\u0027s really no reason for mac80211 to be using its\nown interface type defines. Use the nl80211 types and\nsimplify the configuration code a bit: there\u0027s no need\nto translate them any more now.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "1b63ba8a86c85524a8d7e5953b314ce71ebcb9c9",
      "tree": "fe3dc41cbb47ae12b7c3faf6a88b097349e50d5a",
      "parents": [
        "e35c3269edba151e1c703d87068a28ce2cd65bb0",
        "d420895efb259a78dda50f95289571faa6e10e41"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jun 28 01:19:40 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jun 28 01:19:40 2008 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\n\tdrivers/net/wireless/iwlwifi/iwl4965-base.c\n"
    },
    {
      "commit": "00eb7fe77eb455f807c396f9917f0f623d4c84bb",
      "tree": "ce67292589f9c387ff31203db36cb220202a7ee7",
      "parents": [
        "5f4a6fae46a214c4dce3bd63a6219a5f1c818c78"
      ],
      "author": {
        "name": "Emmanuel Grumbach",
        "email": "emmanuel.grumbach@intel.com",
        "time": "Thu Jun 26 12:13:46 2008 +0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Jun 27 14:49:52 2008 -0400"
      },
      "message": "mac80211: fix an oops in several failure paths in key allocation\n\nThis patch fixes an oops in several failure paths in key allocation. This\nOops occurs when freeing a key that has not been linked yet, so the\nkey-\u003esdata is not set.\n\nSigned-off-by: Emmanuel Grumbach \u003cemmanuel.grumbach@intel.com\u003e\nSigned-off-by: Tomas Winkler \u003ctomas.winkler@intel.com\u003e\nAcked-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "07346f81e87d6e4cca7ae9adfa711d0c61c87b56",
      "tree": "237450c49843e0e19afc79356240a891da64d9fa",
      "parents": [
        "3434fbd39862d471c92b66c28cd449deea8e9f90"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Sat May 03 01:02:02 2008 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed May 14 16:29:34 2008 -0400"
      },
      "message": "mac80211: proper STA info locking\n\nAs discussed earlier, we can unify locking in struct sta_info\nand use just a single spinlock protecting all members of the\nstructure that need protection. Many don\u0027t, but one of the\nespecially bad ones is the \u0027flags\u0027 member that can currently\nbe clobbered when RX and TX is being processed on different\nCPUs at the same time.\n\nBecause having four spinlocks for different, mostly exclusive\nparts of a single structure is overkill, this patch also kills\nthe ampdu and mesh plink spinlocks and uses just a single one\nfor everything. Because none of the spinlocks are nested, this\nis safe.\n\nIt remains to be seen whether or not we should make the sta\nflags use atomic bit operations instead, for now though this\nis a safe thing and using atomic operations instead will be\nvery simple using the new static inline functions this patch\nintroduces for accessing sta-\u003eflags.\n\nSince spin_lock_bh() is used with this lock, there shouldn\u0027t\nbe any contention even if aggregation is enabled at around the\nsame time as both requires frame transmission/reception which\nis in a bh context.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nCc: Tomas Winkler \u003ctomasw@gmail.com\u003e\nCc: Ron Rindjunsky \u003cron.rindjunsky@intel.com\u003e\nCc: Luis Carlos Cobo \u003cluisca@cozybit.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "c6adbd2158fee972adcc6232de5e2ef375f1f782",
      "tree": "5bd5392cddcc6ebdb044faa2c06f3e7d71244148",
      "parents": [
        "988c0f723d0b1abb399e6e71d8bf3f8bf1949a70"
      ],
      "author": {
        "name": "Ivo van Doorn",
        "email": "ivdoorn@gmail.com",
        "time": "Thu Apr 17 21:11:18 2008 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed May 07 15:02:11 2008 -0400"
      },
      "message": "mac80211: Add IEEE80211_KEY_FLAG_PAIRWISE\n\nThis adds a new flag to the ieee80211_key_conf structure.\nThis flag will inform the driver the key is pairwise rather then\na shared key.\n\nThis is important for drivers who support both types of keys,\nand need to be informed which type of key this is. Alternative\nwould be drivers checking the address argument of set_key(),\nbut it will be safer when mac80211 is more explicit.\n\nSigned-off-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "245cbe7a65f3e17999de276ea1c84538f3a7451e",
      "tree": "68cb786f942886c781e027ce80fc682c1e9ac033",
      "parents": [
        "b16bd15c379410f2aa47837aa4a0de5712856ad5"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Sun Apr 13 10:43:50 2008 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Apr 16 15:59:57 2008 -0400"
      },
      "message": "mac80211: fix key todo list order\n\nWhen we add multiple todo entries, we rely on them being executed\nmostly in the right order, especially when a key is being replaced.\nBut when a default key is replaced, the todo list order will differ\nfrom the order when the key being replaced is not a default key, so\nproblems will happen. Hence, just move each todo item to the end of\nthe list when it is added so we can in the other code ensure that\nhw accel for a key will be disabled before it is enabled for the\nreplacement.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "b16bd15c379410f2aa47837aa4a0de5712856ad5",
      "tree": "fd391bb12b146aaf001ae169a4c98f7088299edd",
      "parents": [
        "6b914c521687ae6cb8923c7235fd69b7bc027703"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Fri Apr 11 21:40:35 2008 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Apr 16 15:59:57 2008 -0400"
      },
      "message": "mac80211: fix spinlock recursion\n\nWhen STAs are expired, we need to hold the sta_lock. Using\nthe same lock for keys too would then mean we\u0027d need another\nkey free function, and that\u0027ll just lead to confusion, so just\nuse a new spinlock for all key lists.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "3a245766901a9dfdc3f53457a7954b369b50f281",
      "tree": "33bc4ef4dfb1bdf0eec46d320fd4333f55dffaf8",
      "parents": [
        "51e8b885902fc8cc2ded48322ad9402bbcff23fe"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Wed Apr 09 16:45:37 2008 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Apr 16 14:53:22 2008 -0400"
      },
      "message": "mac80211: fix key hwaccel race\n\nThe previous key locking patch left a small race: it would be possible\nto add a key and take the interface down before the key todo is run so\nthat hwaccel for that key is enabled on an interface that is down. Avoid\nthis by running the todo list when an interface is brought up or down.\n\nThis patch also fixes a small bug: before this change, a few functions\nused the key list without the lock that protects it.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "3b96766f0e643f52ae19e134664df6730c737e87",
      "tree": "b1707d94a14c9777f09b1aab33970e7741190d4c",
      "parents": [
        "7d1559f1737d5ca27b267b0392015f42b3bbe2fa"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Tue Apr 08 17:56:52 2008 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Tue Apr 08 16:44:45 2008 -0400"
      },
      "message": "mac80211: fix key vs. sta locking problems\n\nUp to now, key manipulation is supposed to run under RTNL to\navoid concurrent manipulations and also allow the set_key()\nhardware callback to sleep. This is not feasible because STA\nstructs are rcu-protected and thus a lot of operations there\ncannot take the RTNL. Also, key references are rcu-protected\nso we cannot do things atomically.\n\nThis patch changes key locking completely:\n * key operations are now atomic\n * hardware crypto offload is enabled and disabled from\n   a workqueue, due to that key freeing is also delayed\n * debugfs code is also run from a workqueue\n * keys reference STAs (and vice versa!) so during STA\n   unlink the STAs key reference is removed but not the\n   keys STA reference, to avoid races key todo work is\n   run before STA destruction.\n * fewer STA operations now need the RTNL which was\n   required due to key operations\n\nThis fixes the locking problems lockdep pointed out and also\nmakes things more light-weight because the rtnl isn\u0027t required\nas much.\n\nNote that the key todo lock/key mutex are global locks, this\nis not required, of course, they could be per-hardware instead.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "dc6676b7f2c2072ec05254aaca32e99f87a8a417",
      "tree": "6caf7e007063f9ae6a16fdcb1912bf72d31237c2",
      "parents": [
        "4f6fab472c4c7c21d577f85fabec7628d4a05637"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Mon Mar 31 19:23:03 2008 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Tue Apr 01 17:14:10 2008 -0400"
      },
      "message": "mac80211: sta_info_flush() fixes\n\nWhen the IBSS code tries to flush the STA list, it does so in\nan atomic context. Flushing isn\u0027t safe there, however, and\nrequires the RTNL, so we need to defer it to a workqueue.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "96c46546e28282a743b97f26e94c7565350898b7",
      "tree": "38a12aadd7c0fd3c30fafeae8f136d86881338a3",
      "parents": [
        "38968d096b9f497e7ec4590b6b80eb8679e3646a"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Sat Mar 01 19:32:18 2008 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Thu Mar 06 15:30:47 2008 -0500"
      },
      "message": "mac80211: always insert key into list\n\nToday I hit one of my new WARN_ONs in the mac80211 code because\na key wasn\u0027t being freed correctly. After wondering for a while\nI finally tracked it to the fact that STA keys aren\u0027t added to\nthe per-sdata key list correctly, they are supposed to always be\non that list, not just for default keys. This patch fixes that.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "dbbea6713d6096cd1c411cb453a6b71292c78b33",
      "tree": "6e824acc2b680350c4c4ebebaccf32b9b01c0e96",
      "parents": [
        "7c8076bd8be3fd2a9a94f9687cf39e3505f0e4ec"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Tue Feb 26 14:34:06 2008 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Thu Mar 06 15:30:47 2008 -0500"
      },
      "message": "mac80211: add documentation book\n\nQuite a while ago I started this book. The required kernel-doc\npatches have since gone into the tree so it is now possible to\nbuild the book in mainline.\n\nThe actual documentation is still rather incomplete and not all\nthings are linked into the book, but this enables us to edit\nthe documentation collaboratively, hopefully driver authors can\nadd documentation based on their experience with mac80211.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "d0709a65181beb787ef3f58cfe45536a2bb254c8",
      "tree": "29e5f36583b0e0a3f11b291347e57672eab41dad",
      "parents": [
        "5cf121c3cdb955583bf0c5d28c992b7968a4aa1a"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Mon Feb 25 16:27:46 2008 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Thu Mar 06 15:30:46 2008 -0500"
      },
      "message": "mac80211: RCU-ify STA info structure access\n\nThis makes access to the STA hash table/list use RCU to protect\nagainst freeing of items. However, it\u0027s not a true RCU, the\ncopy step is missing: whenever somebody changes a STA item it\nis simply updated. This is an existing race condition that is\nnow somewhat understandable.\n\nThis patch also fixes the race key freeing vs. STA destruction\nby making sure that sta_info_destroy() is always called under\nRTNL and frees the key.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "e4861829072c61883114c64a3af61f305a789ff0",
      "tree": "54dbd81bae2f1d21576b2a88badf113567d0efc0",
      "parents": [
        "db4d1169d0b893bfb7923b6526748fe2c5a7373f"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Wed Feb 27 13:39:00 2008 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Feb 29 15:42:07 2008 -0500"
      },
      "message": "mac80211: fix key replacing, hw accel\n\nEven though I thought about it a lot and had also tested it, some\nof my recent changes in the key code broke replacing keys, making\nthe kernel oops because a key is removed from a list while not on\nit.\n\nThis patch fixes that using the list as an indication whether or\nnot the key is on it (an empty list means it\u0027s not on any list.)\n\nAlso, this patch fixes hw accel enabling, the check for not doing\nhw accel when the interface is down was lost and is restored by\nthis.\n\nAdditionally, move adding the key to the list into the function\n__ieee80211_key_replace() for more consistency.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "db4d1169d0b893bfb7923b6526748fe2c5a7373f",
      "tree": "ebd5ac06685bacc069b162b31f99b33c6191b4c3",
      "parents": [
        "6f48422a29714ed92f6136d9e7d3ff39c75607d7"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Mon Feb 25 16:27:45 2008 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Feb 29 15:42:04 2008 -0500"
      },
      "message": "mac80211: split ieee80211_key_alloc/free\n\nIn order to RCU-ify sta_info, we need to be able to allocate\na key without linking it to an sdata/sta structure (because\nallocation cannot be done in an rcu critical section). This\npatch splits up ieee80211_key_alloc() and updates all users\nappropriately.\n\nWhile at it, this patch fixes a number of race conditions\nsuch as finally making key replacement atomic, unfortunately\nat the expense of more complex code.\n\nNote that this patch documents /existing/ bugs with sta info\nand key interaction, there is currently a race condition\nwhen a sta info is freed without holding the RTNL. This will\nfinally be fixed by a followup patch.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "51fb61e76d952e6bc2fbdd9f0d38425fbab1cf31",
      "tree": "09618b395aae1b91fbc8dec7ea9397a9654a9f0f",
      "parents": [
        "32bfd35d4b63bd63de4bb0d791ef049c3c868726"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Wed Dec 19 01:31:27 2007 +0100"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 15:09:37 2008 -0800"
      },
      "message": "mac80211: move interface type to vif structure\n\nDrivers that support mixed AP/STA operation may well need to\nknow the type of a virtual interface when iterating over them.\nThe easiest way to support that is to move the interface type\nvariable into the vif structure.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "628a140ba033ef201706a8c7e767c8a0c0f8326c",
      "tree": "7aae1dbc152bf9180fee3d238f224c2f4b1741b5",
      "parents": [
        "640845a5632390eaa9357cd818646c8f0ee3d47e"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Wed Sep 26 17:53:17 2007 +0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:54:18 2007 -0700"
      },
      "message": "[MAC80211]: remove ALG_NONE\n\nThis \"algorithm\" is used only internally and is not useful.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nCc: Michael Buesch \u003cmb@bu3sch.de\u003e\nAcked-by: Zhu Yi \u003cyi.zhu@intel.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ea49c359f36d5b40bf033c45a08332cb73777aa2",
      "tree": "07d99bbaca451af42d633e63c9c0c20d4f2d6f79",
      "parents": [
        "f97df02e23269c7650869f6192e809f8ac1a4b39"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Tue Sep 18 17:29:21 2007 -0400"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:53:00 2007 -0700"
      },
      "message": "[PATCH] mac80211: remove crypto algorithm typedef\n\nThe typedef is not required, we can just use \"enum ieee80211_key_alg\"\ninstead of \"ieee80211_key_alg\"\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: Michael Wu \u003cflamingice@sourmilk.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "0795af5729b18218767fab27c44b1384f72dc9ad",
      "tree": "67c16df84aa6ec219340b8ea1b5cfb0e8150a216",
      "parents": [
        "95ea36275f3c9a1d3d04c217b4b576c657c4e70e"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Wed Oct 03 17:59:30 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:51:42 2007 -0700"
      },
      "message": "[NET]: Introduce and use print_mac() and DECLARE_MAC_BUF()\n\nThis is nicer than the MAC_FMT stuff.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6a7664d451e7014b1a6828e50ccb3308d0b84816",
      "tree": "01c319d33d8c5b61d1946e6c76e27ec9dd44329b",
      "parents": [
        "7ac1bd6aecc92cfe6ec11891819dd4c26f2f7879"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Fri Sep 14 11:10:25 2007 -0400"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:49:29 2007 -0700"
      },
      "message": "[MAC80211]: remove HW_KEY_IDX_INVALID\n\nThis patch makes the mac80211/driver interface rely only on the\nIEEE80211_TXCTL_DO_NOT_ENCRYPT flag to signal to the driver whether\na frame should be encrypted or not, since mac80211 internally no\nlonger relies on HW_KEY_IDX_INVALID either this removes it, changes\nthe key index to be a u8 in all places and makes the full range of\nthe value available to drivers.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nAcked-by: Michael Wu \u003cflamingice@sourmilk.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c15a205070fac9fab0d9d4642b9342677b67f933",
      "tree": "7f795dee7b941f7bc4079c9a4edc84808346e1ba",
      "parents": [
        "7848ba7d7a010ccb265617fc2bc053e2bdf06f48"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Fri Sep 14 11:10:25 2007 -0400"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:49:28 2007 -0700"
      },
      "message": "[MAC80211]: remove set_key_idx callback\n\nNo existing drivers use this callback, hence there\u0027s no telling\nhow it might be used. In fact, it is unlikely to be of much use\nas-is because the default key index isn\u0027t something that the\ndriver can do much with without knowing which interface it was\nfor etc. And if it needs the key index for the transmitted frame,\nit can get it by keeping a reference to the key_conf structure\nand looking it up by hw_key_idx.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nAcked-by: Michael Wu \u003cflamingice@sourmilk.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d4e46a3d9869563c6210b01bb651c40cbe65da80",
      "tree": "d37626d8077c0eaca35ec41e705c62af2a324847",
      "parents": [
        "c29b9b9b0235d56e5602f61ed38702dd376aae20"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Fri Sep 14 11:10:24 2007 -0400"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:49:26 2007 -0700"
      },
      "message": "[MAC80211]: fix race conditions with keys\n\nDuring receive processing, we select the key long before using it and\nbecause there\u0027s no locking it is possible that we kfree() the key\nafter having selected it but before using it for crypto operations.\nObviously, this is bad.\n\nSecondly, during transmit processing, there are two possible races: We\nhave a similar race between select_key() and using it for encryption,\nbut we also have a race here between select_key() and hardware\nencryption (both when a key is removed.)\n\nThis patch solves these issues by using RCU: when a key is to be freed,\nwe first remove the pointer from the appropriate places (sdata-\u003ekeys,\nsdata-\u003edefault_key, sta-\u003ekey) using rcu_assign_pointer() and then\nsynchronize_rcu(). Then, we can safely kfree() the key and remove it\nfrom the hardware. There\u0027s a window here where the hardware may still\nbe using it for decryption, but we can\u0027t work around that without having\ntwo hardware callbacks, one to disable the key for RX and one to disable\nit for TX; but the worst thing that will happen is that we receive a\npacket decrypted that we don\u0027t find a key for any more and then drop it.\n\nWhen we add a key, we first need to upload it to the hardware and then,\nusing rcu_assign_pointer() again, link it into our structures.\n\nIn the code using keys (TX/RX paths) we use rcu_dereference() to get the\nkey and enclose the whole tx/rx section in a rcu_read_lock() ...\nrcu_read_unlock() block. Because we\u0027ve uploaded the key to hardware\nbefore linking it into internal structures, we can guarantee that it is\nvalid once get to into tx().\n\nOne possible race condition remains, however: when we have hardware\nacceleration enabled and the driver shuts down the queues, we end up\nqueueing the frame. If now somebody removes the key, the key will be\nremoved from hwaccel and then then driver will be asked to encrypt the\nframe with a key index that has been removed. Hence, drivers will need\nto be aware that the hw_key_index they are passed might not be under\nall circumstances. Most drivers will, however, simply ignore that\ncondition and encrypt the frame with the selected key anyway, this\nonly results in a frame being encrypted with a wrong key or dropped\n(rightfully) because the key was not valid. There isn\u0027t much we can\ndo about it unless we want to walk the pending frame queue every time\na key is removed and remove all frames that used it.\n\nThis race condition, however, will most likely be solved once we add\nmultiqueue support to mac80211 because then frames will be queued\nfurther up the stack instead of after being processed.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nAcked-by: Michael Wu \u003cflamingice@sourmilk.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "11a843b7e16062389c53ba393c7913956e034eb2",
      "tree": "7f557a55220a0de38f0eafe1a5147487ec39b790",
      "parents": [
        "3aefaa3294193c931b20a574f718efee6baf27d4"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Tue Aug 28 17:01:55 2007 -0400"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:48:53 2007 -0700"
      },
      "message": "[MAC80211]: rework key handling\n\nThis moves all the key handling code out from ieee80211_ioctl.c\ninto key.c and also does the following changes including documentation\nupdates in mac80211.h:\n\n 1) Turn off hardware acceleration for keys when the interface\n    is down. This is necessary because otherwise monitor\n    interfaces could be decrypting frames for other interfaces\n    that are down at the moment. Also, it should go some way\n    towards better suspend/resume support, in any case the\n    routines used here could be used for that as well.\n    Additionally, this makes the driver interface nicer, keys\n    for a specific local MAC address are only ever present\n    while an interface with that MAC address is enabled.\n\n 2) Change driver set_key() callback interface to allow only\n    return values of -ENOSPC, -EOPNOTSUPP and 0, warn on all\n    other return values. This allows debugging the stack when\n    a driver notices it\u0027s handed a key while it is down.\n\n 3) Invert the flag meaning to KEY_FLAG_UPLOADED_TO_HARDWARE.\n\n 4) Remove REMOVE_ALL_KEYS command as it isn\u0027t used nor do we\n    want to use it, we\u0027ll use DISABLE_KEY for each key. It is\n    hard to use REMOVE_ALL_KEYS because we can handle multiple\n    virtual interfaces with different key configuration, so we\u0027d\n    have to keep track of a lot of state for this and that isn\u0027t\n    worth it.\n\n 5) Warn when disabling a key fails, it musn\u0027t.\n\n 6) Remove IEEE80211_HW_NO_TKIP_WMM_HWACCEL in favour of per-key\n    IEEE80211_KEY_FLAG_WMM_STA to let driver sort it out itself.\n\n 7) Tell driver that a (non-WEP) key is used only for transmission\n    by using an all-zeroes station MAC address when configuring.\n\n 8) Change the set_key() callback to have access to the local MAC\n    address the key is being added for.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nAcked-by: Michael Wu \u003cflamingice@sourmilk.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8f37171a6243a8370211a1e86d58be683ccf01f0",
      "tree": "3ca7a5eeed89cbd9ea6d86ddffa0a30ed2b4a3c6",
      "parents": [
        "8f20fc24986a083228823d9b68adca20714b254e"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Tue Aug 28 17:01:54 2007 -0400"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:48:51 2007 -0700"
      },
      "message": "[MAC80211]: remove krefs for keys\n\nthey aren\u0027t really refcounted anyway\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nAcked-by: Michael Wu \u003cflamingice@sourmilk.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8f20fc24986a083228823d9b68adca20714b254e",
      "tree": "b5d7638b913649c7a181d6703ccd72e35ca06de9",
      "parents": [
        "13262ffd4902805acad2618c12b41fcaa6c50791"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Tue Aug 28 17:01:54 2007 -0400"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:48:51 2007 -0700"
      },
      "message": "[MAC80211]: embed key conf in key, fix driver interface\n\nThis patch embeds the struct ieee80211_key_conf into struct ieee80211_key\nand thus avoids allocations and having data present twice.\n\nThis required some more changes:\n 1) The removal of the IEEE80211_KEY_DEFAULT_TX_KEY key flag.\n    This flag isn\u0027t used by drivers nor should it be since\n    we have a set_key_idx() callback. Maybe that callback needs\n    to be extended to include the key conf, but only a driver that\n    requires it will tell.\n 2) The removal of the IEEE80211_KEY_DEFAULT_WEP_ONLY key flag.\n    This flag is global, so it shouldn\u0027t be passed in the key\n    conf structure. Pass it to the function instead.\n\nAlso, this patch removes the AID parameter to the set_key() callback\nbecause it is currently unused and the hardware currently cannot know\nabout the AID anyway. I suspect this was used with some hardware that\nactually selected the AID itself, but that functionality was removed.\n\nAdditionally, I\u0027ve removed the ALG_NULL key algorithm since we have\nALG_NONE.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nAcked-by: Michael Wu \u003cflamingice@sourmilk.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1f5a7e47ae58cc23c623c09f1c9d97b7a8cf6344",
      "tree": "bccb233ff41737569c0dd397d80405f5402aafa5",
      "parents": [
        "75c35aa4e2931b22e8e95fa2d6380eebac229f30"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Fri Jul 27 15:43:23 2007 +0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:47:34 2007 -0700"
      },
      "message": "[MAC80211]: split out some key functions from ieee80211.c\n\ninto a new file key.c which doesn\u0027t have much code right now but\nit makes ieee80211.c easier to read.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: Jiri Benc \u003cjbenc@suse.cz\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    }
  ]
}
