Skip to contentSkip to conversation

compat-wireless: Handle name change from iwlagn to iwlwifi in 3.2

PATCH In review Don Fry 2 participants 2 messages Jan 6, 2012 – Mar 4, 2012 Kbuild

lore
Share & tools
lore

Don Fry

author
#0 lore raw

PATCH 1/1 compat-wireless: Handle name change from iwlagn to iwlwifi in 3.2

From: Don Fry <[email protected]>

With linux-3.2 the iwlagn driver is renamed iwlwifi. For some kernels (like 3.1.5) this causes the non-compat iwlagn.ko to try and run against the compat mac80211 resulting in a kernel oops. This change prevents the non-compat iwlagn.ko from being loaded.

---
 Makefile            |   17 +++++++++++++++--
 scripts/iwl-enable  |   11 ++++++++++-
 scripts/unload.sh   |    2 +-
 scripts/wlunload.sh |    2 +-
 4 files changed, 27 insertions(+), 5 deletions(-)
Makefile +15 -2
index d3a9d93..d66ebe4 100644
@@ -9,7 +9,9 @@ export KLIB_BUILD ?=	$(KLIB)/build
 # Sometimes not available in the path
 MODPROBE := /sbin/modprobe
 MADWIFI=$(shell $(MODPROBE) -l ath_pci)
-OLD_IWL=$(shell $(MODPROBE) -l iwl4965)
+NEW_IWL=$(shell $(MODPROBE) -l iwlwifi)
+OLD_IWL=$(shell $(MODPROBE) -l iwlagn)
+ANCIENT_IWL=$(shell $(MODPROBE) -l iwl4965)
 
 DESTDIR?=
 
@@ -187,7 +189,7 @@ install-scripts:
 		echo Running athenable ath5k...;\
 		/usr/sbin/athenable ath5k ;\
 	fi
-	@if [ ! -z "$(OLD_IWL)" ] && [ -z "$(DESTDIR)" ]; then \
+	@if [ ! -z "$(ANCIENT_IWL)" ] && [ ! -z "$(OLD_IWL)" ] && [ -z "$(DESTDIR)" ]; then \
 		echo ;\
 		echo -n "Note: iwl4965 detected, we're going to disable it. "  ;\
 		echo "If you would like to enable it later you can run:"  ;\
@@ -196,6 +198,15 @@ install-scripts:
 		echo Running iwl-enable iwlagn...;\
 		/usr/sbin/iwl-enable iwlagn ;\
 	fi
+	@if [ ! -z "$(NEW_IWL)" ] && [ ! -z "$(OLD_IWL)" ] && [ -z "$(DESTDIR)" ]; then \
+		echo ;\
+		echo -n "Note: iwlagn detected, we're going to disable it. "  ;\
+		echo "If you would like to enable it later you can run:"  ;\
+		echo "    sudo iwl-load iwlagn"  ;\
+		echo ;\
+		echo Running iwl-enable iwlwifi...;\
+		/usr/sbin/iwl-enable iwlwifi ;\
+	fi
 	@# If on distributions like Mandriva which like to
 	@# compress their modules this will find out and do
 	@# it for you. Reason is some old version of modutils
@@ -234,6 +245,7 @@ install-scripts:
 	@$(MODPROBE) -l ipw2200
 	@$(MODPROBE) -l iwl3945
 	@$(MODPROBE) -l iwlagn
+	@$(MODPROBE) -l iwlwifi
 	@$(MODPROBE) -l iwlcore
 	@$(MODPROBE) -l iwmc3200wifi
 	@$(MODPROBE) -l lib80211_crypt_ccmp
@@ -364,6 +376,7 @@ uninstall:
 	@$(MODPROBE) -l ipw2100
 	@$(MODPROBE) -l ipw2200
 	@$(MODPROBE) -l iwl3945
+	@$(MODPROBE) -l iwlwifi
 	@$(MODPROBE) -l iwlagn
 	@$(MODPROBE) -l iwlcore
 	@$(MODPROBE) -l iwmc3200wifi
scripts/iwl-enable +10 -1
index 765195b..0737024 100755
@@ -17,7 +17,14 @@ IWL_NEW="iwlagn"
 IWL_OLD="iwl4965"
 
 # Appended to module file at the end when we want to ignore one
-USAGE="Usage: $0 [ $IWL_NEW | $IWL_OLD ]"
+USAGE="Usage: $0 [ $IWL_NEW | $IWL_OLD | iwlwifi]"
+
+function enable_iwlwifi {
+	for i in $IWL_OLD $IWL_NEW; do
+		module_disable $i
+	done
+	module_enable iwlwifi
+}
 
 function enable_iwlagn {
 	module_disable $IWL_OLD
@@ -41,6 +48,8 @@ if [ "$MODULE" == "iwl4965" ]; then
 	module_enable $IWL_OLD
 elif [ "$MODULE" == "iwlagn" ]; then
 	enable_iwlagn
+elif [ "$MODULE" == "iwlwifi" ]; then
+	enable_iwlwifi
 else
 	echo "$USAGE"
 	exit
scripts/unload.sh +1 -1
index abc5e72..b791b6e 100755
@@ -15,7 +15,7 @@ MODULES="$MODULES adm8211 zd1211rw"
 MODULES="$MODULES orinoco_cs orinoco_nortel orinoco_pci orinoco_plx"
 MODULES="$MODULES orinoco_tld orinoco_usb spectrum_cs orinoco"
 MODULES="$MODULES b43 b44 b43legacy brcm80211 ssb"
-MODULES="$MODULES iwl3945 iwlagn iwlcore"
+MODULES="$MODULES iwl3945 iwlwifi iwlagn iwlcore"
 MODULES="$MODULES ath9k ath9k_htc ath9k_common ath9k_hw "
 MODULES="$MODULES ath5k ath ath6kl ar9170usb carl9170"
 MODULES="$MODULES p54pci p54usb p54spi p54common"
scripts/wlunload.sh +1 -1
index cd6298d..c6c6af9 100755
@@ -15,7 +15,7 @@ MODULES="$MODULES adm8211 zd1211rw"
 MODULES="$MODULES orinoco_cs orinoco_nortel orinoco_pci orinoco_plx"
 MODULES="$MODULES orinoco_tld orinoco_usb spectrum_cs orinoco"
 MODULES="$MODULES b43 b44 b43legacy brcm80211 ssb"
-MODULES="$MODULES iwl3945 iwlagn iwlcore"
+MODULES="$MODULES iwl3945 iwlwifi iwlagn iwlcore"
 MODULES="$MODULES ath9k ath9k_htc ath9k_common ath9k_hw "
 MODULES="$MODULES ath5k ath ath6kl ar9170usb carl9170"
 MODULES="$MODULES p54pci p54usb p54spi p54common"
Signature · 1 line
1.7.4.4
#1 lore raw
Quoted 6 lines · Don Fry

From: Don Fry <[email protected]>

With linux-3.2 the iwlagn driver is renamed iwlwifi. For some kernels (like 3.1.5) this causes the non-compat iwlagn.ko to try and run against the compat mac80211 resulting in a kernel oops. This change prevents the non-compat iwlagn.ko from being loaded.

Hey Luis, I don't see this in your tree, did you just miss it?

johannes