)]}'
{
  "log": [
    {
      "commit": "2e48928d8a0f38c1b5c81eb3f1294de8a6382c68",
      "tree": "a752efac53a5bc036528d65625e990c0d4291ff7",
      "parents": [
        "e081685c1bbe8da37c7f61726fdb783ff277f14f"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Wed Oct 20 10:16:58 2010 -0700"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Mon Nov 15 13:24:06 2010 -0500"
      },
      "message": "rfkill: remove dead code\n\nThe following code is defined but never used.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "5f05647dd81c11a6a165ccc8f0c1370b16f3bcb0",
      "tree": "7851ef1c93aa1aba7ef327ca4b75fd35e6d10f29",
      "parents": [
        "02f36038c568111ad4fc433f6fa760ff5e38fab4",
        "ec37a48d1d16c30b655ac5280209edf52a6775d4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 23 11:47:02 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 23 11:47:02 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1699 commits)\n  bnx2/bnx2x: Unsupported Ethtool operations should return -EINVAL.\n  vlan: Calling vlan_hwaccel_do_receive() is always valid.\n  tproxy: use the interface primary IP address as a default value for --on-ip\n  tproxy: added IPv6 support to the socket match\n  cxgb3: function namespace cleanup\n  tproxy: added IPv6 support to the TPROXY target\n  tproxy: added IPv6 socket lookup function to nf_tproxy_core\n  be2net: Changes to use only priority codes allowed by f/w\n  tproxy: allow non-local binds of IPv6 sockets if IP_TRANSPARENT is enabled\n  tproxy: added tproxy sockopt interface in the IPV6 layer\n  tproxy: added udp6_lib_lookup function\n  tproxy: added const specifiers to udp lookup functions\n  tproxy: split off ipv6 defragmentation to a separate module\n  l2tp: small cleanup\n  nf_nat: restrict ICMP translation for embedded header\n  can: mcp251x: fix generation of error frames\n  can: mcp251x: fix endless loop in interrupt handler if CANINTF_MERRF is set\n  can-raw: add msg_flags to distinguish local traffic\n  9p: client code cleanup\n  rds: make local functions/variables static\n  ...\n\nFix up conflicts in net/core/dev.c, drivers/net/pcmcia/smc91c92_cs.c and\ndrivers/net/wireless/ath/ath9k/debug.c as per David\n"
    },
    {
      "commit": "6038f373a3dc1f1c26496e60b6c40b164716f07e",
      "tree": "a0d3bbd026eea41b9fc36b8c722cbaf56cd9f825",
      "parents": [
        "1ec5584e3edf9c4bf2c88c846534d19cf986ba11"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sun Aug 15 18:52:59 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Fri Oct 15 15:53:27 2010 +0200"
      },
      "message": "llseek: automatically add .llseek fop\n\nAll file_operations should get a .llseek operation so we can make\nnonseekable_open the default for future file operations without a\n.llseek pointer.\n\nThe three cases that we can automatically detect are no_llseek, seq_lseek\nand default_llseek. For cases where we can we can automatically prove that\nthe file offset is always ignored, we use noop_llseek, which maintains\nthe current behavior of not returning an error from a seek.\n\nNew drivers should normally not use noop_llseek but instead use no_llseek\nand call nonseekable_open at open time.  Existing drivers can be converted\nto do the same when the maintainer knows for certain that no user code\nrelies on calling seek on the device file.\n\nThe generated code is often incorrectly indented and right now contains\ncomments that clarify for each added line why a specific variant was\nchosen. In the version that gets submitted upstream, the comments will\nbe gone and I will manually fix the indentation, because there does not\nseem to be a way to do that using coccinelle.\n\nSome amount of new code is currently sitting in linux-next that should get\nthe same modifications, which I will do at the end of the merge window.\n\nMany thanks to Julia Lawall for helping me learn to write a semantic\npatch that does all this.\n\n\u003d\u003d\u003d\u003d\u003d begin semantic patch \u003d\u003d\u003d\u003d\u003d\n// This adds an llseek\u003d method to all file operations,\n// as a preparation for making no_llseek the default.\n//\n// The rules are\n// - use no_llseek explicitly if we do nonseekable_open\n// - use seq_lseek for sequential files\n// - use default_llseek if we know we access f_pos\n// - use noop_llseek if we know we don\u0027t access f_pos,\n//   but we still want to allow users to call lseek\n//\n@ open1 exists @\nidentifier nested_open;\n@@\nnested_open(...)\n{\n\u003c+...\nnonseekable_open(...)\n...+\u003e\n}\n\n@ open exists@\nidentifier open_f;\nidentifier i, f;\nidentifier open1.nested_open;\n@@\nint open_f(struct inode *i, struct file *f)\n{\n\u003c+...\n(\nnonseekable_open(...)\n|\nnested_open(...)\n)\n...+\u003e\n}\n\n@ read disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n   *off \u003d E\n|\n   *off +\u003d E\n|\n   func(..., off, ...)\n|\n   E \u003d *off\n)\n...+\u003e\n}\n\n@ read_no_fpos disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ write @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n  *off \u003d E\n|\n  *off +\u003d E\n|\n  func(..., off, ...)\n|\n  E \u003d *off\n)\n...+\u003e\n}\n\n@ write_no_fpos @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ fops0 @\nidentifier fops;\n@@\nstruct file_operations fops \u003d {\n ...\n};\n\n@ has_llseek depends on fops0 @\nidentifier fops0.fops;\nidentifier llseek_f;\n@@\nstruct file_operations fops \u003d {\n...\n .llseek \u003d llseek_f,\n...\n};\n\n@ has_read depends on fops0 @\nidentifier fops0.fops;\nidentifier read_f;\n@@\nstruct file_operations fops \u003d {\n...\n .read \u003d read_f,\n...\n};\n\n@ has_write depends on fops0 @\nidentifier fops0.fops;\nidentifier write_f;\n@@\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n...\n};\n\n@ has_open depends on fops0 @\nidentifier fops0.fops;\nidentifier open_f;\n@@\nstruct file_operations fops \u003d {\n...\n .open \u003d open_f,\n...\n};\n\n// use no_llseek if we call nonseekable_open\n////////////////////////////////////////////\n@ nonseekable1 depends on !has_llseek \u0026\u0026 has_open @\nidentifier fops0.fops;\nidentifier nso ~\u003d \"nonseekable_open\";\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d nso, ...\n+.llseek \u003d no_llseek, /* nonseekable */\n};\n\n@ nonseekable2 depends on !has_llseek @\nidentifier fops0.fops;\nidentifier open.open_f;\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d open_f, ...\n+.llseek \u003d no_llseek, /* open uses nonseekable */\n};\n\n// use seq_lseek for sequential files\n/////////////////////////////////////\n@ seq depends on !has_llseek @\nidentifier fops0.fops;\nidentifier sr ~\u003d \"seq_read\";\n@@\nstruct file_operations fops \u003d {\n...  .read \u003d sr, ...\n+.llseek \u003d seq_lseek, /* we have seq_read */\n};\n\n// use default_llseek if there is a readdir\n///////////////////////////////////////////\n@ fops1 depends on !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier readdir_e;\n@@\n// any other fop is used that changes pos\nstruct file_operations fops \u003d {\n... .readdir \u003d readdir_e, ...\n+.llseek \u003d default_llseek, /* readdir is present */\n};\n\n// use default_llseek if at least one of read/write touches f_pos\n/////////////////////////////////////////////////////////////////\n@ fops2 depends on !fops1 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read.read_f;\n@@\n// read fops use offset\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d default_llseek, /* read accesses f_pos */\n};\n\n@ fops3 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+\t.llseek \u003d default_llseek, /* write accesses f_pos */\n};\n\n// Use noop_llseek if neither read nor write accesses f_pos\n///////////////////////////////////////////////////////////\n\n@ fops4 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !fops3 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\nidentifier write_no_fpos.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n .read \u003d read_f,\n...\n+.llseek \u003d noop_llseek, /* read and write both use no f_pos */\n};\n\n@ depends on has_write \u0026\u0026 !has_read \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write_no_fpos.write_f;\n@@\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+.llseek \u003d noop_llseek, /* write uses no f_pos */\n};\n\n@ depends on has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\n@@\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d noop_llseek, /* read uses no f_pos */\n};\n\n@ depends on !has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\n@@\nstruct file_operations fops \u003d {\n...\n+.llseek \u003d noop_llseek, /* no read or write fn */\n};\n\u003d\u003d\u003d\u003d\u003d End semantic patch \u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "a02cec2155fbea457eca8881870fd2de1a4c4c76",
      "tree": "cfbfc4b32bfe10f9cd803d46c31607d13f1858f5",
      "parents": [
        "6a08d194ee40806e0ccd5f36ed768e64cbfc979f"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Sep 22 20:43:57 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 23 14:33:39 2010 -0700"
      },
      "message": "net: return operator cleanup\n\nChange \"return (EXPR);\" to \"return EXPR;\"\n\nreturn is not a function, parentheses are not required.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "871039f02f8ec4ab2e5e9010718caa8e085786f1",
      "tree": "f0d2b3127fc48c862967d68c46c2d46668137515",
      "parents": [
        "e4077e018b5ead3de9951fc01d8bf12eeeeeefed",
        "4a1032faac94ebbf647460ae3e06fc21146eb280"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Apr 11 14:53:53 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Apr 11 14:53:53 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/net/stmmac/stmmac_main.c\n\tdrivers/net/wireless/wl12xx/wl1271_cmd.c\n\tdrivers/net/wireless/wl12xx/wl1271_main.c\n\tdrivers/net/wireless/wl12xx/wl1271_spi.c\n\tnet/core/ethtool.c\n\tnet/mac80211/scan.c\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": "819bfecc4fc6b6e5a793f719a45b7146ce423b79",
      "tree": "a7e646bf8032c29d7a1187301cdfa0d5b726473b",
      "parents": [
        "09a08cff3d13315c948e6aee5cf912f8f1db54e7"
      ],
      "author": {
        "name": "florian@mickler.org",
        "email": "florian@mickler.org",
        "time": "Sat Mar 13 13:31:05 2010 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Mar 19 15:48:25 2010 -0400"
      },
      "message": "rename new rfkill sysfs knobs\n\nThis patch renames the (never officially released) sysfs-knobs\n\"blocked_hw\" and \"blocked_sw\" to \"hard\" and \"soft\", as the hardware vs\nsoftware conotation is misleading.\n\nIt also gets rid of not needed locks around u32-read-access.\n\nSigned-off-by: Florian Mickler \u003cflorian@mickler.org\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "6c26361e4be3cf0dad7083e38ca52001a987e3e6",
      "tree": "4638fff76e14e4a8ab6de035a8e3ee47cb7bfae1",
      "parents": [
        "69c86373c6ea1149aa559e6088362d58d8ec8835"
      ],
      "author": {
        "name": "florian@mickler.org",
        "email": "florian@mickler.org",
        "time": "Fri Feb 26 12:01:34 2010 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Mar 10 17:09:34 2010 -0500"
      },
      "message": "enhance sysfs rfkill interface\n\nThis commit introduces two new sysfs knobs.\n\n/sys/class/rfkill/rfkill[0-9]+/blocked_hw: (ro)\n\thardblock kill state\n/sys/class/rfkill/rfkill[0-9]+/blocked_sw: (rw)\n\tsoftblock kill state\n\nSigned-off-by: Florian Mickler \u003cflorian@mickler.org\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "3082a2b7b1af1b1508c1c3fa589566064f926f40",
      "tree": "9f0a57f92e3aadf10c033685485f2d1b50569b78",
      "parents": [
        "6510b8917948283005a125c8337d3312a8a0561c"
      ],
      "author": {
        "name": "Matthew Garrett",
        "email": "mjg@redhat.com",
        "time": "Tue Feb 16 16:36:25 2010 -0500"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Tue Mar 02 14:28:49 2010 -0500"
      },
      "message": "rfkill: Add support for KEY_RFKILL\n\nAdd support for handling KEY_RFKILL in the rfkill input module. This\nsimply toggles the state of all rfkill devices. The comment in rfkill.h\nis also updated to reflect that RFKILL_TYPE_ALL may be used inside the\nkernel.\n\nSigned-off-by: Matthew Garrett \u003cmjg@redhat.com\u003e\nAcked-by: Marcel Holtmann \u003cmarcel@holtmann.org\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "02f7f1793023bd8e5e277ad349f6f43f8c284fb0",
      "tree": "20ddc6990b49b2bdae0bf6c324348922e1c30201",
      "parents": [
        "16cec43da50c4b4702653ca710549fd3457a4e6c"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Thu Dec 03 20:45:07 2009 -0800"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Mon Dec 07 16:51:23 2009 -0500"
      },
      "message": "net/rfkill/core.c: work around gcc-4.0.2 silliness\n\nnet/rfkill/core.c: In function \u0027rfkill_type_show\u0027:\nnet/rfkill/core.c:610: warning: control may reach end of non-void function \u0027rfkill_get_type_str\u0027 being inlined\n\nA gcc bug, but simple enough to squish.\n\nCc: John W. Linville \u003clinville@tuxdriver.com\u003e\nCc: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "9b963e5d0e01461099a40117b05480f24b63381f",
      "tree": "4756d554e37bf4ab7202f2c564cbe629af98b576",
      "parents": [
        "3b8626ba01a8a745a3fdf22dd347edd708b0af13",
        "5fdd4baef6195a1f2960e901c8877e2105f832ca"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 29 00:57:15 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 29 00:57:15 2009 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/ieee802154/fakehard.c\n\tdrivers/net/e1000e/ich8lan.c\n\tdrivers/net/e1000e/phy.c\n\tdrivers/net/netxen/netxen_nic_init.c\n\tdrivers/net/wireless/ath/ath9k/main.c\n"
    },
    {
      "commit": "b5b5150977cdfb7173f4468ccd30f9b4a981b902",
      "tree": "27d477910d630a027c0b447a58ae61b1c57dbca5",
      "parents": [
        "dcfcb256cc23c4436691b0fe677275306699d6a1",
        "45ba564d765d6165330e9bb14a197bdd348c114d"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Nov 23 14:01:47 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Nov 23 14:01:47 2009 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6\n"
    },
    {
      "commit": "45ba564d765d6165330e9bb14a197bdd348c114d",
      "tree": "3f1cb8b5349b04d449e3074da177e6eda82a3257",
      "parents": [
        "54ab040d24904d1fa2c0a6a27936b7c56a4efb24"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Mon Nov 23 11:27:30 2009 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Mon Nov 23 16:23:10 2009 -0500"
      },
      "message": "rfkill: fix miscdev ops\n\nThe /dev/rfkill ops don\u0027t refer to the module,\nso it is possible to unload the module while\nfile descriptors are open. Fix this oversight.\n\nReported-by: Maxim Levitsky \u003cmaximlevitsky@gmail.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "875405a7793e9c35fab33819e7e5df7a98b6064c",
      "tree": "7696916f19a3e69ac06c76bd4ca3124e4360ea50",
      "parents": [
        "0878c3504f92f1bf063d0890a9960d4b9e6c4618"
      ],
      "author": {
        "name": "Marcel Holtmann",
        "email": "marcel@holtmann.org",
        "time": "Wed Nov 18 16:48:01 2009 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Nov 18 17:09:26 2009 -0500"
      },
      "message": "rfkill: Add constant for RFKILL_TYPE_FM radio devices\n\nSigned-off-by: Marcel Holtmann \u003cmarcel@holtmann.org\u003e\nSigned-off-by: Janakiram Sistla \u003cjanakiram.sistla@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "a99bbaf5ee6bad1aca0c88ea65ec6e5373e86184",
      "tree": "2b0314d68b9e0a76e8f4fb60865a1d56e138833a",
      "parents": [
        "5e5027bd26ed4df735d29e66cd5c1c9b5959a587"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sun Oct 04 16:11:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 04 15:05:10 2009 -0700"
      },
      "message": "headers: remove sched.h from poll.h\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3ad201496badddd8e1cda87ee6d29e8b3b8e1279",
      "tree": "2dae92ff7b85a46939ecb7d9effd2d5f36d5e8bb",
      "parents": [
        "87cdb9894b9367237f25e5a4c381eb8e594e782b"
      ],
      "author": {
        "name": "Tomas Winkler",
        "email": "tomas.winkler@intel.com",
        "time": "Sun Aug 02 02:36:49 2009 +0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Tue Aug 04 16:44:23 2009 -0400"
      },
      "message": "rfkill: add the GPS radio type\n\nAlthoug GPS is a technology w/o transmitting radio\nand thus not a primary candidate for rfkill switch,\nrfkill gives unified interface point for devices with\nwireless technology.\n\nThe input key is not supplied as it is too be deprecated.\n\nCc: johannes@sipsolutions.net\nSigned-off-by: Tomas Winkler \u003ctomas.winkler@intel.com\u003e\nAcked-by: Marcel Holtmann \u003cmarcel@holtmann.org\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "74d154189d597b91da4322996dbf4f5c3d1544ab",
      "tree": "6f09861b5e2f875d2d8ea2127b16add9103221c6",
      "parents": [
        "5a6338db37885af06760d40cad589316e48431e9",
        "ffafa60d496f80c250f2ae0340ae94434c0b0b4d"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 23 19:03:51 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 23 19:03:51 2009 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/net/wireless/iwmc3200wifi/netdev.c\n\tnet/wireless/scan.c\n"
    },
    {
      "commit": "48ab3578a65c5168ecaaa3b21292b643b7bcc2d5",
      "tree": "ab99e6ee3e1f27b7457809cafba3b9fb38c35cdb",
      "parents": [
        "8ef86c7bfac5b44529b73b84bc50d3cf574bfb4b"
      ],
      "author": {
        "name": "Alan Jenkins",
        "email": "alan-jenkins@tuffmail.co.uk",
        "time": "Sun Jul 12 17:03:13 2009 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Tue Jul 21 12:07:38 2009 -0400"
      },
      "message": "rfkill: fix rfkill_set_states() to set the hw state\n\nThe point of this function is to set the software and hardware state at\nthe same time.  When I tried to use it, I found it was only setting the\nsoftware state.\n\nSigned-off-by: Alan Jenkins \u003calan-jenkins@tuffmail.co.uk\u003e\nReviewed-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "f54c142725ad2ba33c3ee627873cb6966bf05447",
      "tree": "4bd86d879222e94c5ee175355242b8a04990334b",
      "parents": [
        "e2e414d92397c366396d13f627a98a20be92e509"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Fri Jul 10 21:41:39 2009 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Tue Jul 21 12:07:37 2009 -0400"
      },
      "message": "rfkill: allow toggling soft state in sysfs again\n\nApparently there actually _are_ tools that try to set\nthis in sysfs even though it wasn\u0027t supposed to be used\nthis way without claiming first. Guess what: now that\nI\u0027ve cleaned it all up it doesn\u0027t matter and we can\nsimply allow setting the soft-block state in sysfs.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nTested-By: Darren Salt \u003clinux@youmustbejoking.demon.co.uk\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "1be491fca12ff599c37ceaf7e9042ebee9f0068e",
      "tree": "96033bde1ed8561201c42574ec716f7cfd033697",
      "parents": [
        "3355443ad7601991affa5992b0d53870335af765"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Sun Jul 05 14:51:06 2009 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Jul 10 15:02:29 2009 -0400"
      },
      "message": "rfkill: prep for rfkill API changes\n\nWe\u0027ve designed the /dev/rfkill API in a way that we\ncan increase the event struct by adding members at\nthe end, should it become necessary. To validate the\nevents, userspace and the kernel need to have the\nproper event size to check for -- when reading from\nthe other end they need to verify that it\u0027s at least\nversion 1 of the event API, with the current struct\nsize, so define a constant for that and make the\ncode a little more \u0027future proof\u0027.\n\nNot that I expect that we\u0027ll have to change the event\nsize any time soon, but it\u0027s better to write the code\nin a way that lends itself to extending.\n\nDue to the current size of the event struct, the code\nis currently equivalent, but should the event struct\never need to be increased the new code might not need\nchanging.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "464902e812025792c9e33e19e1555c343672d5cf",
      "tree": "cc243de464a7935291c52ac93d6bd0a24c6c08c5",
      "parents": [
        "96e9cfeb9692b0bc6e03f9b6f9cb3c67a40b76d1"
      ],
      "author": {
        "name": "Alan Jenkins",
        "email": "alan-jenkins@tuffmail.co.uk",
        "time": "Tue Jun 16 14:54:04 2009 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Jun 19 11:50:18 2009 -0400"
      },
      "message": "rfkill: export persistent attribute in sysfs\n\nThis information allows userspace to implement a hybrid policy where\nit can store the rfkill soft-blocked state in platform non-volatile\nstorage if available, and if not then file-based storage can be used.\n\nSome users prefer platform non-volatile storage because of the behaviour\nwhen dual-booting multiple versions of Linux, or if the rfkill setting\nis changed in the BIOS setting screens, or if the BIOS responds to\nwireless-toggle hotkeys itself before the relevant platform driver has\nbeen loaded.\n\nSigned-off-by: Alan Jenkins \u003calan-jenkins@tuffmail.co.uk\u003e\nAcked-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "06d5caf47ef4fbd9efdceae33293c42778cb7b0c",
      "tree": "51bce5f2f9f7aef903c464ac68c80da6f83e2c53",
      "parents": [
        "7fa20a7f60df0afceafbb8197b5d110507f42c72"
      ],
      "author": {
        "name": "Alan Jenkins",
        "email": "alan-jenkins@tuffmail.co.uk",
        "time": "Tue Jun 16 15:39:51 2009 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Jun 19 11:50:17 2009 -0400"
      },
      "message": "rfkill: don\u0027t restore software blocked state on persistent devices\n\nThe setting of the \"persistent\" flag is also made more explicit using\na new rfkill_init_sw_state() function, instead of special-casing\nrfkill_set_sw_state() when it is called before registration.\n\nSuspend is a bit of a corner case so we try to get away without adding\nanother hack to rfkill-input - it\u0027s going to be removed soon.\nIf the state does change over suspend, users will simply have to prod\nrfkill-input twice in order to toggle the state.\n\nUserspace policy agents will be able to implement a more consistent user\nexperience.  For example, they can avoid the above problem if they\ntoggle devices individually.  Then there would be no \"global state\"\nto get out of sync.\n\nCurrently there are only two rfkill drivers with persistent soft-blocked\nstate.  thinkpad-acpi already checks the software state on resume.\neeepc-laptop will require modification.\n\nSigned-off-by: Alan Jenkins \u003calan-jenkins@tuffmail.co.uk\u003e\nCC: Marcel Holtmann \u003cmarcel@holtmann.org\u003e\nAcked-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "7fa20a7f60df0afceafbb8197b5d110507f42c72",
      "tree": "4f27f607618bc48c9b8c83f4169af70abac913d3",
      "parents": [
        "f0214843ba23d9bf6dc6b8ad2c6ee27b60f0322e"
      ],
      "author": {
        "name": "Alan Jenkins",
        "email": "alan-jenkins@tuffmail.co.uk",
        "time": "Tue Jun 16 14:53:24 2009 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Jun 19 11:50:17 2009 -0400"
      },
      "message": "rfkill: rfkill_set_block() when suspended nitpick\n\nIf we return after fiddling with the state, userspace will see the\nwrong state and rfkill_set_sw_state() won\u0027t work until the next call to\nrfkill_set_block().  At the moment rfkill_set_block() will always be\ncalled from rfkill_resume(), but this will change in future.\n\nAlso, presumably the point of this test is to avoid bothering devices\nwhich may be suspended.  If we don\u0027t want to call set_block(), we\nprobably don\u0027t want to call query() either :-).\n\nSigned-off-by: Alan Jenkins \u003calan-jenkins@tuffmail.co.uk\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "908209c160da8ecb68052111972b7a21310eac3f",
      "tree": "a888e1a29212e88d7182fa3f438c6f348362c432",
      "parents": [
        "869fb3a46cd18235e6f176328a2d8085ffe2c704"
      ],
      "author": {
        "name": "Alan Jenkins",
        "email": "alan-jenkins@tuffmail.co.uk",
        "time": "Mon Jun 08 13:12:23 2009 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Jun 10 13:28:37 2009 -0400"
      },
      "message": "rfkill: don\u0027t impose global states on resume (just restore the previous states)\n\nOnce rfkill-input is disabled, the \"global\" states will only be used as\ndefault initial states.\n\nSince the states will always be the same after resume, we shouldn\u0027t\ngenerate events on resume.\n\nSigned-off-by: Alan Jenkins \u003calan-jenkins@tuffmail.co.uk\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "b3fa1329eaf2a7b97124dacf5b663fd51346ac19",
      "tree": "93fd6a76af00568e8317e3e4f084135379ec6c25",
      "parents": [
        "8f77f3849cc3ae2d6df9301785a3d316ea7d7ee1"
      ],
      "author": {
        "name": "Alan Jenkins",
        "email": "alan-jenkins@tuffmail.co.uk",
        "time": "Mon Jun 08 13:27:27 2009 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Jun 10 13:28:37 2009 -0400"
      },
      "message": "rfkill: remove set_global_sw_state\n\nrfkill_set_global_sw_state() (previously rfkill_set_default()) will no\nlonger be exported by the rewritten rfkill core.\n\nInstead, platform drivers which can provide persistent soft-rfkill state\nacross power-down/reboot should indicate their initial state by calling\nrfkill_set_sw_state() before registration.  Otherwise, they will be\ninitialized to a default value during registration by a set_block call.\n\nWe remove existing calls to rfkill_set_sw_state() which happen before\nregistration, since these had no effect in the old model.  If these\ndrivers do have persistent state, the calls can be put back (subject\nto testing :-).  This affects hp-wmi and acer-wmi.\n\nDrivers with persistent state will affect the global state only if\nrfkill-input is enabled.  This is required, otherwise booting with\nwireless soft-blocked and pressing the wireless-toggle key once would\nhave no apparent effect.  This special case will be removed in future\nalong with rfkill-input, in favour of a more flexible userspace daemon\n(see Documentation/feature-removal-schedule.txt).\n\nNow rfkill_global_states[n].def is only used to preserve global states\nover EPO, it is renamed to \".sav\".\n\nSigned-off-by: Alan Jenkins \u003calan-jenkins@tuffmail.co.uk\u003e\nAcked-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "b91d0e364077fad401454699143ad6a78902c20a",
      "tree": "9cff43a299e31011b67eea1e58673a11ad284d1d",
      "parents": [
        "f41f3f373dd72344c65d801d6381fe83ef3a2c54"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Mon Jun 08 08:14:28 2009 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Jun 10 13:27:54 2009 -0400"
      },
      "message": "rfkill: remove input Kconfig\n\nNow that we added the ioctl, there\u0027s no need to ask\nthe user to configure this. We will keep it enabled\nfor now, and eventually swap the default to n. Also\nlet embedded users select it only if they need it.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "207ee1621722876bb79828689582bf77fd1be200",
      "tree": "93ea2cf095ef571dd89c2510e5b7f4e5e85e64ae",
      "parents": [
        "9b9c5aaeedfda256ed77094303e2a7242c3290da"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Sun Jun 07 12:26:52 2009 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Jun 10 13:27:54 2009 -0400"
      },
      "message": "rfkill: print events when input handler is disabled/enabled\n\nIt is useful for debugging when we know if something disabled\nthe in-kernel rfkill input handler.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nAcked-by: Marcel Holtmann \u003cmarcel@holtmann.org\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "2ec2c68c11af95075f29e370970eb97c89234e2e",
      "tree": "dd0749b38d54f41f1823a992815971b02b3e489f",
      "parents": [
        "72828b1b3cabecfce4321877aa526a2bd21acf0c"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Wed Jun 03 09:55:29 2009 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Jun 03 14:06:15 2009 -0400"
      },
      "message": "rfkill: always init poll delayed work\n\nThe rfkill core didn\u0027t initialise the poll delayed work\nbecause it assumed that polling was always done by specifying\nthe poll function. cfg80211, however, would like to start\npolling only later, which is a valid use case and easy to\nsupport, so change rfkill to always initialise the poll\ndelayed work and thus allow starting polling by calling the\nrfkill_resume_polling() function after registration.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "6081162e2ed78dfcf149b076b047078ab1445cc2",
      "tree": "aef1cf51ee0a8f77f562defe1fe8ec75812474b7",
      "parents": [
        "7643a2c3fcc13cd6fbd731f214463547383418ae"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Tue Jun 02 13:01:40 2009 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Jun 03 14:06:14 2009 -0400"
      },
      "message": "rfkill: add function to query state\n\nSometimes it is necessary to know how the state is,\nand it is easier to query rfkill than keep track of\nit somewhere else, so add a function for that. This\ncould later be expanded to return hard/soft block,\nbut so far that isn\u0027t necessary.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "c64fb01627e24725d1f9d535e4426475a4415753",
      "tree": "24b7e5caef5b1ddeaf479c98d56b2c38e25fca57",
      "parents": [
        "19d337dff95cbf76edd3ad95c0cee2732c3e1ec5"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Tue Jun 02 13:01:38 2009 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Jun 03 14:06:14 2009 -0400"
      },
      "message": "rfkill: create useful userspace interface\n\nThe new code added by this patch will make rfkill create\na misc character device /dev/rfkill that userspace can use\nto control rfkill soft blocks and get status of devices as\nwell as events when the status changes.\n\nUsing it is very simple -- when you open it you can read\na number of times to get the initial state, and every\nfurther read blocks (you can poll) on getting the next\nevent from the kernel. The same structure you read is\nalso used when writing to it to change the soft block of\na given device, all devices of a given type, or all\ndevices.\n\nThis also makes CONFIG_RFKILL_INPUT selectable again in\norder to be able to test without it present since its\nfunctionality can now be replaced by userspace entirely\nand distros and users may not want the input part of\nrfkill interfering with their userspace code. We will\nalso write a userspace daemon to handle all that and\nconsequently add the input code to the feature removal\nschedule.\n\nIn order to have rfkilld support both kernels with and\nwithout CONFIG_RFKILL_INPUT (or new kernels after its\neventual removal) we also add an ioctl (that only exists\nif rfkill-input is present) to disable rfkill-input.\nIt is not very efficient, but at least gives the correct\nbehaviour in all cases.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nAcked-by: Marcel Holtmann \u003cmarcel@holtmann.org\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "19d337dff95cbf76edd3ad95c0cee2732c3e1ec5",
      "tree": "33326eeb09cb9664cc8427a5dc7cd2b08b5a57c3",
      "parents": [
        "0f6399c4c525b518644a9b09f8d6fb125a418c4d"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Tue Jun 02 13:01:37 2009 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Jun 03 14:06:13 2009 -0400"
      },
      "message": "rfkill: rewrite\n\nThis patch completely rewrites the rfkill core to address\nthe following deficiencies:\n\n * all rfkill drivers need to implement polling where necessary\n   rather than having one central implementation\n\n * updating the rfkill state cannot be done from arbitrary\n   contexts, forcing drivers to use schedule_work and requiring\n   lots of code\n\n * rfkill drivers need to keep track of soft/hard blocked\n   internally -- the core should do this\n\n * the rfkill API has many unexpected quirks, for example being\n   asymmetric wrt. alloc/free and register/unregister\n\n * rfkill can call back into a driver from within a function the\n   driver called -- this is prone to deadlocks and generally\n   should be avoided\n\n * rfkill-input pointlessly is a separate module\n\n * drivers need to #ifdef rfkill functions (unless they want to\n   depend on or select RFKILL) -- rfkill should provide inlines\n   that do nothing if it isn\u0027t compiled in\n\n * the rfkill structure is not opaque -- drivers need to initialise\n   it correctly (lots of sanity checking code required) -- instead\n   force drivers to pass the right variables to rfkill_alloc()\n\n * the documentation is hard to read because it always assumes the\n   reader is completely clueless and contains way TOO MANY CAPS\n\n * the rfkill code needlessly uses a lot of locks and atomic\n   operations in locked sections\n\n * fix LED trigger to actually change the LED when the radio state\n   changes -- this wasn\u0027t done before\n\nTested-by: Alan Jenkins \u003calan-jenkins@tuffmail.co.uk\u003e\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e [thinkpad]\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "aeca78b9b094d00cccca39e9a1055c74ad83ea69",
      "tree": "0eee05db7823a24f35876699f5b75122a28331fd",
      "parents": [
        "0ef9ccdd9ec7f2cf28d0605c216d853687f5291d"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Fri Apr 24 15:26:02 2009 -0700"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed May 06 15:14:40 2009 -0400"
      },
      "message": "net/rfkill/rfkill.c: fix build with CONFIG_RFKILL_LEDS\u003dn\n\nnet/rfkill/rfkill.c: In function \u0027update_rfkill_state\u0027:\nnet/rfkill/rfkill.c:99: error: implicit declaration of function \u0027rfkill_led_trigger\u0027\n\nCaused by\n\n: commit 492301fb5d12e4a77a1010ad2b6f1ed306014123\n: Author: Larry Finger \u003cLarry.Finger@lwfinger.net\u003e\n: Date:   Thu Apr 9 22:14:19 2009 -0500\n:\n:     rfkill: Fix broken rfkill LED in 2.6.30-rc1\n\nCc: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nCc: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nCc: Michael Buesch \u003cmb@bu3sch.de\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Larry Finger \u003cLarry.Finger@lwfinger.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "492301fb5d12e4a77a1010ad2b6f1ed306014123",
      "tree": "ed8432de55f5b3b53fe6f7b113344354a5ce5e3a",
      "parents": [
        "137907287789607f2a2586ad625e7b8c646b3425"
      ],
      "author": {
        "name": "Larry Finger",
        "email": "Larry.Finger@lwfinger.net",
        "time": "Thu Apr 09 22:14:19 2009 -0500"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Apr 22 16:54:45 2009 -0400"
      },
      "message": "rfkill: Fix broken rfkill LED in 2.6.30-rc1\n\nThe rfkill system fails to issue a LED trigger event when the rfkill state\nchanges.\n\nSigned-off-by: Larry Finger \u003cLarry.Finger@lwfinger.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "fd7fbb17bec7b055fafec4d0ae3bfb4ed60cad8b",
      "tree": "7b3c5b8170e9eddd841153eed6cb18fe62c12cd5",
      "parents": [
        "621cac85297de5ba655e3430b007dd2e0da91da6"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Fri Mar 27 14:16:44 2009 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Apr 22 16:54:28 2009 -0400"
      },
      "message": "rfkill-input: remove unused code\n\nThere\u0027s a lot of rfkill-input code that cannot ever be\ncompiled and is useless until somebody needs and tests\nit -- therefore remove it.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "621cac85297de5ba655e3430b007dd2e0da91da6",
      "tree": "6193ecf0966094bb744fb4238191bcab03a3cdef",
      "parents": [
        "c1c6b14b22af0f85d05a70405dc3fba5de840c7b"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Fri Mar 27 14:14:31 2009 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Apr 22 16:54:27 2009 -0400"
      },
      "message": "rfkill: remove user_claim stuff\n\nAlmost all drivers do not support user_claim, so remove it\ncompletely and always report -EOPNOTSUPP to userspace. Since\nuserspace cannot really drive rfkill _anyway_ (due to the\nodd restrictions imposed by the documentation) having this\ncode is just pointless.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "f32f8b72e02e851972a0172603104046aa5fec96",
      "tree": "10b286e280816a9202bde24938f69c11abd45347",
      "parents": [
        "939678f81a55c839ae58c9cc3d4ec6d0f60e7dc7"
      ],
      "author": {
        "name": "Simon Holm Thøgersen",
        "email": "odie@cs.aau.dk",
        "time": "Sun Jan 04 17:11:24 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jan 04 17:11:24 2009 -0800"
      },
      "message": "net/rfkill/rfkill.c: fix unused rfkill_led_trigger() warning\n\ncommit 4dec9b807be757780ca3611a959ac22c28d292a7 (\"rfkill: strip pointless\nnotifier chain\") removed the only user of rfkill_led_trigger() that was not\nguarded by #ifdef CONFIG_RFKILL_LEDS. Therefore, move rfkill_led_trigger()\ncompletely inside #ifdef CONFIG_RFKILL_LEDS and avoid the compile time\nwarning:\n\nnet/rfkill/rfkill.c:59: warning: \u0027rfkill_led_trigger\u0027 defined but not used\n\nSigned-off-by: Simon Holm Thøgersen \u003codie@cs.aau.dk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4dec9b807be757780ca3611a959ac22c28d292a7",
      "tree": "10186b2cbdf6930c563917ba40c5f63b014ed45f",
      "parents": [
        "6fb532527e2592f82ec07508df2e44f6c7ceff12"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Wed Dec 10 17:48:48 2008 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Dec 12 14:45:25 2008 -0500"
      },
      "message": "rfkill: strip pointless notifier chain\n\nNo users, so no reason to have it.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "24689c8590be6bc0486af665c5ceda6aeff4d53a",
      "tree": "b8e2fe4f8f243941ced77f274a3b30cb99786e84",
      "parents": [
        "f80b5e99c7dac5a9a0d72496cec5075a12cd1476"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Fri Nov 21 20:40:10 2008 -0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Nov 26 09:47:44 2008 -0500"
      },
      "message": "rfkill: always call get_state() hook on resume\n\nWe \"optimize\" away the get_state() hook call on rfkill_toggle_radio\nwhen doing a forced state change.  This means the resume path is not\ncalling get_state() as it should.\n\nCall it manually on the resume handler, as we don\u0027t want to mess with\nthe EPO path by removing the optimization.  This has the added benefit\nof making it explicit that rfkill-\u003estate could have been modified\nbefore we hit the rfkill_toggle_radio() call in the class resume\nhandler.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nCc: Matthew Garrett \u003cmjg59@srcf.ucam.org\u003e\nCc: Alan Jenkins \u003calan-jenkins@tuffmail.co.uk\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "f80b5e99c7dac5a9a0d72496cec5075a12cd1476",
      "tree": "493b11de9639655fbf2a9431f9def759ab3f6a27",
      "parents": [
        "5925d976fbe99859d636e7075e5304625503c5fe"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Fri Nov 21 20:40:09 2008 -0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Nov 26 09:47:43 2008 -0500"
      },
      "message": "rfkill: preserve state across suspend\n\nThe rfkill class API requires that the driver connected to a class\ncall rfkill_force_state() on resume to update the real state of the\nrfkill controller, OR that it provides a get_state() hook.\n\nThis means there is potentially a hidden call in the resume code flow\nthat changes rfkill-\u003estate (i.e. rfkill_force_state()), so the\nprevious state of the transmitter was being lost.\n\nThe simplest and most future-proof way to fix this is to explicitly\nstore the pre-sleep state on the rfkill structure, and restore from\nthat on resume.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nCc: Matthew Garrett \u003cmjg59@srcf.ucam.org\u003e\nCc: Alan Jenkins \u003calan-jenkins@tuffmail.co.uk\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "fb28ad35906af2f042c94e2f9c0f898ef9acfa37",
      "tree": "ee3d535ab38d680b424a857406789f8c28bf5266",
      "parents": [
        "23779897546c1effb546ff89b89803d9d955d517"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Mon Nov 10 13:55:14 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Nov 10 13:55:14 2008 -0800"
      },
      "message": "net: struct device - replace bus_id with dev_name(), dev_set_name()\n\nAcked-by: Marcel Holtmann \u003cmarcel@holtmann.org\u003e\nAcked-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9eeda9abd1faf489f3df9a1f557975f4c8650363",
      "tree": "3e0a58e25b776cfbee193195460324dccb1886c7",
      "parents": [
        "61c9eaf90081cbe6dc4f389e0056bff76eca19ec",
        "4bab0ea1d42dd1927af9df6fbf0003fc00617c50"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 06 22:43:03 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 06 22:43:03 2008 -0800"
      },
      "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/ath5k/base.c\n\tnet/8021q/vlan_core.c\n"
    },
    {
      "commit": "4a9d916717de0aab4313d43817164577255242fb",
      "tree": "504d7b6df2e0998eb2f4df3c6e4a1939d97b1598",
      "parents": [
        "964d2777438bf7687324243d38ade538d9bbfe3c"
      ],
      "author": {
        "name": "Jonathan McDowell",
        "email": "noodles@earth.li",
        "time": "Thu Oct 30 22:46:48 2008 +0000"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Thu Nov 06 16:37:09 2008 -0500"
      },
      "message": "Fix logic error in rfkill_check_duplicity\n\n\u003e I\u0027ll have a prod at why the [hso] rfkill stuff isn\u0027t working next\n\nOk, I believe this is due to the addition of rfkill_check_duplicity in\nrfkill and the fact that test_bit actually returns a negative value\nrather than the postive one expected (which is of course equally true).\nSo when the second WLAN device (the hso device, with the EEE PC WLAN\nbeing the first) comes along rfkill_check_duplicity returns a negative\nvalue and so rfkill_register returns an error. Patch below fixes this\nfor me.\n\nSigned-Off-By: Jonathan McDowell \u003cnoodles@earth.li\u003e\nAcked-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "78236571a538860dc2f0842ff6c7789522eb1e63",
      "tree": "2d5d2d7aecc2350115b6155e7b2250ba10b832dd",
      "parents": [
        "176707997bc3da2c4e32715c35cfebba0334ed68"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Thu Oct 09 18:15:33 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Oct 31 19:00:10 2008 -0400"
      },
      "message": "rfkill: rate-limit rfkill-input workqueue usage (v3)\n\nLimit the number of \"expensive\" rfkill workqueue operations per second, in\norder to not hog system resources too much when faced with a rogue source\nof rfkill input events.\n\nThe old rfkill-input code (before it was refactored) had such a limit in\nplace.  It used to drop new events that were past the rate limit.  This\nbehaviour was not implemented as an anti-DoS measure, but rather as an\nattempt to work around deficiencies in input device drivers which would\nissue multiple KEY_FOO events too soon for a given key FOO (i.e. ones that\ndo not implement mechanical debouncing properly).\n\nHowever, we can\u0027t really expect such issues to be worked around by every\ninput handler out there, and also by every userspace client of input\ndevices.  It is the input device driver\u0027s responsability to do debouncing\ninstead of spamming the input layer with bogus events.\n\nThe new limiter code is focused only on anti-DoS behaviour, and tries to\nnot lose events (instead, it coalesces them when possible).\n\nThe transmitters are updated once every 200ms, maximum.  Care is taken not\nto delay a request to _enter_ rfkill transmitter Emergency Power Off (EPO)\nmode.\n\nIf mistriggered (e.g. by a jiffies counter wrap), the code delays processing\n*once* by 200ms.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nCc: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nCc: Dmitry Torokhov \u003cdtor@mail.ru\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "176707997bc3da2c4e32715c35cfebba0334ed68",
      "tree": "17999628a3586c7bf656c83e61f77b7da0d06e46",
      "parents": [
        "d003922dab6a66027344a787e9846ecf35a706a8"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Thu Oct 09 18:15:32 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Oct 31 19:00:10 2008 -0400"
      },
      "message": "rfkill: honour EPO state when resuming a rfkill controller\n\nrfkill_resume() would always restore the rfkill controller state to its\npre-suspend state.\n\nNow that we know when we are under EPO, kick the rfkill controller to\nSOFT_BLOCKED state instead of to its pre-suspend state when it is resumed\nwhile EPO mode is active.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nCc: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "d003922dab6a66027344a787e9846ecf35a706a8",
      "tree": "1fa27e13eafd7d2cfceaeeb7c70009e29467ccfa",
      "parents": [
        "68d2413bec7e1d97e906eafb05e78d925a5ca128"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Thu Oct 09 21:49:33 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Oct 31 19:00:09 2008 -0400"
      },
      "message": "rfkill: add master_switch_mode and EPO lock to rfkill and rfkill-input\n\nAdd of software-based sanity to rfkill and rfkill-input so that it can\nreproduce what hardware-based EPO switches do, blocking all transmitters\nand locking down any further attempts to unblock them until the switch is\ndeactivated.\n\nrfkill-input is responsible for issuing the EPO control requests, like\nbefore.\n\nWhile an rfkill EPO is active, all transmitters are locked to one of the\nBLOCKED states and all attempts to change that through the rfkill API\n(userspace and kernel) will be either ignored or return -EPERM errors.\n\nThe lock will be released upon receipt of EV_SW SW_RFKILL_ALL ON by\nrfkill-input, or should modular rfkill-input be unloaded.\n\nThis makes rfkill and rfkill-input extend the operation of an existing\nwireless master kill switch to all wireless devices in the system, even\nthose that are not under hardware or firmware control.\n\nSince the above is the expected operational behavior for the master rfkill\nswitch, the EPO lock functionality is not optional.\n\nAlso, extend rfkill-input to allow for three different behaviors when it\nreceives an EV_SW SW_RFKILL_ALL ON input event.  The user can set which\nbehavior he wants through the master_switch_mode parameter:\n\nmaster_switch_mode \u003d 0: EV_SW SW_RFKILL_ALL ON just unlocks rfkill\ncontroller state changes (so that the rfkill userspace and kernel APIs can\nnow be used to change rfkill controller states again), but doesn\u0027t change\nany of their states (so they will all remain blocked).  This is the safest\nmode of operation, as it requires explicit operator action to re-enable a\ntransmitter.\n\nmaster_switch_mode \u003d 1: EV_SW SW_RFKILL_ALL ON causes rfkill-input to\nattempt to restore the system to the state before the last EV_SW\nSW_RFKILL_ALL OFF event, or to the default global states if no EV_SW\nSW_RFKILL_ALL OFF ever happened.   This is the recommended mode of\noperation for laptops.\n\nmaster_switch_mode \u003d 2: tries to unblock all rfkill controllers (i.e.\nenable all transmitters) when an EV_SW SW_RFKILL_ALL ON event is received.\nThis is the default mode of operation, as it mimics the previous behavior\nof rfkill-input.\n\nIn order to implement these features in a clean way, the entire event\nhandling of rfkill-input was refactored into a single worker function.\n\nProtection against input event DoS (repeatedly firing rfkill events for\nrfkill-input to process) was removed during the code refactoring.  It will\nbe added back in a future patch.\n\nNote that with these changes, rfkill-input doesn\u0027t need to explicitly\nhandle any radio types for which KEY_\u003cradio type\u003e or SW_\u003cradio type\u003e events\ndo not exist yet.\n\nCode to handle EV_SW SW_{WLAN,WWAN,BLUETOOTH,WIMAX,...} was added as it\nmight be needed in the future (and its implementation is not that obvious),\nbut is currently #ifdef\u0027d out to avoid wasting resources.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nCc: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nCc: Dmitry Torokhov \u003cdtor@mail.ru\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "68d2413bec7e1d97e906eafb05e78d925a5ca128",
      "tree": "8282f58381f95108bf891739a866bbe089bb4957",
      "parents": [
        "cf4b4aab552f5f658ed400dd0cd41f9ac8aac7c1"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Thu Oct 09 18:15:30 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Oct 31 19:00:09 2008 -0400"
      },
      "message": "rfkill: export global states to rfkill-input\n\nExport the the global switch states to rfkill-input.  This is needed to\nproperly implement KEY_* handling without disregarding the initial state.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nCc: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "cf4b4aab552f5f658ed400dd0cd41f9ac8aac7c1",
      "tree": "ae4d83e4d7b1f2ec868c46e37578128502aadec2",
      "parents": [
        "e8975581f63870be42ff4662b293d1b0c8c21350"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Thu Oct 09 18:15:29 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Oct 31 19:00:08 2008 -0400"
      },
      "message": "rfkill: use killable locks instead of interruptible\n\nApparently, many applications don\u0027t expect to get EAGAIN from fd read/write\noperations, since POSIX doesn\u0027t mandate it.\n\nUse mutex_lock_killable instead of mutex_lock_interruptible, which won\u0027t\ncause issues.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nCc: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "d8b105f900d93bd103c002bf4c923f50f16c5441",
      "tree": "5b7b45e6b00a62b73628045c8120c0b92367b89e",
      "parents": [
        "35961627d3e7a4093eb307d782541700e9addec6"
      ],
      "author": {
        "name": "Dmitry Baryshkov",
        "email": "dbaryshkov@gmail.com",
        "time": "Wed Oct 22 20:52:55 2008 +0400"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Mon Oct 27 17:46:11 2008 -0400"
      },
      "message": "RFKILL: fix input layer initialisation\n\nInitialise correctly last fields, so tasks can be actually executed.\nOn some architectures the initial jiffies value is not zero, so later\nall rfkill incorrectly decides that rfkill_*.last is in future.\n\nSigned-off-by: Dmitry Baryshkov \u003cdbaryshkov@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "56f26f7b78af36d0f048a9403084870d2ffb549f",
      "tree": "0d15550377d5cec7379c76a0158e3536eb5dc94d",
      "parents": [
        "fff11c0c827c88f1bca0e475fcd4d319ff44c0ac"
      ],
      "author": {
        "name": "Geert Uytterhoeven",
        "email": "geert@linux-m68k.org",
        "time": "Mon Oct 13 21:59:03 2008 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 14 10:23:27 2008 -0700"
      },
      "message": "net/rfkill/rfkill-input.c needs \u003clinux/sched.h\u003e\n\nFor some m68k configs, I get:\n\n| net/rfkill/rfkill-input.c: In function \u0027rfkill_start\u0027:\n| net/rfkill/rfkill-input.c:208: error: dereferencing pointer to incomplete type\n\nAs the incomplete type is `struct task_struct\u0027, including \u003clinux/sched.h\u003e fixes\nit.\n\nSigned-off-by: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "417bd25ac4c6f76c8aafe8a584f3620f4a936b72",
      "tree": "7b7b55d715d7121dcba815cd2518608c0a6ec010",
      "parents": [
        "5b5d13afeeee959a74114b73c560d3e243f34a11"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Fri Oct 03 16:58:05 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Mon Oct 06 18:14:57 2008 -0400"
      },
      "message": "rfkill: update LEDs for all state changes\n\nThe LED state was not being updated by rfkill_force_state(), which\nwill cause regressions in wireless drivers that had old-style rfkill\nsupport and are updated to use rfkill_force_state().\n\nThe LED state was not being updated when a change was detected through\nthe rfkill-\u003eget_state() hook, either.\n\nMove the LED trigger update calls into notify_rfkill_state_change(),\nwhere it should have been in the first place.  This takes care of both\nissues above.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nCc: stable@kernel.org\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "bed7aac9416f50425d2200df32bcc9bf248ff8cb",
      "tree": "4471647eb3e15d3afb7eba8642537b96561dff7b",
      "parents": [
        "e35cc4ddcc4c3b11006bcabe8ce28aa7e18da318"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Tue Aug 26 11:58:01 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Mon Sep 15 16:48:25 2008 -0400"
      },
      "message": "rfkill: remove transmitter blocking on suspend\n\nCurrently, rfkill would stand in the way of properly supporting wireless\ndevices that are capable of waking the system up from sleep or hibernation\nwhen they receive a special wireless message.  It would also get in the way\nof mesh devices that need to remain operational even during platform\nsuspend.\n\nTo avoid that, stop trying to block the transmitters on the rfkill class\nsuspend handler.\n\nDrivers that need rfkill\u0027s older behaviour will have to implement it by\nthemselves in their own suspend handling.\n\nDo note that rfkill *will* attempt to restore the transmitter state on\nresume in any situation.  This happens after the driver\u0027s resume method is\ncalled by the suspend core (class devices resume after the devices they are\nattached to have been resumed).\n\nThe following drivers need to check if they need to explicitly block\ntheir transmitters in their own suspend handlers (maintainers Cc\u0027d):\n\tarch/arm/mach-pxa/tosa-bt.c\n\tdrivers/net/usb/hso.c\n\tdrivers/net/wireless/rt2x00/* (USB might need it?)\n\tdrivers/net/wireless/b43/ (SSB over USB might need it?)\n\tdrivers/misc/hp-wmi.c\n\teeepc-laptop w/rfkill support (not in mainline yet)\n\tCompal laptop w/rfkill support (not in mainline yet)\n\ttoshiba-acpi w/rfkill support (not in mainline yet)\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nCc: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nCc: Matthew Garrett \u003cmjg@redhat.com\u003e\nCc: Andrew Bird \u003cajb@spheresystems.co.uk\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nCc: Cezary Jackiewicz \u003ccezary.jackiewicz@gmail.com\u003e\nCc: Philip Langdale \u003cphilipl@overt.org\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "15635744484d4255778fc641261be27179c51f9a",
      "tree": "0f00163e77259aae1ab1636801f4a6842cb8fc77",
      "parents": [
        "f745ba03a12a1c4b98a88a96ab39d9b58ac677a2"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Tue Aug 26 11:58:00 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Aug 29 16:24:11 2008 -0400"
      },
      "message": "rfkill: rename rfkill_mutex to rfkill_global_mutex\n\nrfkill_mutex and rfkill-\u003emutex are too easy to confuse with each other.\n\nRename rfkill_mutex to rfkill_global_mutex, so that they are easier to tell\napart with just one glance.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nCc: Michael Buesch \u003cmb@bu3sch.de\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "f745ba03a12a1c4b98a88a96ab39d9b58ac677a2",
      "tree": "b66455f17ac6c8cfc33711c71da793ae17209ada",
      "parents": [
        "01b510b9c29caf2134c31d2bc8c2c5cc73987eb6"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Tue Aug 26 11:57:59 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Aug 29 16:24:10 2008 -0400"
      },
      "message": "rfkill: add WARN and BUG_ON paranoia (v2)\n\nBUG_ON() and WARN() the heck out of buggy drivers calling into the rfkill\nsubsystem.\n\nAlso switch from WARN_ON(1) to the new descriptive WARN().\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nCc: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "01b510b9c29caf2134c31d2bc8c2c5cc73987eb6",
      "tree": "1002d28e85625d44c77f4acce28af7650e8eea45",
      "parents": [
        "849e0576a76bc421aacd782f97948856f487726c"
      ],
      "author": {
        "name": "Felipe Balbi",
        "email": "felipe.balbi@nokia.com",
        "time": "Tue Aug 26 11:57:58 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Aug 29 16:24:10 2008 -0400"
      },
      "message": "rfkill: add missing line break\n\nTrivial patch adding a missing line break on\nrfkill_claim_show().\n\nSigned-off-by: Felipe Balbi \u003cfelipe.balbi@nokia.com\u003e\nAcked-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.co\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "849e0576a76bc421aacd782f97948856f487726c",
      "tree": "284a8fec1a1b9e25f4c1e6bbeb8c739290c90b70",
      "parents": [
        "5701ed843ea87bf8a1d2c4dee5edcb463558db4a"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Tue Aug 26 11:57:57 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Aug 29 16:24:10 2008 -0400"
      },
      "message": "rfkill: use strict_strtoul (v2)\n\nSwitch sysfs parsing to something that actually works properly.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "96c87607ac8f9b0e641d11ba6e57f8ec0214ea1c",
      "tree": "d8a7d538b2bd05b5ee2957828563b31cf7db8540",
      "parents": [
        "77fba13ccc3a2a3db100892a4a6cc5e2f8290cc7"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Sat Aug 02 15:11:00 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Aug 22 16:29:57 2008 -0400"
      },
      "message": "rfkill: introduce RFKILL_STATE_MAX\n\nWhile it is interesting to not add last-enum-markers because it allows gcc\nto warn us of switch() statements missing a valid state, we really should\nbe handling memory corruption on a rfkill state with default clauses,\nanyway.\n\nSo add RFKILL_STATE_MAX and use it where applicable.  It makes for safer\ncode in the long run.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "77fba13ccc3a2a3db100892a4a6cc5e2f8290cc7",
      "tree": "326794992d81c2372f6a639df798e3361dcb4610",
      "parents": [
        "9961920199ec88d6b581d3e38502088935925c04"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Sat Aug 02 15:10:59 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Aug 22 16:29:57 2008 -0400"
      },
      "message": "rfkill: add __must_check annotations\n\nrfkill is not a small, mere detail in wireless support.  Once it starts\nsupporting rfkill and users start counting on that support, a wireless\ndevice is at risk of operating in dangerous conditions should rfkill\nsupport fail to properly activate.\n\nTherefore, add the required __must_check annotations on some key functions\nof the rfkill API, for which the wireless drivers absolutely MUST handle\nthe failure mode safely in order to avoid a potentially dangerous situation\nwhere the wireless transmitter is left enabled when the user don\u0027t want it\nto.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nCc: Matthew Garrett \u003cmjg@redhat.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "9961920199ec88d6b581d3e38502088935925c04",
      "tree": "38a20b8d4441b4b2a6e033bc9e7a7e6863e72397",
      "parents": [
        "02589f60510030a3c1496e7a8c511e4f674ef5ff"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Sat Aug 02 15:10:58 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Aug 22 16:29:56 2008 -0400"
      },
      "message": "rfkill: add default global states (v2)\n\nAdd a second set of global states, \"rfkill_default_states\", to track the\nstate that will be used when the first rfkill class of a given type is\nregistered, and also to save \"undo\" information when rfkill_epo is called.\n\nAdd a new exported function, rfkill_set_default(), which can be used by\nplatform drivers to restore radio state saved by the platform across\nreboots or shutdown.\n\nAlso, fix rfkill_epo to properly update rfkill_states, but still preserve a\ncopy of the state so that we can undo the effect of rfkill_epo later if we\nwant to.  Add rfkill_restore_states() to restore rfkill_states from the\ncopy.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "02589f60510030a3c1496e7a8c511e4f674ef5ff",
      "tree": "24650fdd0e2a0ad8145693164fa27e847379aacc",
      "parents": [
        "c94c93da90a9e46a73a5733ff8454fb4b14733fb"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Sat Aug 02 15:10:57 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Aug 22 16:29:56 2008 -0400"
      },
      "message": "rfkill: detect bogus double-registering (v2)\n\nDetect and abort with -EEXIST if rfkill_register is called twice on the\nsame rfkill struct.  And WARN_ON(it) for good measure.\n\nWhile at it, flag when we are adding the first switch of a type, we will\nneed that information later.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nCc: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "e10e0dfe3ba358cfb442cc3bf0d3f2068785bf5c",
      "tree": "9921c44240e39f07bf825ede5777f72fbdfe40d0",
      "parents": [
        "aaa1553512b9105699113ea7e2ea726f3d9d4de2"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Sat Aug 02 14:56:25 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Mon Aug 18 11:05:12 2008 -0400"
      },
      "message": "rfkill: protect suspended rfkill controllers\n\nGuard rfkill controllers attached to a rfkill class against state changes\nafter class suspend has been issued.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "96185664f10e79d038c084305d3cacff9b52204f",
      "tree": "9134c0e018b86d84e2f9f86561b4c7a44ef933f9",
      "parents": [
        "7c4f4578fc85d42d149f86b47f76c28626a20d92"
      ],
      "author": {
        "name": "Dmitry Baryshkov",
        "email": "dbaryshkov@gmail.com",
        "time": "Tue Jul 22 14:21:59 2008 +0400"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Aug 01 15:31:33 2008 -0400"
      },
      "message": "RFKILL: set the status of the leds on activation.\n\nProvide default activate function to set the state of the led\nwhen the led becomes bound to the trigger\n\nSigned-off-by: Dmitry Baryshkov \u003cdbaryshkov@gmail.com\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nAcked-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "7c4f4578fc85d42d149f86b47f76c28626a20d92",
      "tree": "266b617211d19f31d383b7b11a6d3dfe160676d1",
      "parents": [
        "6e28fbef0f330d7c1cade345eeae003d4e5d6070"
      ],
      "author": {
        "name": "Dmitry Baryshkov",
        "email": "dbaryshkov@gmail.com",
        "time": "Tue Jul 22 14:17:37 2008 +0400"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Aug 01 15:31:33 2008 -0400"
      },
      "message": "RFKILL: allow one to specify led trigger name\n\nAllow the rfkill driver to specify led trigger name.\nBy default it still defaults to the name of rfkill switch.\n\nSigned-off-by: Dmitry Baryshkov \u003cdbaryshkov@gmail.com\u003e\nAcked-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "6e28fbef0f330d7c1cade345eeae003d4e5d6070",
      "tree": "69d5f4e32a6ed95eb2bdc89678ca87d60274d2fb",
      "parents": [
        "f860ee26db51c478fd70039bd4902912a8d93993"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Thu Jul 31 10:53:57 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Fri Aug 01 15:31:32 2008 -0400"
      },
      "message": "rfkill: query EV_SW states when rfkill-input (re)?connects to a input device\n\nEvery time a new input device that is capable of one of the\nrfkill EV_SW events (currently only SW_RFKILL_ALL) is connected to\nrfkill-input, we must check the states of the input EV_SW switches\nand take action.  Otherwise, we will ignore the initial switch state.\n\nWe also need to re-check the states of the EV_SW switches after\na device that was under an exclusive grab is released back to us,\nsince we got no input events from that device while it was grabbed.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nCc: Dmitry Torokhov \u003cdtor@mail.ru\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "435307a365ceedc4f4e1813e405f583f434d98e4",
      "tree": "2f285547aba15a7235e46485ebde365d57cb378e",
      "parents": [
        "064af1117b4aa64a0e52f6b741df7356ef055142"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Mon Jul 21 21:18:22 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Tue Jul 29 16:55:03 2008 -0400"
      },
      "message": "rfkill: yet more minor kernel-doc fixes\n\nFor some stupid reason, I sent and old version of the patch minor kernel\ndoc-fix patch, and it got merged before I noticed the problem. This is an\nincremental fix on top.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "064af1117b4aa64a0e52f6b741df7356ef055142",
      "tree": "262651d81f5d390467ee80bca96e403f86bacee3",
      "parents": [
        "f1b23361a0f15497d4c6795a2935b2e98064ddfb"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Mon Jul 21 21:18:20 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Tue Jul 29 16:36:35 2008 -0400"
      },
      "message": "rfkill: mutex fixes\n\nThere are two mutexes in rfkill:\n\nrfkill-\u003emutex, which protects some of the fields of a rfkill struct, and is\nalso used for callback serialization.\n\nrfkill_mutex, which protects the global state, the list of registered\nrfkill structs and rfkill-\u003eclaim.\n\nMake sure to use the correct mutex, and to not miss locking rfkill-\u003emutex\neven when we already took rfkill_mutex.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "37f55e9d78d1b63047b1b7ae175cdce650547ba8",
      "tree": "bfbaf636dc086d0cc7b904a3dcbfe44c2e2d7a88",
      "parents": [
        "2fd9b2212e25e6411b6f309707f4e2683d164250"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Mon Jul 21 21:18:18 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Tue Jul 29 16:36:32 2008 -0400"
      },
      "message": "rfkill: fix led-trigger unregister order in error unwind\n\nrfkill needs to unregister the led trigger AFTER a call to\nrfkill_remove_switch(), otherwise it will not update the LED state,\npossibly leaving it ON when it should be OFF.\n\nTo make led-trigger unregistering safer, guard against unregistering a\ntrigger twice, and also against issuing trigger events to a led trigger\nthat was unregistered.  This makes the error unwind paths more resilient.\n\nRefer to \"rfkill: Register LED triggers before registering switch\".\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nCc: Michael Buesch \u003cmb@bu3sch.de\u003e\nCc: Dmitry Baryshkov \u003cdbaryshkov@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "2fd9b2212e25e6411b6f309707f4e2683d164250",
      "tree": "b886e6d11d3478f86ac7e270ef1dfc7fe02e7128",
      "parents": [
        "734b5aa911dc65f4563048f069dfc631c9aa7de7"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Mon Jul 21 21:18:17 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Tue Jul 29 16:36:32 2008 -0400"
      },
      "message": "rfkill: document rfkill_force_state as required (v2)\n\nWhile the rfkill class does work with just get_state(), it doesn\u0027t work\nwell on devices that are subject to external events that cause rfkill state\nchanges.\n\nDocument that rfkill_force_state() is required in those cases.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "fd4484af7c02b31bcb6090eeb0d85cf947719f2d",
      "tree": "b7cf0b5b4ade5c3cd4351b1a1256432356898068",
      "parents": [
        "0f687e9aeb590e9581709379f47dd13ee9357258"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Thu Jul 03 13:14:57 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Tue Jul 08 14:16:03 2008 -0400"
      },
      "message": "rfkill: ignore errors from rfkill_toggle_radio in rfkill_add_switch\n\nrfkill_add_switch() calls rfkill_toggle_radio() to set the state of a\nrecently registered rfkill class to the current global state [for that\nrfkill-\u003etype].\n\nThe rfkill_toggle_radio() call is going to error out if the hardware is\nRFKILL_STATE_HARD_BLOCKED, and the global state is RFKILL_STATE_UNBLOCKED.\n\nThat is a quite normal situation which I missed to account for.  As things\nstand, the error return from rfkill_toggle_radio ends up causing\nrfkill_register to bail out with an error (de-registering the new switch in\nthe process), which is Not Nice.\n\nChange rfkill_add_switch() to not return errors because of a failed call to\nrfkill_toggle_radio().  We can go back to returning errors again (if that\u0027s\nindeed the right thing to do) if we define the exact error codes the\nrfkill-\u003etoggle_radio callbacks are to return in each situation, so that we\ncan ignore the right ones only.\n\nBug reported by \"kionez \u003ckionez@anche.no\u003e\".\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nCc: kionez \u003ckionez@anche.no\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "0f687e9aeb590e9581709379f47dd13ee9357258",
      "tree": "1e713f23476d03171d608abfdd9308552c5f1da9",
      "parents": [
        "e4abd4d49d6df6d5e94564c5e831c61ac722f6ec"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Thu Jul 03 13:14:56 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Tue Jul 08 14:16:02 2008 -0400"
      },
      "message": "rfkill: some minor kernel-doc changes for rfkill_toggle_radio\n\nImprove rfkill_toggle_radio\u0027s kernel-doc header a bit.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "5005657cbd0fd6f277f807c0612a6b6d4396a02c",
      "tree": "e6ed81f07a1a85ed2c440ac8631ca19cc77907c1",
      "parents": [
        "dc288520a21879c6540f3249e9532c5e032da4e8"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Mon Jun 23 17:46:42 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Thu Jun 26 14:21:22 2008 -0400"
      },
      "message": "rfkill: rename the rfkill_state states and add block-locked state\n\nThe current naming of rfkill_state causes a lot of confusion: not only the\n\"kill\" in rfkill suggests negative logic, but also the fact that rfkill cannot\nturn anything on (it can just force something off or stop forcing something\noff) is often forgotten.\n\nRename RFKILL_STATE_OFF to RFKILL_STATE_SOFT_BLOCKED (transmitter is blocked\nand will not operate; state can be changed by a toggle_radio request), and\nRFKILL_STATE_ON to RFKILL_STATE_UNBLOCKED (transmitter is not blocked, and may\noperate).\n\nAlso, add a new third state, RFKILL_STATE_HARD_BLOCKED (transmitter is blocked\nand will not operate; state cannot be changed through a toggle_radio request),\nwhich is used by drivers to indicate a wireless transmiter was blocked by a\nhardware rfkill line that accepts no overrides.\n\nKeep the old names as #defines, but document them as deprecated.  This way,\ndrivers can be converted to the new names *and* verified to actually use rfkill\ncorrectly one by one.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "4081f00dc45abce6bdac352a6354c07ce15db45b",
      "tree": "5c1c239eb0e0cfdedf9fdfd0d82bf36c03bfdd99",
      "parents": [
        "fbc6af2f3c46df4722f5161d0ad20dd87cd7dfa9"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Mon Jun 23 17:23:07 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Thu Jun 26 14:21:22 2008 -0400"
      },
      "message": "rfkill: do not allow userspace to override ALL RADIOS OFF\n\nSW_RFKILL_ALL is the \"emergency power-off all radios\" input event.  It must\nbe handled, and must always do the same thing as far as the rfkill system\nis concerned: all transmitters are to go *immediately* offline.\n\nFor safety, do NOT allow userspace to override EV_SW SW_RFKILL_ALL OFF.  As\nlong as rfkill-input is loaded, that event will *always* be processed, and\nit will *always* force all rfkill switches to disable all wireless\ntransmitters, regardless of user_claim attribute or anything else.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nCc: Dmitry Torokhov \u003cdtor@mail.ru\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "fbc6af2f3c46df4722f5161d0ad20dd87cd7dfa9",
      "tree": "441db97c020be4af753823be8991df86454f92a8",
      "parents": [
        "ffb67c34e436fb163c4067936ccec797354fa6c6"
      ],
      "author": {
        "name": "Fabien Crespel",
        "email": "fabien@crespel.net",
        "time": "Mon Jun 23 17:23:06 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Thu Jun 26 14:21:21 2008 -0400"
      },
      "message": "rfkill: drop current_state from tasks in rfkill-input\n\nThe whole current_state thing seems completely useless and a source of\nproblems in rfkill-input, since state comparison is already done in rfkill,\nand rfkill-input is more than likely to become out of sync with the real\nstate.\n\nSigned-off-by: Fabien Crespel \u003cfabien@crespel.net\u003e\nAcked-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nCc: Dmitry Torokhov \u003cdtor@mail.ru\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "ffb67c34e436fb163c4067936ccec797354fa6c6",
      "tree": "58553e810c7d55595c82d6d397fa4027be1da7ae",
      "parents": [
        "99c632e5a304e1f76350eb9e8b2493514de8b60c"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Mon Jun 23 17:23:05 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Thu Jun 26 14:21:21 2008 -0400"
      },
      "message": "rfkill: add uevent notifications\n\nUse the notification chains to also send uevents, so that userspace can be\nnotified of state changes of every rfkill switch.\n\nUserspace should use these events for OSD/status report applications and\nrfkill GUI frontends.  HAL might want to broadcast them over DBUS, for\nexample.  It might be also useful for userspace implementations of\nrfkill-input, or to use HAL as the platform driver which promotes rfkill\nswitch change events into input events (to synchronize all other switches)\nwhen necessary for platforms that lack a convenient platform-specific\nkernel module to do it.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nCc: Dmitry Torokhov \u003cdtor@mail.ru\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "99c632e5a304e1f76350eb9e8b2493514de8b60c",
      "tree": "81eb9f9494a377d377ab57357adf7a37253d25e8",
      "parents": [
        "79399a8d1908f6a406e82d23c5a9937e1722ed3a"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Mon Jun 23 17:23:04 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Thu Jun 26 14:21:21 2008 -0400"
      },
      "message": "rfkill: add type string helper\n\nWe will need access to the rfkill switch type in string format for more\nthan just sysfs.  Therefore, move it to a generic helper.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "79399a8d1908f6a406e82d23c5a9937e1722ed3a",
      "tree": "2eb7cfc13959917114b745e4a0bff2810df1c870",
      "parents": [
        "526324b61a9667ed9a71f0a8a8899cf675346c76"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Mon Jun 23 17:23:03 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Thu Jun 26 14:21:21 2008 -0400"
      },
      "message": "rfkill: add notifier chains support\n\nAdd a notifier chain for use by the rfkill class.  This notifier chain\nsignals the following events (more to be added when needed):\n\n  1. rfkill: rfkill device state has changed\n\nA pointer to the rfkill struct will be passed as a parameter.\n\nThe notifier message types have been added to include/linux/rfkill.h\ninstead of to include/linux/notifier.h in order to avoid the madness of\nmodifying a header used globally (and that triggers an almost full tree\nrebuild every time it is touched) with information that is of interest only\nto code that includes the rfkill.h header.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "526324b61a9667ed9a71f0a8a8899cf675346c76",
      "tree": "4a7697c0987ab4869f2760f06e1ba8e487a91af8",
      "parents": [
        "477576a073699783abb53ae14993d5d41c66301d"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Mon Jun 23 17:23:02 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Thu Jun 26 14:21:20 2008 -0400"
      },
      "message": "rfkill: rework suspend and resume handlers\n\nThe resume handler should reset the wireless transmitter rfkill\nstate to exactly what it was when the system was suspended.  Do it,\nand do it using the normal routines for state change while at it.\n\nThe suspend handler should force-switch the transmitter to blocked\nstate, ignoring caches.  Do it.\n\nAlso take an opportunity shot to rfkill_remove_switch() and also\nforce the transmitter to blocked state there, bypassing caches.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "477576a073699783abb53ae14993d5d41c66301d",
      "tree": "bde28a746ff9ebbc7642f36828a6115bc4bc00e9",
      "parents": [
        "801e49af4c1a9b988ba0d25de2b368c99c3bf2b3"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Mon Jun 23 17:23:01 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Thu Jun 26 14:21:20 2008 -0400"
      },
      "message": "rfkill: add the WWAN radio type\n\nUnfortunately, instead of adding a generic Wireless WAN type, a technology-\nspecific type (WiMAX) was added.  That\u0027s useless for other WWAN devices,\nsuch as EDGE, UMTS, X-RTT and other such radios.\n\nAdd a WWAN rfkill type for generic wireless WAN devices.  No keys are added\nas most devices really want to use KEY_WLAN for WWAN control (in a cycle of\nnone, WLAN, WWAN, WLAN+WWAN) and need no specific keycode added.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nCc: Iñaky Pérez-González \u003cinaky.perez-gonzalez@intel.com\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "801e49af4c1a9b988ba0d25de2b368c99c3bf2b3",
      "tree": "60fbf2b2ce2d9aab3055198853d2a76223b03f71",
      "parents": [
        "e954b0b85b9e737564b8ad9738de5816747b5901"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Mon Jun 23 17:23:00 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Thu Jun 26 14:21:20 2008 -0400"
      },
      "message": "rfkill: add read-write rfkill switch support\n\nCurrently, rfkill support for read/write rfkill switches is hacked through\na round-trip over the input layer and rfkill-input to let a driver sync\nrfkill-\u003estate to hardware changes.\n\nThis is buggy and sub-optimal.  It causes real problems.  It is best to\nthink of the rfkill class as supporting only write-only switches at the\nmoment.\n\nIn order to implement the read/write functionality properly:\n\nAdd a get_state() hook that is called by the class every time it needs to\nfetch the current state of the switch.  Add a call to this hook every time\nthe *current* state of the radio plays a role in a decision.\n\nAlso add a force_state() method that can be used to forcefully syncronize\nthe class\u0027 idea of the current state of the switch.  This allows for a\nfaster implementation of the read/write functionality, as a driver which\nget events on switch changes can avoid the need for a get_state() hook.\n\nIf the get_state() hook is left as NULL, current behaviour is maintained,\nso this change is fully backwards compatible with the current rfkill\ndrivers.\n\nFor hardware that issues events when the rfkill state changes, leave\nget_state() NULL in the rfkill struct, set the initial state properly\nbefore registering with the rfkill class, and use the force_state() method\nin the driver to keep the rfkill interface up-to-date.\n\nget_state() can be called by the class from atomic context. It must not\nsleep.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nCc: Dmitry Torokhov \u003cdtor@mail.ru\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "e954b0b85b9e737564b8ad9738de5816747b5901",
      "tree": "173e87944006ded011a2db7feac770848277d881",
      "parents": [
        "28f089c18464810ec9e91ee10a89adbb02ad7765"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Mon Jun 23 17:22:59 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Thu Jun 26 14:21:20 2008 -0400"
      },
      "message": "rfkill: add parameter to disable radios by default\n\nCurrently, radios are always enabled when their rfkill interface is\nregistered.  This is not optimal, the safest state for a radio is to be\noffline unless the user turns it on.\n\nAdd a module parameter that causes all radios to be disabled when their\nrfkill interface is registered.  The module default is not changed so\nunless the parameter is used, radios will still be forced to their enabled\nstate when they are registered.\n\nThe new rfkill module parameter is called \"default_state\".\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "28f089c18464810ec9e91ee10a89adbb02ad7765",
      "tree": "5addf4b36d545258759d6aba8e825c79aa00698d",
      "parents": [
        "c8fcd905a59a535bff93a120ac44b09ce24e13e6"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Mon Jun 23 17:22:58 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Thu Jun 26 14:21:19 2008 -0400"
      },
      "message": "rfkill: handle SW_RFKILL_ALL events\n\nTeach rfkill-input how to handle SW_RFKILL_ALL events (new name for the\nSW_RADIO event).\n\nSW_RFKILL_ALL is an absolute enable-or-disable command that is tied to all\nradios in a system.\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nCc: Dmitry Torokhov \u003cdtor@mail.ru\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "c8fcd905a59a535bff93a120ac44b09ce24e13e6",
      "tree": "d80caf713433b41f4f9d8e5df75599bc89898def",
      "parents": [
        "f3146aff7f283c8699e0c97df6307a705786eeba"
      ],
      "author": {
        "name": "Henrique de Moraes Holschuh",
        "email": "hmh@hmh.eng.br",
        "time": "Mon Jun 23 17:22:57 2008 -0300"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Thu Jun 26 14:21:19 2008 -0400"
      },
      "message": "rfkill: fix minor typo in kernel doc\n\nFix a minor typo in an exported function documentation\n\nSigned-off-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nCc: Dmitry Torokhov \u003cdtor@mail.ru\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "89796f64a20d31e74ee0051df2e26812c852e734",
      "tree": "5430ac55e047fa88c5cc11f1d1f1e8b95ceddf56",
      "parents": [
        "cdbbe3d1f53086ece706674d3bf4f6d148083694"
      ],
      "author": {
        "name": "Carlos Corbacho",
        "email": "carlos@strangeworlds.co.uk",
        "time": "Sat Apr 12 16:39:47 2008 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Tue Apr 15 15:04:35 2008 -0400"
      },
      "message": "rfkill: Fix device type check when toggling states\n\nrfkill_switch_all() is supposed to only switch all the interfaces of a\ngiven type, but does not actually do this; instead, it just switches\neverything currently in the same state.\n\nAdd the necessary type check in.\n\n(This fixes a bug I\u0027ve been seeing while developing an rfkill laptop\ndriver, with both bluetooth and wireless simultaneously changing state\nafter only pressing either KEY_WLAN or KEY_BLUETOOTH).\n\nSigned-off-by: Carlos Corbacho \u003ccarlos@strangeworlds.co.uk\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "3a2d5b700132f35401f1d9e22fe3c2cab02c2549",
      "tree": "ad991428c41aee92a5f78b06bf73430af0e6f7ae",
      "parents": [
        "39273b58a409cd6d65c9732bdca00bacd1626672"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sat Feb 23 19:13:25 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Feb 23 10:40:04 2008 -0800"
      },
      "message": "PM: Introduce PM_EVENT_HIBERNATE callback state\n\nDuring the last step of hibernation in the \"platform\" mode (with the\nhelp of ACPI) we use the suspend code, including the devices\u0027\n-\u003esuspend() methods, to prepare the system for entering the ACPI S4\nsystem sleep state.\n\nBut at least for some devices the operations performed by the\n-\u003esuspend() callback in that case must be different from its operations\nduring regular suspend.\n\nFor this reason, introduce the new PM event type PM_EVENT_HIBERNATE and\npass it to the device drivers\u0027 -\u003esuspend() methods during the last phase\nof hibernation, so that they can distinguish this case and handle it as\nappropriate.  Modify the drivers that handle PM_EVENT_SUSPEND in a\nspecial way and need to handle PM_EVENT_HIBERNATE in the same way.\n\nThese changes are necessary to fix a hibernation regression related\nto the i915 driver (ref. http://lkml.org/lkml/2008/2/22/488).\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nTested-by: Jeff Chua \u003cjeff.chua.linux@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1dbede87148c4723789e59ce2e415c909c8ccc3d",
      "tree": "42b8b167f7af9dcc639873a6e16843f8a1273cfb",
      "parents": [
        "ac461a0330abe9f8ceffbf3ad7c50b116a72de33"
      ],
      "author": {
        "name": "Oliver Pinter",
        "email": "oliver.pntr@gmail.com",
        "time": "Sun Feb 03 17:55:45 2008 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Sun Feb 03 17:55:45 2008 +0200"
      },
      "message": "typo fix in net/rfkill/rfkill.c\n\nSigned-off-by: Oliver Pinter \u003coliver.pntr@gmail.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\n"
    },
    {
      "commit": "303d9bf6bb64ead8e3f1d7e29904a4025502e591",
      "tree": "c33cc180a0f5084bcb1c2e8921cab35eb9aea476",
      "parents": [
        "09552ccd8277e6382097e93a40f7311a09449367"
      ],
      "author": {
        "name": "Iñaky Pérez-González",
        "email": "inaky.perez-gonzalez@intel.com",
        "time": "Wed Jan 23 13:40:27 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jan 31 19:26:46 2008 -0800"
      },
      "message": "rfkill: add the WiMAX radio type\n\nTeach rfkill about wimax radios.\n\nHad to define a KEY_WIMAX as a \u0027key for disabling only wimax radios\u0027,\nas other radio technologies have. This makes sense as hardware has\nspecific keys for disabling specific radios.\n\nThe RFKILL enabling part is, otherwise, a copy and paste of any other\nradio technology.\n\nSigned-off-by: Inaky Perez-Gonzalez \u003cinaky@linux.intel.com\u003e\nSigned-off-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "632041f306707df94110441f55b1458ebeb096db",
      "tree": "effe40dae5c459f6ee20ce55d2f2f7810aceb132",
      "parents": [
        "a7da60f41551abb3c520b03d42ec05dd7decfc7f"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Sun Jan 13 16:20:56 2008 -0500"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jan 20 20:31:36 2008 -0800"
      },
      "message": "rfkill: call rfkill_led_trigger_unregister() on error\n\nCode inspection turned up that error cases in rfkill_register() do not\ncall rfkill_led_trigger_unregister() even though we have already\nregistered.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "7f4c534178722ac9ffb4feae3a4d54e3fbe3f22c",
      "tree": "5067b23f30c5758bb6d6eee5e169afb98c98cd79",
      "parents": [
        "8312512e81ab16d845b49d1ec695fad1c72f19f6"
      ],
      "author": {
        "name": "Michael Buesch",
        "email": "mb@bu3sch.de",
        "time": "Wed Nov 28 17:49:34 2007 +0100"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Thu Nov 29 18:08:48 2007 -0500"
      },
      "message": "rfkill: fix double-mutex-locking\n\nrfkill_toggle_radio is called from functions where\nrfkill-\u003emutex is already aquired.\n\nRemove the lock from rfkill_toggle_radio() and add it to\nthe only calling function that calls it without the lock held.\n\nSigned-off-by: Michael Buesch \u003cmb@bu3sch.de\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "2736622344e9af9801392edf9e733e8a8f6931d1",
      "tree": "adb6fc95923d5a31fd20dabe0bc3d8c68bac6f67",
      "parents": [
        "7319f1e6bcf04abd2eddb19747b0933a76f839ce"
      ],
      "author": {
        "name": "Michael Buesch",
        "email": "mb@bu3sch.de",
        "time": "Fri Nov 02 20:18:11 2007 +0100"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Nov 10 22:00:28 2007 -0800"
      },
      "message": "rfkill: Fix sparse warning\n\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "7319f1e6bcf04abd2eddb19747b0933a76f839ce",
      "tree": "b6b1579a2bf0bfab90736ee589fa836835ede6cc",
      "parents": [
        "f51359a8fb1bb00ae87051991e59d0f92d90604b"
      ],
      "author": {
        "name": "Michael Buesch",
        "email": "mb@bu3sch.de",
        "time": "Sun Oct 28 15:16:50 2007 +0100"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Nov 10 22:00:15 2007 -0800"
      },
      "message": "rfkill: Use mutex_lock() at register and add sanity check\n\nReplace mutex_lock_interruptible() by mutex_lock() in rfkill_register(),\nas interruptible doesn\u0027t make sense there.\n\nAdd a sanity check for rfkill-\u003etype, as that\u0027s used for an unchecked dereference\nin an array and might cause hard to debug crashes if the driver sets this\nto an invalid value.\n\nSigned-off-by: Michael Buesch \u003cmb@bu3sch.de\u003e\nSigned-off-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "2bf236d55e5ea2b92ed5235af09997c2995b316b",
      "tree": "5ae4c6a731f2e9545a40de3258c747a7b3391342",
      "parents": [
        "ac71c691e6a5ce991fe221d3bdb0c972f617aa37"
      ],
      "author": {
        "name": "Michael Buesch",
        "email": "mb@bu3sch.de",
        "time": "Sun Oct 28 14:39:02 2007 +0100"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Nov 10 21:59:33 2007 -0800"
      },
      "message": "rfkill: Use subsys_initcall\n\nWe must use subsys_initcall, because we must initialize before a\ndriver calls rfkill_register().\n\nSigned-off-by: Michael Buesch \u003cmb@bu3sch.de\u003e\nSigned-off-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "8a8f1c0437a77cce29c1cb6089f01f22a6d9ca6e",
      "tree": "aff63cd4d043135c50cccd43ee32db57f62e79b9",
      "parents": [
        "8d8c90e3fd1f8895f6d48bdcb34ba69a1fe73616"
      ],
      "author": {
        "name": "Michael Buesch",
        "email": "mb@bu3sch.de",
        "time": "Sun Oct 28 13:07:54 2007 +0100"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Nov 10 21:59:11 2007 -0800"
      },
      "message": "rfkill: Register LED triggers before registering switch\n\nRegistering the switch triggers a LED event, so we must register\nLED triggers before the switch.\nThis has a potential to fix a crash, depending on how the device\ndriver initializes the rfkill data structure.\n\nSigned-off-by: Michael Buesch \u003cmb@bu3sch.de\u003e\nSigned-off-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "7b19ada2ed3c1eccb9fe94d74b05e1428224663d",
      "tree": "a0c5975ce5236ff4023b92d431bd0a8fa321c6ce",
      "parents": [
        "d05be13bcc6ec615fb2e9556a9b85d52800669b6"
      ],
      "author": {
        "name": "Jiri Slaby",
        "email": "jirislaby@gmail.com",
        "time": "Thu Oct 18 23:40:32 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:42 2007 -0700"
      },
      "message": "get rid of input BIT* duplicate defines\n\nget rid of input BIT* duplicate defines\n\nuse newly global defined macros for input layer. Also remove includes of\ninput.h from non-input sources only for BIT macro definiton. Define the\nmacro temporarily in local manner, all those local definitons will be\nremoved further in this patchset (to not break bisecting).\nBIT macro will be globally defined (1\u003c\u003cx)\n\nSigned-off-by: Jiri Slaby \u003cjirislaby@gmail.com\u003e\nCc: \u003cdtor@mail.ru\u003e\nAcked-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\nCc: \u003clenb@kernel.org\u003e\nAcked-by: Marcel Holtmann \u003cmarcel@holtmann.org\u003e\nCc: \u003cperex@suse.cz\u003e\nAcked-by: Mauro Carvalho Chehab \u003cmchehab@infradead.org\u003e\nCc: \u003cvernux@us.ibm.com\u003e\nCc: \u003cmalattia@linux.it\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "20405c08412a4d89357870d7220f9fb1c458b286",
      "tree": "971dbbd3a2339eeef5ec7a89057cf6ca20af535d",
      "parents": [
        "135900c182c321a4888ec496b014e6707272faca"
      ],
      "author": {
        "name": "Michael Buesch",
        "email": "mb@bu3sch.de",
        "time": "Thu Sep 27 21:34:23 2007 +0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:54:11 2007 -0700"
      },
      "message": "[RFKILL]: Add support for hardware-only rfkill buttons\n\nButtons that work directly on hardware cannot support\nthe \"user_claim\" functionality. Add a flag to signal\nthis and return -EOPNOTSUPP in this case.\nb43 is such a device.\n\nSigned-off-by: Michael Buesch \u003cmb@bu3sch.de\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "135900c182c321a4888ec496b014e6707272faca",
      "tree": "d17a3e12bf2e047c7a627f61e623e40dfbad87bf",
      "parents": [
        "937a049dd903bd810d858d0303cf86af9eb08b6f"
      ],
      "author": {
        "name": "Michael Buesch",
        "email": "mb@bu3sch.de",
        "time": "Thu Sep 27 21:33:12 2007 +0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:54:10 2007 -0700"
      },
      "message": "[RFKILL]: Add support for an rfkill LED.\n\nThis adds a LED trigger.\n\nSigned-off-by: Michael Buesch \u003cmb@bu3sch.de\u003e\nAcked-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "fe242cfd3390b1c7d54d60f7ebb6a4054804cd41",
      "tree": "0a2ad56479c5a48a57c9635139b3b85de2ae5c3d",
      "parents": [
        "a50e2e3f3e6303e893c4c438c0692d459d7093a5"
      ],
      "author": {
        "name": "Ivo van Doorn",
        "email": "IvDoorn@gmail.com",
        "time": "Thu Sep 27 14:57:05 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:53:29 2007 -0700"
      },
      "message": "[RFKILL]: Move rfkill_switch_all out of global header\n\nrfkill_switch_all shouldn\u0027t be called by drivers directly,\ninstead they should send a signal over the input device.\n\nTo prevent confusion for driver developers, move the\nfunction into a rfkill private header.\n\nSigned-off-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e0665486b78b8efb9c25019ad29b4a4c9c1e9dfc",
      "tree": "b18f2c738eb10d6afcf7bf751b4c16056c3e248c",
      "parents": [
        "234a0ca6f1d67ba4c3c3fc8378bbd98d722468e1"
      ],
      "author": {
        "name": "Ivo van Doorn",
        "email": "IvDoorn@gmail.com",
        "time": "Thu Sep 13 09:21:31 2007 +0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:49:23 2007 -0700"
      },
      "message": "[RFKILL]: Add support for ultrawideband\n\nThis patch will add support for UWB keys to rfkill,\nsupport for this has been requested by Inaky.\n\nSigned-off-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "234a0ca6f1d67ba4c3c3fc8378bbd98d722468e1",
      "tree": "a744629408146be683dfbef5c18f1f8bb433f3b7",
      "parents": [
        "077130c0cf7d5ba1992f5b51b96136d7b1c8aad5"
      ],
      "author": {
        "name": "Ivo van Doorn",
        "email": "IvDoorn@gmail.com",
        "time": "Thu Sep 13 09:20:42 2007 +0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:49:23 2007 -0700"
      },
      "message": "[RFKILL]: Remove IRDA\n\nAs Dmitry pointed out earlier, rfkill-input.c\ndoesn\u0027t support irda because there are no users\nand we shouldn\u0027t add unrequired KEY_ defines.\n\nHowever, RFKILL_TYPE_IRDA was defined in the\nrfkill.h header file and would confuse people\nabout whether it is implemented or not.\n\nThis patch removes IRDA support completely,\nso it can be added whenever a driver wants the\nfeature.\n\nSigned-off-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2b81bff416c4413333b19af627e11fddc620bd84",
      "tree": "fa003d1cac81e80f67b46ac3128873596f158ca5",
      "parents": [
        "db0c58f998eeb552fb47b82915005259a83613ae"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Thu Jul 19 10:44:38 2007 +0900"
      },
      "committer": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Thu Jul 19 10:44:38 2007 +0900"
      },
      "message": "[NET] RFKILL: Fix whitespace errors.\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\n"
    },
    {
      "commit": "c81de6addb913423acef6e692fd70688180ab5dd",
      "tree": "5afffdbbba11dea2d6b7d1c8a44c6c8c75918aaa",
      "parents": [
        "5bae7ac9feba925fd0099057f6b23d7be80b7b41"
      ],
      "author": {
        "name": "Ivo van Doorn",
        "email": "IvDoorn@gmail.com",
        "time": "Wed Jul 18 15:38:03 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 18 15:38:03 2007 -0700"
      },
      "message": "[RFKILL]: Make state sysfs writable\n\nThe rfkill state Sysfs attribute should be made writable,\nwe already pass the argument for the store handler,\nso we only need to update the permissions flag.\n\nSigned-off-by: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e6c9116d1dc984cb7ecf1b0fe26ca4a8ab36bb57",
      "tree": "4097167cef775da1006b762f30ceff323ccf6071",
      "parents": [
        "8d9107e8c50e1c4ff43c91c8841805833f3ecfb9"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Jul 14 18:50:15 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jul 14 18:50:15 2007 -0700"
      },
      "message": "[RFKILL]: fix net/rfkill/rfkill-input.c bug on 64-bit systems\n\nSubject: [patch] net/input: fix net/rfkill/rfkill-input.c bug on 64-bit systems\n\nthis recent commit:\n\n commit cf4328cd949c2086091c62c5685f1580fe9b55e4\n Author: Ivo van Doorn \u003cIvDoorn@gmail.com\u003e\n Date:   Mon May 7 00:34:20 2007 -0700\n\n     [NET]: rfkill: add support for input key to control wireless radio\n\nadded this 64-bit bug:\n\n        ....\n\tunsigned int flags;\n \n \tspin_lock_irqsave(\u0026task-\u003elock, flags);\n        ....\n\nirq \u0027flags\u0027 must be unsigned long, not unsigned int. The -rt tree has \nstrict checks about this on 64-bit so this triggered a build failure. \n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    }
  ],
  "next": "d007da1fa6f0ad5e01ceae4a1f60cdbb23ecd706"
}
