1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
|
--- a/config.mk
+++ b/config.mk
@@ -17,15 +17,19 @@ ifeq ($(CONFIG_MAC80211),y)
$(error "ERROR: you have MAC80211 compiled into the kernel, CONFIG_MAC80211=y, as such you cannot replace its mac80211 driver. You need this set to CONFIG_MAC80211=m. If you are using Fedora upgrade your kernel as later version should this set as modular. For further information on Fedora see https://bugzilla.redhat.com/show_bug.cgi?id=470143. If you are using your own kernel recompile it and make mac80211 modular")
endif
+
# We will warn when you don't have MQ support or NET_SCHED enabled.
#
# We could consider just quiting if MQ and NET_SCHED is disabled
# as I suspect all users of this package want 802.11e (WME) and
# 802.11n (HT) support.
-ifeq ($(shell test -e $(KLIB_BUILD)/Makefile && echo yes),yes)
-KERNEL_SUBLEVEL = $(shell $(MAKE) -C $(KLIB_BUILD) kernelversion | sed -n 's/^2\.6\.\([0-9]\+\).*/\1/p')
+ifneq ($(wildcard $(KLIB_BUILD)/Makefile),)
+COMPAT_LATEST_VERSION = 32
+KERNEL_SUBLEVEL ?= $(shell $(MAKE) -C $(KLIB_BUILD) kernelversion | sed -n 's/^2\.6\.\([0-9]\+\).*/\1/p')
+COMPAT_VERSIONS ?= $(shell I=$(COMPAT_LATEST_VERSION); while [ "$$I" -gt $(KERNEL_SUBLEVEL) ]; do echo $$I; I=$$(($$I - 1)); done)
+$(foreach ver,$(COMPAT_VERSIONS),$(eval CONFIG_COMPAT_WIRELESS_$(ver)=y))
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -lt 25 && echo yes),yes)
+ifdef CONFIG_COMPAT_WIRELESS_25
$(error "ERROR: You should use compat-wireless-2.6-old for older kernels, this one is for kernels >= 2.6.25")
endif
@@ -34,56 +38,10 @@ $(error "ERROR: your kernel has CONFIG_C
endif
-# Compat wireless compat-2.6.2x.c files gets selected here
-
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 21 && echo yes),yes)
-CONFIG_COMPAT_WIRELESS_22=y
-endif
-
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 22 && echo yes),yes)
-CONFIG_COMPAT_WIRELESS_23=y
-endif
-
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 23 && echo yes),yes)
-CONFIG_COMPAT_WIRELESS_24=y
-endif
-
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 24 && echo yes),yes)
-CONFIG_COMPAT_WIRELESS_25=y
-endif
-
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 25 && echo yes),yes)
-CONFIG_COMPAT_WIRELESS_26=y
-endif
-
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 26 && echo yes),yes)
-CONFIG_COMPAT_WIRELESS_27=y
-endif
-
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 27 && echo yes),yes)
-CONFIG_COMPAT_WIRELESS_28=y
-endif
-
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 28 && echo yes),yes)
-CONFIG_COMPAT_WIRELESS_29=y
-endif
-
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 29 && echo yes),yes)
-CONFIG_COMPAT_WIRELESS_30=y
-endif
-
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 30 && echo yes),yes)
-CONFIG_COMPAT_WIRELESS_31=y
-endif
-
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 31 && echo yes),yes)
-CONFIG_COMPAT_WIRELESS_32=y
-endif
-
# 2.6.27 has FTRACE_DYNAMIC borked, so we will complain if
# you have it enabled, otherwise you will very likely run into
# a kernel panic.
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -eq 27 && echo yes),yes)
+ifeq ($(KERNEL_SUBLEVEL),27)
ifeq ($(CONFIG_DYNAMIC_FTRACE),y)
$(error "ERROR: Your 2.6.27 kernel has CONFIG_DYNAMIC_FTRACE, please upgrade your distribution kernel as newer ones should not have this enabled (and if so report a bug) or remove this warning if you know what you are doing")
endif
@@ -291,7 +249,7 @@ endif
ifneq ($(CONFIG_PCMCIA),)
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 26 && echo yes),yes)
+ifdef CONFIG_COMPAT_WIRELESS_25
CONFIG_LIBERTAS=n
CONFIG_LIBERTAS_CS=n
else
@@ -327,7 +285,7 @@ CONFIG_RTL8187=m
CONFIG_AT76C50X_USB=m
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -ge 28 && echo yes),yes)
+ifndef CONFIG_COMPAT_WIRELESS_28
CONFIG_AR9170_USB=m
CONFIG_AR9170_LEDS=y
endif
@@ -343,7 +301,7 @@ CONFIG_RT73USB=m
NEED_RT2X00_FIRMWARE=y
endif
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 26 && echo yes),yes)
+ifdef CONFIG_COMPAT_WIRELESS_27
CONFIG_LIBERTAS_THINFIRM_USB=n
CONFIG_LIBERTAS_USB=n
NEED_LIBERTAS=n
@@ -360,7 +318,7 @@ ifneq ($(CONFIG_SPI_MASTER),)
CONFIG_WL1251=m
CONFIG_P54_SPI=m
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 26 && echo yes),yes)
+ifdef CONFIG_COMPAT_WIRELESS_27
CONFIG_LIBERTAS_SPI=n
NEED_LIBERTAS=n
else
@@ -372,7 +330,7 @@ endif # end of SPI driver list
ifneq ($(CONFIG_MMC),)
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 26 && echo yes),yes)
+ifdef CONFIG_COMPAT_WIRELESS_27
CONFIG_LIBERTAS_SDIO=n
NEED_LIBERTAS=n
else
@@ -382,7 +340,7 @@ endif
# Activate iwmc3200wifi support only on kernel >= 2.6.29.
# iwmc3200wifi uses new netdev_ops api no supported by old kernel.
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -ge 29 && echo yes),yes)
+ifndef CONFIG_COMPAT_WIRELESS_29
CONFIG_IWM=m
# CONFIG_IWM_DEBUG=y
endif
@@ -425,7 +383,7 @@ CONFIG_SSB=m
CONFIG_SSB_SPROM=y
# CONFIG_SSB_DEBUG=y
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 26 && echo yes),yes)
+ifdef CONFIG_COMPAT_WIRELESS_27
CONFIG_LIBERTAS=n
else
ifeq ($(NEED_LIBERTAS),y)
@@ -437,7 +395,7 @@ endif
# We need the backported rfkill module on kernel < 2.6.31.
# In more recent kernel versions use the in kernel rfkill module.
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 30 && echo yes),yes)
+ifdef CONFIG_COMPAT_WIRELESS_31
CONFIG_RFKILL_BACKPORT=m
CONFIG_RFKILL_BACKPORT_LEDS=y
CONFIG_RFKILL_BACKPORT_INPUT=y
|