summaryrefslogtreecommitdiffstats
path: root/lib/network/rfswitch.pm
diff options
context:
space:
mode:
authorOlivier Blin <oblin@mandriva.com>2007-05-25 15:39:46 +0000
committerOlivier Blin <oblin@mandriva.com>2007-05-25 15:39:46 +0000
commit1d37bfdbbe874abd6dcb5563eea19f531de09e1c (patch)
tree74845e43ed8fa59c7aaafd1a87efaa6b0c83c228 /lib/network/rfswitch.pm
parentc6ba983db7d5a82ee63599e775be0f8211447c72 (diff)
downloaddrakx-net-2007.1.tar
drakx-net-2007.1.tar.gz
drakx-net-2007.1.tar.bz2
drakx-net-2007.1.tar.xz
drakx-net-2007.1.zip
sync with 2007.1 (because of SVN loss)2007.1
Diffstat (limited to 'lib/network/rfswitch.pm')
-rw-r--r--lib/network/rfswitch.pm38
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/network/rfswitch.pm b/lib/network/rfswitch.pm
new file mode 100644
index 0000000..4617990
--- /dev/null
+++ b/lib/network/rfswitch.pm
@@ -0,0 +1,38 @@
+package network::rfswitch;
+
+use strict;
+use MDK::Common;
+use detect_devices;
+
+my $conf_file = "/etc/modprobe.d/rfswitch.conf";
+
+my @settings = (
+ {
+ match => sub {
+ # CL56, with buggy BIOS
+ detect_devices::dmidecode_category('BIOS')->{Vendor} eq 'COMPAL' &&
+ detect_devices::dmidecode_category('System')->{'Product Name'} eq '<BAD INDEX>';
+ },
+ module => 'acerhk',
+ options => 'usedritek=1 autowlan=1 force_series=290',
+ install => 'echo 1 > /proc/driver/acerhk/wirelessled',
+ remove => 'echo 0 > /proc/driver/acerhk/wirelessled',
+ },
+);
+
+sub configure() {
+ my $setting = find { $_->{match}->() } @settings;
+ if ($setting) {
+ output_p($::prefix . $conf_file,
+ join("\n",
+ if_($setting->{options}, "options $setting->{module} $setting->{options}"),
+ if_($setting->{install}, "install $setting->{module} /sbin/modprobe --first-time --ignore-install $setting->{module} && $setting->{install}"),
+ if_($setting->{remove}, "remove $setting->{module} $setting->{remove}; /sbin/modprobe -r --ignore-remove $setting->{module}"),
+ "",
+ ));
+ require modules;
+ modules::set_preload_modules('rfswitch', $setting->{module});
+ }
+}
+
+1;