)]}'
{
  "log": [
    {
      "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"
    }
  ]
}
