blob: 8e1892bac0529cdfc511a792773eea050c579fe2 [file] [log] [blame]
rfkill was re-implemented on 2.6.31. We port it to
older kernels with a simple hack, just rename the
module as a new one rfkill_backport, and every
exported symbol gets redefined with a _backport
postfix through compat-2.6.31.h. The changes below
are the ones we could not do through compat-2.6.31.h
Do older kernels have /dev/rfkill ? I not then we can
just keep /dev/rfkill and not /dev/rfkill_backport.
Note that 2.6.31 added netdevice notifier upon interface
dev_open() which on cfg80211 will check if checks to see
if rfkill is enabled (or if the mode of operation is not
supported) on the cfg80211_netdev_notifier_call() and if
so deny bringing the interface up. This was added via
commit:
3b8bcfd5d31ea0fec58681d035544ace707d2536
Since older kernels will not have the notifier call
on dev_open() if we *really want* to port this we could have
mac80211's subif_open() call :
ret = call_netdevice_notifiers(NETDEV_PRE_UP, dev);
ret = notifier_to_errno(ret);
if (ret)
return ret;
This would do the policing from within mac80211.
--- a/net/rfkill/Makefile
+++ b/net/rfkill/Makefile
@@ -2,8 +2,8 @@
# Makefile for the RF switch subsystem.
#
-rfkill-y += core.o
-rfkill-$(CONFIG_RFKILL_INPUT) += input.o
-obj-$(CONFIG_RFKILL) += rfkill.o
+rfkill_backport-y += core.o
+rfkill_backport-$(CONFIG_RFKILL_BACKPORT_INPUT) += input.o
+obj-$(CONFIG_RFKILL_BACKPORT) += rfkill_backport.o
obj-$(CONFIG_RFKILL_REGULATOR) += rfkill-regulator.o
obj-$(CONFIG_RFKILL_GPIO) += rfkill-gpio.o
--- a/net/rfkill/input.c
+++ b/net/rfkill/input.c
@@ -233,7 +233,7 @@ static int rfkill_connect(struct input_h
handle->dev = dev;
handle->handler = handler;
- handle->name = "rfkill";
+ handle->name = "rfkill_backport";
/* causes rfkill_start() to be called */
error = input_register_handle(handle);
--- a/net/rfkill/core.c
+++ b/net/rfkill/core.c
@@ -805,7 +805,7 @@ static int rfkill_resume(struct device *
}
static struct class rfkill_class = {
- .name = "rfkill",
+ .name = "rfkill_backport",
.dev_release = rfkill_release,
.dev_attrs = rfkill_dev_attrs,
.dev_uevent = rfkill_dev_uevent,