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