)]}'
{
  "log": [
    {
      "commit": "a69eee4988752c7196677958b4ed8f4c2b28499a",
      "tree": "b676b8a05e10f5003d17091fc7085fad29910702",
      "parents": [
        "3e766fd41ddc31c47ec5b2840c6a45803d35ff40"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 24 07:45:43 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 24 07:45:43 2010 -0700"
      },
      "message": "Revert \"ath9k: Group Key fix for VAPs\"\n\nThis reverts commit 03ceedea972a82d343fa5c2528b3952fa9e615d5, since it\nbreaks resume from suspend-to-ram on Rafael\u0027s Acer Ferrari One.\nNetworkManager thinks everything is ok, but it can\u0027t connect to the AP\nto get an IP address after the resume.\n\nIn fact, it even breaks resume for non-ath9k chipsets: reverting it also\nfixes Rafael\u0027s Toshiba Protege R500 with the iwlagn driver.  As Johannes\nsays:\n\n  \"Indeed, this patch needs to be reverted. That mac80211 change is wrong\n   and completely unnecessary.\"\n\nReported-and-requested-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nCc: Daniel Yingqiang Ma \u003cyma.cool@gmail.com\u003e\nCc: John W. Linville \u003clinville@tuxdriver.com\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\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"
    }
  ]
}
