rfkill: rewrite
This patch completely rewrites the rfkill core to address the following deficiencies: * all rfkill drivers need to implement polling where necessary rather than having one central implementation * updating the rfkill state cannot be done from arbitrary contexts, forcing drivers to use schedule_work and requiring lots of code * rfkill drivers need to keep track of soft/hard blocked internally -- the core should do this * the rfkill API has many unexpected quirks, for example being asymmetric wrt. alloc/free and register/unregister * rfkill can call back into a driver from within a function the driver called -- this is prone to deadlocks and generally should be avoided * rfkill-input pointlessly is a separate module * drivers need to #ifdef rfkill functions (unless they want to depend on or select RFKILL) -- rfkill should provide inlines that do nothing if it isn't compiled in * the rfkill structure is not opaque -- drivers need to initialise it correctly (lots of sanity checking code required) -- instead force drivers to pass the right variables to rfkill_alloc() * the documentation is hard to read because it always assumes the reader is completely clueless and contains way TOO MANY CAPS * the rfkill code needlessly uses a lot of locks and atomic operations in locked sections * fix LED trigger to actually change the LED when the radio state changes -- this wasn't done before Tested-by:Alan Jenkins <alan-jenkins@tuffmail.co.uk> Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br> [thinkpad] Signed-off-by:
Johannes Berg <johannes@sipsolutions.net> Signed-off-by:
John W. Linville <linville@tuxdriver.com>
Showing
- Documentation/rfkill.txt 78 additions, 519 deletionsDocumentation/rfkill.txt
- MAINTAINERS 3 additions, 3 deletionsMAINTAINERS
- arch/arm/mach-pxa/tosa-bt.c 15 additions, 15 deletionsarch/arm/mach-pxa/tosa-bt.c
- arch/arm/mach-pxa/tosa.c 0 additions, 1 deletionarch/arm/mach-pxa/tosa.c
- drivers/net/usb/hso.c 22 additions, 20 deletionsdrivers/net/usb/hso.c
- drivers/net/wireless/ath/ath9k/ath9k.h 1 addition, 6 deletionsdrivers/net/wireless/ath/ath9k/ath9k.h
- drivers/net/wireless/ath/ath9k/main.c 29 additions, 86 deletionsdrivers/net/wireless/ath/ath9k/main.c
- drivers/net/wireless/ath/ath9k/pci.c 0 additions, 15 deletionsdrivers/net/wireless/ath/ath9k/pci.c
- drivers/net/wireless/b43/Kconfig 1 addition, 1 deletiondrivers/net/wireless/b43/Kconfig
- drivers/net/wireless/b43/leds.c 1 addition, 1 deletiondrivers/net/wireless/b43/leds.c
- drivers/net/wireless/b43/main.c 2 additions, 2 deletionsdrivers/net/wireless/b43/main.c
- drivers/net/wireless/b43/phy_a.c 2 additions, 2 deletionsdrivers/net/wireless/b43/phy_a.c
- drivers/net/wireless/b43/phy_common.c 6 additions, 11 deletionsdrivers/net/wireless/b43/phy_common.c
- drivers/net/wireless/b43/phy_common.h 2 additions, 2 deletionsdrivers/net/wireless/b43/phy_common.h
- drivers/net/wireless/b43/phy_g.c 2 additions, 2 deletionsdrivers/net/wireless/b43/phy_g.c
- drivers/net/wireless/b43/phy_lp.c 1 addition, 1 deletiondrivers/net/wireless/b43/phy_lp.c
- drivers/net/wireless/b43/phy_n.c 1 addition, 1 deletiondrivers/net/wireless/b43/phy_n.c
- drivers/net/wireless/b43/rfkill.c 34 additions, 89 deletionsdrivers/net/wireless/b43/rfkill.c
- drivers/net/wireless/b43/rfkill.h 1 addition, 4 deletionsdrivers/net/wireless/b43/rfkill.h
- drivers/net/wireless/b43legacy/Kconfig 1 addition, 1 deletiondrivers/net/wireless/b43legacy/Kconfig
Loading
Please register or sign in to comment