Răsfoiți Sursa

Update mac80211 and make b43 driver build and load on targets other than brcm47xx (#4266)

Signed-off-by: Hauke Mehrtens <[email protected]>

SVN-Revision: 13431
Florian Fainelli 17 ani în urmă
părinte
comite
dff2c6a6d0

+ 15 - 7
package/mac80211/Makefile

@@ -13,12 +13,12 @@ PKG_NAME:=mac80211
 PKG_RELEASE:=1
 
 ifneq ($(CONFIG_LINUX_2_6_27),)
-  PKG_VERSION:=2008-11-03
-  PKG_SOURCE_URL:=http://www.orbit-lab.org/kernel/compat-wireless-2.6/2008/11
+  PKG_VERSION:=2008-11-29
+  PKG_SOURCE_URL:=http://wireless.kernel.org/download/compat-wireless-2.6/
 else
   PKG_VERSION:=2008-08-06
   PKG_SOURCE_URL:=http://www.orbit-lab.org/kernel/compat-wireless-2.6/2008/08
-  PATCH_DIR:=$(if $(CONFIG_TARGET_brcm47xx),./patches-brcm,./patches-old)
+  PATCH_DIR:=./patches-old
 endif
 
 PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2
@@ -288,7 +288,7 @@ define KernelPackage/b43-common
   SUBMENU:=$(WMENU)
   TITLE:=Generic stuff for Broadcom wireless devices
   URL:=http://linuxwireless.org/en/users/Drivers/b43
-  DEPENDS:=+kmod-mac80211 +!TARGET_brcm47xx:kmod-ssb
+  DEPENDS:=+kmod-mac80211 +!TARGET_brcm47xx:kmod-ssb @LINUX_2_6_25||@LINUX_2_6_26||@LINUX_2_6_27||@LINUX_2_6_28
 endef
 
 define KernelPackage/b43
@@ -316,7 +316,9 @@ endef
 BUILDFLAGS:= \
 	-I$(PKG_BUILD_DIR)/include \
 	$(foreach opt,$(CONFOPTS),-DCONFIG_$(opt)) \
-	$(if $(CONFIG_LEDS_TRIGGERS), -DCONFIG_MAC80211_LEDS -DCONFIG_LEDS_TRIGGERS) \
+	$(if $(CONFIG_LEDS_TRIGGERS), -DCONFIG_MAC80211_LEDS -DCONFIG_LEDS_TRIGGERS -DCONFIG_B43_LEDS -DCONFIG_B43LEGACY_LEDS) \
+	$(if $(CONFIG_RFKILL),-DCONFIG_B43_RFKILL -DCONFIG_B43LEGACY_RFKILL) \
+	$(if $(CONFIG_PCMCIA),-DCONFIG_B43_PCMCIA) \
 	$(if $(CONFIG_DEBUG_FS), -DCONFIG_MAC80211_DEBUGFS) \
 	-D__CONFIG_MAC80211_RC_DEFAULT=minstrel \
 
@@ -330,6 +332,13 @@ MAKE_OPTS:= \
 	CONFIG_MAC80211_RC_MINSTREL=y \
 	CONFIG_MAC80211_LEDS=$(CONFIG_LEDS_TRIGGERS) \
 	CONFIG_MAC80211_DEBUGFS=$(CONFIG_DEBUG_FS) \
+	CONFIG_B43_PCMCIA=$(CONFIG_PCMCIA) \
+	CONFIG_B43_RFKILL=$(CONFIG_RFKILL) \
+	CONFIG_B43LEGACY_RFKILL=$(CONFIG_RFKILL) \
+	CONFIG_B43LEGACY_LEDS=$(CONFIG_LEDS_TRIGGERS) \
+	CONFIG_B43_LEDS=$(CONFIG_LEDS_TRIGGERS) \
+	$(if $(CONFIG_PACKAGE_kmod-b43),CONFIG_B43=m) \
+	$(if $(CONFIG_PACKAGE_kmod-b43legacy),CONFIG_B43LEGACY=m) \
 	KLIB_BUILD="$(LINUX_DIR)" \
 	MODPROBE=:
 
@@ -343,8 +352,7 @@ define Build/Prepare
 	unzip -jod $(PKG_BUILD_DIR) $(DL_DIR)/$(RT71FW)
 	-unzip -jod $(PKG_BUILD_DIR) $(DL_DIR)/$(RT2860FW)
 	$(TAR) -C $(PKG_BUILD_DIR) -xjf $(DL_DIR)/$(ZD1211FW_NAME)-$(ZD1211FW_VERSION).tar.bz2
-	$(if $(CONFIG_TARGET_brcm47xx),rm -rf $(PKG_BUILD_DIR)/include/linux/ssb)
-	rm $(PKG_BUILD_DIR)/include/net/ieee80211_crypt.h
+	rm -rf $(PKG_BUILD_DIR)/include/linux/ssb
 	rm $(PKG_BUILD_DIR)/include/net/ieee80211.h
 	rm $(PKG_BUILD_DIR)/include/net/ieee80211_radiotap.h
 	rm $(PKG_BUILD_DIR)/include/linux/eeprom_93cx6.h

+ 0 - 157
package/mac80211/patches-brcm/001-disable_drivers.patch

@@ -1,157 +0,0 @@
-diff -urN compat-wireless-2008-08-06/config.mk compat-wireless-2008-08-06.new/config.mk
---- compat-wireless-2008-08-06/config.mk	2008-07-18 06:11:03.000000000 +0200
-+++ compat-wireless-2008-08-06.new/config.mk	2008-11-15 00:26:38.000000000 +0100
-@@ -72,70 +72,34 @@
- CONFIG_ATH5K=m
- CONFIG_ATH5K_DEBUG=n
- 
--# Required for older kernels which still use this flag.
--CONFIG_IWLWIFI=m
--
--CONFIG_IWLCORE=m
--CONFIG_IWL3945=m
--CONFIG_IWL4965=m
--CONFIG_IWL4965_HT=y
- CONFIG_B43=m
-+CONFIG_B43_NPHY=y
- # B43 uses PCMCIA only for Compact Flash. The Cardbus cards uses PCI
- # Example, bcm4318:
- # http://www.multicap.biz/wireless-lan/indoor-wlan-hardware/sdc-cf10g-80211g-compact-flash-module
--CONFIG_B43_PCMCIA=y
-+# CONFIG_B43_PCMCIA=y
- CONFIG_B43_DMA=y
--CONFIG_B43_PIO=y
-+# CONFIG_B43_PIO=y
- # B43_PIO selects SSB_BLOCKIO
--CONFIG_SSB_BLOCKIO=y
--CONFIG_B43_DMA_AND_PIO_MODE=y
--CONFIG_B43_PCI_AUTOSELECT=y
--CONFIG_B43_PCICORE_AUTOSELECT=y
--#CONFIG_B43_RFKILL=n
-+# CONFIG_SSB_BLOCKIO=y
-+# CONFIG_B43_DMA_AND_PIO_MODE=y
-+# CONFIG_B43_PCI_AUTOSELECT=y
-+# CONFIG_B43_PCICORE_AUTOSELECT=y
-+CONFIG_B43_RFKILL=y
- CONFIG_B43_LEDS=y
- # CONFIG_B43_DEBUG is not set
- 
- CONFIG_B43LEGACY=m
--CONFIG_B43LEGACY_PCI_AUTOSELECT=y
--CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y
-+CONFIG_B43LEGACY_RFKILL=y
-+CONFIG_B43LEGACY_LEDS=y
-+# CONFIG_B43LEGACY_PCI_AUTOSELECT=y
-+# CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y
- CONFIG_B43LEGACY_DMA=y
--CONFIG_B43LEGACY_PIO=y
--CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
--
--# The Intel ipws
--CONFIG_IPW2100=m
--CONFIG_IPW2100_MONITOR=y
--CONFIG_IPW2200=m
--CONFIG_IPW2200_MONITOR=y
--CONFIG_IPW2200_RADIOTAP=y
--CONFIG_IPW2200_PROMISCUOUS=y
--# The above enables use a second interface prefixed 'rtap'.
--#           Example usage:
--#
--# % modprobe ipw2200 rtap_iface=1
--# % ifconfig rtap0 up
--# % tethereal -i rtap0
--#
--# If you do not specify 'rtap_iface=1' as a module parameter then
--# the rtap interface will not be created and you will need to turn
--# it on via sysfs:
--#
--# % echo 1 > /sys/bus/pci/drivers/ipw2200/*/rtap_iface
--CONFIG_IPW2200_QOS=y
--
--NEED_IEEE80211=y
-+# CONFIG_B43LEGACY_PIO=y
-+# CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
- 
- CONFIG_P54_PCI=m
- 
--CONFIG_SSB_PCIHOST_POSSIBLE=y
--CONFIG_SSB_PCIHOST=y
--CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
--CONFIG_SSB_DRIVER_PCICORE=y
--CONFIG_SSB_B43_PCI_BRIDGE=y
--
--CONFIG_RTL8180=m
--CONFIG_ADM8211=m
--
- CONFIG_RT2X00_LIB_PCI=m
- CONFIG_RT2400PCI=m
- CONFIG_RT2500PCI=m
-@@ -159,31 +123,7 @@
- ifneq ($(CONFIG_USB),)
- CONFIG_ZD1211RW=m
- 
--# support for USB Wireless devices using Atmel at76c503,
--# at76c505 or at76c505a chips.
--CONFIG_USB_ATMEL=m
--
--# Stuff here things which depend on kernel versions for USB
--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')
--ifeq ($(shell test $(KERNEL_SUBLEVEL) -gt 21 && echo yes),yes)
--
--# Sorry, rndis_wlan uses cancel_work_sync which is new and can't be done in compat...
--
--# Wireless RNDIS USB support (RTL8185 802.11g) A-Link WL54PC
--# All of these devices are based on Broadcom 4320 chip which
--# is only wireless RNDIS chip known to date.
--# Note: this depends on CONFIG_USB_NET_RNDIS_HOST and CONFIG_USB_NET_CDCETHER
--# it also requires new RNDIS_HOST and CDC_ETHER modules which we add
--CONFIG_USB_NET_RNDIS_HOST=m
--CONFIG_USB_NET_RNDIS_WLAN=m
--CONFIG_USB_NET_CDCETHER=m
--
--endif
--endif
--
- CONFIG_P54_USB=m
--CONFIG_RTL8187=m
- 
- # RT2500USB does not require firmware
- CONFIG_RT2500USB=m
-@@ -212,36 +152,6 @@
- # p54
- CONFIG_P54_COMMON=m
- 
--# Sonics Silicon Backplane
--CONFIG_SSB_POSSIBLE=y
--CONFIG_SSB=m
--CONFIG_SSB_SPROM=y
--
--ifneq ($(CONFIG_PCMCIA),)
--CONFIG_SSB_PCMCIAHOST=y
--endif
--
--# These two are for mips
--CONFIG_SSB_DRIVER_MIPS=n
--CONFIG_SSB_PCICORE_HOSTMODE=n
--# CONFIG_SSB_DEBUG is not set
--# CONFIG_SSB_DRIVER_EXTIF=y
--
--ifneq ($(CONFIG_USB),)
--CONFIG_LIBERTAS_USB=m
--NEED_LIBERTAS=y
--endif
--ifneq ($(CONFIG_PCMCIA),)
--CONFIG_LIBERTAS_CS=m
--NEED_LIBERTAS=y
--endif
--ifeq ($(NEED_LIBERTAS),y)
--CONFIG_LIBERTAS=m
--# Libertas uses the old stack but not fully, it will soon 
--# be cleaned.
--NEED_IEEE80211=y
--endif
--
- ifeq ($(NEED_IEEE80211),y)
- # Old ieee80211 "stack"
- # Note: old softmac is scheduled for removal so we

+ 0 - 25
package/mac80211/patches-brcm/004-allow-ap-vlan-modes.patch

@@ -1,25 +0,0 @@
-Subject: mac80211: allow AP and VLAN modes
-
-This patch allows switching interfaces into AP/VLAN modes using
-cfg80211 (nl80211). Don't allow doing it with wext because then
-people will just attempt to do it manually (without hostapd) and
-complain that it doesn't work.
-
-Signed-off-by: Johannes Berg <[email protected]>
----
- net/mac80211/cfg.c |    4 ++++
- 1 file changed, 4 insertions(+)
-
---- everything.orig/net/mac80211/cfg.c	2008-08-06 21:38:13.000000000 +0200
-+++ everything/net/mac80211/cfg.c	2008-08-06 21:38:24.000000000 +0200
-@@ -33,6 +33,10 @@ nl80211_type_to_mac80211_type(enum nl802
- 	case NL80211_IFTYPE_MESH_POINT:
- 		return IEEE80211_IF_TYPE_MESH_POINT;
- #endif
-+	case NL80211_IFTYPE_AP:
-+		return IEEE80211_IF_TYPE_AP;
-+	case NL80211_IFTYPE_AP_VLAN:
-+		return IEEE80211_IF_TYPE_VLAN;
- 	case NL80211_IFTYPE_WDS:
- 		return IEEE80211_IF_TYPE_WDS;
- 	default:

+ 30 - 14
package/mac80211/patches-old/001-disable_drivers.patch

@@ -1,7 +1,6 @@
-diff -urN compat-wireless-2008-08-06/config.mk compat-wireless-2008-08-06.new/config.mk
 --- compat-wireless-2008-08-06/config.mk	2008-07-18 06:11:03.000000000 +0200
-+++ compat-wireless-2008-08-06.new/config.mk	2008-11-15 00:21:17.000000000 +0100
-@@ -72,70 +72,8 @@
++++ compat-wireless-2008-08-06.new/config.mk	2008-11-28 21:10:31.000000000 +0100
+@@ -72,70 +72,34 @@
  CONFIG_ATH5K=m
  CONFIG_ATH5K_DEBUG=n
  
@@ -13,25 +12,40 @@ diff -urN compat-wireless-2008-08-06/config.mk compat-wireless-2008-08-06.new/co
 -CONFIG_IWL4965=m
 -CONFIG_IWL4965_HT=y
 -CONFIG_B43=m
--# B43 uses PCMCIA only for Compact Flash. The Cardbus cards uses PCI
--# Example, bcm4318:
--# http://www.multicap.biz/wireless-lan/indoor-wlan-hardware/sdc-cf10g-80211g-compact-flash-module
++# CONFIG_B43=m
++CONFIG_B43_NPHY=y
+ # B43 uses PCMCIA only for Compact Flash. The Cardbus cards uses PCI
+ # Example, bcm4318:
+ # http://www.multicap.biz/wireless-lan/indoor-wlan-hardware/sdc-cf10g-80211g-compact-flash-module
 -CONFIG_B43_PCMCIA=y
--CONFIG_B43_DMA=y
++# CONFIG_B43_PCMCIA=y
+ CONFIG_B43_DMA=y
 -CONFIG_B43_PIO=y
--# B43_PIO selects SSB_BLOCKIO
++# CONFIG_B43_PIO=y
+ # B43_PIO selects SSB_BLOCKIO
 -CONFIG_SSB_BLOCKIO=y
 -CONFIG_B43_DMA_AND_PIO_MODE=y
 -CONFIG_B43_PCI_AUTOSELECT=y
 -CONFIG_B43_PCICORE_AUTOSELECT=y
 -#CONFIG_B43_RFKILL=n
 -CONFIG_B43_LEDS=y
--# CONFIG_B43_DEBUG is not set
--
++# CONFIG_SSB_BLOCKIO=y
++# CONFIG_B43_DMA_AND_PIO_MODE=y
++# CONFIG_B43_PCI_AUTOSELECT=y
++# CONFIG_B43_PCICORE_AUTOSELECT=y
++# CONFIG_B43_RFKILL=y
++# CONFIG_B43_LEDS=y
+ # CONFIG_B43_DEBUG is not set
+ 
 -CONFIG_B43LEGACY=m
 -CONFIG_B43LEGACY_PCI_AUTOSELECT=y
 -CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y
--CONFIG_B43LEGACY_DMA=y
++# CONFIG_B43LEGACY=m
++# CONFIG_B43LEGACY_RFKILL=y
++# CONFIG_B43LEGACY_LEDS=y
++# CONFIG_B43LEGACY_PCI_AUTOSELECT=y
++# CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y
+ CONFIG_B43LEGACY_DMA=y
 -CONFIG_B43LEGACY_PIO=y
 -CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
 -
@@ -57,7 +71,9 @@ diff -urN compat-wireless-2008-08-06/config.mk compat-wireless-2008-08-06.new/co
 -CONFIG_IPW2200_QOS=y
 -
 -NEED_IEEE80211=y
--
++# CONFIG_B43LEGACY_PIO=y
++# CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
+ 
  CONFIG_P54_PCI=m
  
 -CONFIG_SSB_PCIHOST_POSSIBLE=y
@@ -72,7 +88,7 @@ diff -urN compat-wireless-2008-08-06/config.mk compat-wireless-2008-08-06.new/co
  CONFIG_RT2X00_LIB_PCI=m
  CONFIG_RT2400PCI=m
  CONFIG_RT2500PCI=m
-@@ -159,31 +97,7 @@
+@@ -159,31 +123,7 @@
  ifneq ($(CONFIG_USB),)
  CONFIG_ZD1211RW=m
  
@@ -104,7 +120,7 @@ diff -urN compat-wireless-2008-08-06/config.mk compat-wireless-2008-08-06.new/co
  
  # RT2500USB does not require firmware
  CONFIG_RT2500USB=m
-@@ -212,36 +126,6 @@
+@@ -212,36 +152,6 @@
  # p54
  CONFIG_P54_COMMON=m
  

+ 0 - 0
package/mac80211/patches-brcm/002-ssb-backport.patch → package/mac80211/patches-old/002-ssb-backport.patch


+ 10 - 0
package/mac80211/patches-old/005-disable_ssb_build.patch

@@ -0,0 +1,10 @@
+--- a/Makefile	2008-07-18 06:11:03.000000000 +0200
++++ b/Makefile	2008-11-28 19:31:58.000000000 +0100
+@@ -19,7 +19,6 @@
+ obj-y := net/wireless/ net/mac80211/
+ ifeq ($(ONLY_CORE),)
+ obj-y += net/ieee80211/ \
+-	drivers/ssb/ \
+ 	drivers/misc/ \
+ 	drivers/net/usb/ \
+ 	drivers/net/wireless/

+ 0 - 201
package/mac80211/patches/000-kconfig.patch

@@ -1,201 +0,0 @@
---- /dev/null
-+++ b/net/mac80211/Kconfig
-@@ -0,0 +1,198 @@
-+config MAC80211
-+	tristate "Generic IEEE 802.11 Networking Stack (mac80211)"
-+	select CRYPTO
-+	select CRYPTO_ECB
-+	select CRYPTO_ARC4
-+	select CRYPTO_AES
-+	select CRC32
-+	select WIRELESS_EXT
-+	select CFG80211
-+	---help---
-+	  This option enables the hardware independent IEEE 802.11
-+	  networking stack.
-+
-+menu "Rate control algorithm selection"
-+	depends on MAC80211 != n
-+
-+config MAC80211_RC_PID
-+	bool "PID controller based rate control algorithm" if EMBEDDED
-+	default y
-+	---help---
-+	  This option enables a TX rate control algorithm for
-+	  mac80211 that uses a PID controller to select the TX
-+	  rate.
-+
-+choice
-+	prompt "Default rate control algorithm"
-+	default MAC80211_RC_DEFAULT_PID
-+	---help---
-+	  This option selects the default rate control algorithm
-+	  mac80211 will use. Note that this default can still be
-+	  overriden through the ieee80211_default_rc_algo module
-+	  parameter if different algorithms are available.
-+
-+config MAC80211_RC_DEFAULT_PID
-+	bool "PID controller based rate control algorithm"
-+	depends on MAC80211_RC_PID
-+	---help---
-+	  Select the PID controller based rate control as the
-+	  default rate control algorithm. You should choose
-+	  this unless you know what you are doing.
-+
-+endchoice
-+
-+config MAC80211_RC_DEFAULT
-+	string
-+	default "pid" if MAC80211_RC_DEFAULT_PID
-+	default ""
-+
-+endmenu
-+
-+config MAC80211_MESH
-+	bool "Enable mac80211 mesh networking (pre-802.11s) support"
-+	depends on MAC80211 && EXPERIMENTAL
-+	---help---
-+	 This options enables support of Draft 802.11s mesh networking.
-+	 The implementation is based on Draft 1.08 of the Mesh Networking
-+	 amendment. For more information visit http://o11s.org/.
-+
-+
-+config MAC80211_LEDS
-+	bool "Enable LED triggers"
-+	depends on MAC80211
-+	select NEW_LEDS
-+	select LEDS_TRIGGERS
-+	---help---
-+	  This option enables a few LED triggers for different
-+	  packet receive/transmit events.
-+
-+config MAC80211_DEBUGFS
-+	bool "Export mac80211 internals in DebugFS"
-+	depends on MAC80211 && DEBUG_FS
-+	---help---
-+	  Select this to see extensive information about
-+	  the internal state of mac80211 in debugfs.
-+
-+	  Say N unless you know you need this.
-+
-+menuconfig MAC80211_DEBUG_MENU
-+	bool "Select mac80211 debugging features"
-+	depends on MAC80211
-+	---help---
-+	  This option collects various mac80211 debug settings.
-+
-+config MAC80211_DEBUG_PACKET_ALIGNMENT
-+	bool "Enable packet alignment debugging"
-+	depends on MAC80211_DEBUG_MENU
-+	---help---
-+	  This option is recommended for driver authors and strongly
-+	  discouraged for everybody else, it will trigger a warning
-+	  when a driver hands mac80211 a buffer that is aligned in
-+	  a way that will cause problems with the IP stack on some
-+	  architectures.
-+
-+	  Say N unless you're writing a mac80211 based driver.
-+
-+config MAC80211_NOINLINE
-+	bool "Do not inline TX/RX handlers"
-+	depends on MAC80211_DEBUG_MENU
-+	---help---
-+	  This option affects code generation in mac80211, when
-+	  selected some functions are marked "noinline" to allow
-+	  easier debugging of problems in the transmit and receive
-+	  paths.
-+
-+	  This option increases code size a bit and inserts a lot
-+	  of function calls in the code, but is otherwise safe to
-+	  enable.
-+
-+	  If unsure, say N unless you expect to be finding problems
-+	  in mac80211.
-+
-+config MAC80211_VERBOSE_DEBUG
-+	bool "Verbose debugging output"
-+	depends on MAC80211_DEBUG_MENU
-+	---help---
-+	  Selecting this option causes mac80211 to print out
-+	  many debugging messages. It should not be selected
-+	  on production systems as some of the messages are
-+	  remotely triggerable.
-+
-+	  Do not select this option.
-+
-+config MAC80211_HT_DEBUG
-+	bool "Verbose HT debugging"
-+	depends on MAC80211_DEBUG_MENU
-+	---help---
-+	  This option enables 802.11n High Throughput features
-+	  debug tracing output.
-+
-+	  It should not be selected on production systems as some
-+	  of the messages are remotely triggerable.
-+
-+	  Do not select this option.
-+
-+config MAC80211_TKIP_DEBUG
-+	bool "Verbose TKIP debugging"
-+	depends on MAC80211_DEBUG_MENU
-+	---help---
-+	  Selecting this option causes mac80211 to print out
-+	  very verbose TKIP debugging messages. It should not
-+	  be selected on production systems as those messages
-+	  are remotely triggerable.
-+
-+	  Do not select this option.
-+
-+config MAC80211_IBSS_DEBUG
-+	bool "Verbose IBSS debugging"
-+	depends on MAC80211_DEBUG_MENU
-+	---help---
-+	  Selecting this option causes mac80211 to print out
-+	  very verbose IBSS debugging messages. It should not
-+	  be selected on production systems as those messages
-+	  are remotely triggerable.
-+
-+	  Do not select this option.
-+
-+config MAC80211_VERBOSE_PS_DEBUG
-+	bool "Verbose powersave mode debugging"
-+	depends on MAC80211_DEBUG_MENU
-+	---help---
-+	  Selecting this option causes mac80211 to print out very
-+	  verbose power save mode debugging messages (when mac80211
-+	  is an AP and has power saving stations.)
-+	  It should not be selected on production systems as those
-+	  messages are remotely triggerable.
-+
-+	  Do not select this option.
-+
-+config MAC80211_VERBOSE_MPL_DEBUG
-+	bool "Verbose mesh peer link debugging"
-+	depends on MAC80211_DEBUG_MENU
-+	depends on MAC80211_MESH
-+	---help---
-+	  Selecting this option causes mac80211 to print out very
-+	  verbose mesh peer link debugging messages (when mac80211
-+	  is taking part in a mesh network).
-+	  It should not be selected on production systems as those
-+	  messages are remotely triggerable.
-+
-+	  Do not select this option.
-+
-+config MAC80211_DEBUG_COUNTERS
-+	bool "Extra statistics for TX/RX debugging"
-+	depends on MAC80211_DEBUG_MENU
-+	depends on MAC80211_DEBUGFS
-+	---help---
-+	  Selecting this option causes mac80211 to keep additional
-+	  and very verbose statistics about TX and RX handler use
-+	  and show them in debugfs.
-+
-+	  If unsure, say N.
-+
-+config MAC80211_VERBOSE_SPECT_MGMT_DEBUG
-+	bool "Verbose Spectrum Management (IEEE 802.11h)debugging"
-+	depends on MAC80211_DEBUG_MENU
-+	---help---
-+	  Say Y here to print out verbose Spectrum Management (IEEE 802.11h)
-+	  debug messages.

+ 14 - 0
package/mac80211/patches/005-disable_ssb_build.patch

@@ -0,0 +1,14 @@
+diff --git a/Makefile b/Makefile
+index 6a5eff4..225c711 100644
+--- a/Makefile
++++ b/Makefile
+@@ -20,8 +20,7 @@ NOSTDINC_FLAGS := -I$(M)/include/ -include $(M)/include/net/compat.h $(CFLAGS)
+ obj-y := net/wireless/ net/mac80211/
+ ifeq ($(ONLY_CORE),)
+ obj-$(CONFIG_B44) += drivers/net/b44.o
+-obj-y += drivers/ssb/ \
+-	drivers/misc/ \
++obj-y += drivers/misc/ \
+ 	drivers/net/usb/ \
+ 	drivers/net/wireless/
+ endif

+ 0 - 13
package/mac80211/patches/200-minstrel_default.patch

@@ -1,13 +0,0 @@
---- a/config.mk
-+++ b/config.mk
-@@ -47,8 +47,9 @@ endif
- endif # build check
- endif # kernel Makefile check
- 
--CONFIG_MAC80211_RC_DEFAULT=pid
-+CONFIG_MAC80211_RC_DEFAULT=minstrel
- CONFIG_MAC80211_RC_PID=y
-+CONFIG_MAC80211_RC_MINSTREL=y
- 
- # enable mesh networking too
- CONFIG_MAC80211_MESH=y

+ 58 - 17
package/mac80211/patches/210-remove_unused_stuff.patch

@@ -1,44 +1,85 @@
+diff --git a/config.mk b/config.mk
+index d94a976..39fcaea 100644
 --- a/config.mk
 +++ b/config.mk
-@@ -108,12 +108,12 @@ CONFIG_B43LEGACY_PIO=y
+@@ -69,10 +69,10 @@ CONFIG_MAC80211_LEDS=y
+ CONFIG_MAC80211_MESH=y
+ 
+ CONFIG_CFG80211=m
+-CONFIG_LIB80211=m
+-CONFIG_LIB80211_CRYPT_WEP=m
+-CONFIG_LIB80211_CRYPT_CCMP=m
+-CONFIG_LIB80211_CRYPT_TKIP=m
++#CONFIG_LIB80211=m
++#CONFIG_LIB80211_CRYPT_WEP=m
++#CONFIG_LIB80211_CRYPT_CCMP=m
++#CONFIG_LIB80211_CRYPT_TKIP=m
+ 
+ CONFIG_NL80211=y
+ # We'll disable this as soon major distributions
+@@ -101,14 +101,14 @@ CONFIG_B43=m
+ # B43 uses PCMCIA only for Compact Flash. The Cardbus cards uses PCI
+ # Example, bcm4318:
+ # http://www.multicap.biz/wireless-lan/indoor-wlan-hardware/sdc-cf10g-80211g-compact-flash-module
+-CONFIG_B43_PCMCIA=y
++#CONFIG_B43_PCMCIA=y
+ CONFIG_B43_PIO=y
+ # B43_PIO selects SSB_BLOCKIO
+ CONFIG_SSB_BLOCKIO=y
+ CONFIG_B43_PCI_AUTOSELECT=y
+ CONFIG_B43_PCICORE_AUTOSELECT=y
+ #CONFIG_B43_RFKILL=n
+-CONFIG_B43_LEDS=y
++#CONFIG_B43_LEDS=y
+ # CONFIG_B43_DEBUG is not set
+ 
+ CONFIG_B43LEGACY=m
+@@ -119,13 +119,13 @@ CONFIG_B43LEGACY_PIO=y
  CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
  
  # The Intel ipws
+-CONFIG_LIBIPW=m
 -CONFIG_IPW2100=m
 -CONFIG_IPW2100_MONITOR=y
 -CONFIG_IPW2200=m
 -CONFIG_IPW2200_MONITOR=y
 -CONFIG_IPW2200_RADIOTAP=y
 -CONFIG_IPW2200_PROMISCUOUS=y
-+# CONFIG_IPW2100=m
-+# CONFIG_IPW2100_MONITOR=y
-+# CONFIG_IPW2200=m
-+# CONFIG_IPW2200_MONITOR=y
-+# CONFIG_IPW2200_RADIOTAP=y
-+# CONFIG_IPW2200_PROMISCUOUS=y
++#CONFIG_LIBIPW=m
++#CONFIG_IPW2100=m
++#CONFIG_IPW2100_MONITOR=y
++#CONFIG_IPW2200=m
++#CONFIG_IPW2200_MONITOR=y
++#CONFIG_IPW2200_RADIOTAP=y
++#CONFIG_IPW2200_PROMISCUOUS=y
  # The above enables use a second interface prefixed 'rtap'.
  #           Example usage:
  #
-@@ -126,9 +126,9 @@ CONFIG_IPW2200_PROMISCUOUS=y
+@@ -138,7 +138,7 @@ CONFIG_IPW2200_PROMISCUOUS=y
  # it on via sysfs:
  #
  # % echo 1 > /sys/bus/pci/drivers/ipw2200/*/rtap_iface
 -CONFIG_IPW2200_QOS=y
-+# CONFIG_IPW2200_QOS=y
- 
--NEED_IEEE80211=y
-+# NEED_IEEE80211=y
++#CONFIG_IPW2200_QOS=y
  
  CONFIG_P54_PCI=m
  
-@@ -227,8 +227,8 @@ CONFIG_SSB_PCICORE_HOSTMODE=n
- # CONFIG_SSB_DRIVER_EXTIF=y
- 
+@@ -239,15 +239,15 @@ CONFIG_SSB_PCICORE_HOSTMODE=n
  ifneq ($(CONFIG_USB),)
--CONFIG_LIBERTAS_USB=m
+ ifneq ($(CONFIG_LIBERTAS_THINFIRM_USB),m)
+ CONFIG_LIBERTAS_USB=m
 -NEED_LIBERTAS=y
-+#CONFIG_LIBERTAS_USB=m
 +#NEED_LIBERTAS=y
+ endif
  endif
  ifneq ($(CONFIG_PCMCIA),)
  CONFIG_LIBERTAS_CS=m
+-NEED_LIBERTAS=y
++#NEED_LIBERTAS=y
+ endif
+ ifeq ($(NEED_LIBERTAS),y)
+-CONFIG_LIBERTAS=m
++#CONFIG_LIBERTAS=m
+ # Libertas uses the old stack but not fully, it will soon 
+ # be cleaned.
+ endif

+ 0 - 21
package/mac80211/patches/300-arm_alignment_fix.patch

@@ -1,21 +0,0 @@
-On ARM alignment is done slightly different from other architectures.
-struct ieee80211_tx_rate is aligned to word size, even though it only has 3
-single-byte members, which triggers the BUILD_BUG_ON in
-ieee80211_tx_info_clear_status
-
-This patch marks the struct ieee80211_tx_rate as packed, so that ARM
-behaves like the other architectures.
-
-Signed-off-by: Felix Fietkau <[email protected]>
-
---- a/include/net/mac80211.h
-+++ b/include/net/mac80211.h
-@@ -299,7 +299,7 @@ struct ieee80211_tx_rate {
- 	s8 idx;
- 	u8 count;
- 	u8 flags;
--};
-+} __attribute__((packed));
- 
- /**
-  * struct ieee80211_tx_info - skb transmit information

+ 248 - 0
package/mac80211/patches/300-rt2x00_hw_encryption.patch

@@ -0,0 +1,248 @@
+From: Ivo van Doorn <[email protected]>
+Date: Thu, 20 Nov 2008 22:29:36 +0000 (+0100)
+Subject: rt2x00: Implement HW encryption (rt2500usb)
+X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fivd%2Frt2x00.git;a=commitdiff_plain;h=52fe465ab5eb6aeead5ac8d91dd70e363d0560b7
+
+rt2x00: Implement HW encryption (rt2500usb)
+
+rt2500usb supports hardware encryption.
+rt2500usb supports up to 4 shared and pairwise keys.
+
+Signed-off-by: Ivo van Doorn <[email protected]>
+---
+
+diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c
+index 10cb46a..620ac65 100644
+--- a/drivers/net/wireless/rt2x00/rt2500usb.c
++++ b/drivers/net/wireless/rt2x00/rt2500usb.c
+@@ -36,6 +36,13 @@
+ #include "rt2500usb.h"
+ 
+ /*
++ * Allow hardware encryption to be disabled.
++ */
++static int modparam_nohwcrypt = 0;
++module_param_named(nohwcrypt, modparam_nohwcrypt, bool, S_IRUGO);
++MODULE_PARM_DESC(nohwcrypt, "Disable hardware encryption.");
++
++/*
+  * Register access.
+  * All access to the CSR registers will go through the methods
+  * rt2500usb_register_read and rt2500usb_register_write.
+@@ -323,6 +330,85 @@ static void rt2500usb_init_led(struct rt2x00_dev *rt2x00dev,
+ /*
+  * Configuration handlers.
+  */
++
++/*
++ * rt2500usb does not differentiate between shared and pairwise
++ * keys, so we should use the same function for both key types.
++ */
++static int rt2500usb_config_key(struct rt2x00_dev *rt2x00dev,
++				struct rt2x00lib_crypto *crypto,
++				struct ieee80211_key_conf *key)
++{
++	int timeout;
++	u32 mask;
++	u16 reg;
++
++	/* Support up to 4 keys */
++	if (key->hw_key_idx >= 4)
++		return -ENOSPC;
++
++	if (crypto->cmd == SET_KEY) {
++		/*
++		 * Pairwise key will always be entry 0, but this
++		 * could collide with a shared key on the same
++		 * position...
++		 */
++		mask = TXRX_CSR0_KEY_ID.bit_mask;
++
++		rt2500usb_register_read(rt2x00dev, TXRX_CSR0, &reg);
++
++		if ((reg & mask) && (reg & mask) == mask)
++			return -ENOSPC;
++
++		reg = rt2x00_get_field16(reg, TXRX_CSR0_KEY_ID);
++
++		key->hw_key_idx += reg ? ffz(reg) : 0;
++
++		/*
++		 * The encryption key doesn't fit within the CSR cache,
++		 * this means we should allocate it seperately and use
++		 * rt2x00usb_vendor_request() to send the key to the hardware.
++		 */
++		reg = KEY_ENTRY(key->hw_key_idx);
++		timeout = REGISTER_TIMEOUT32(sizeof(crypto->key));
++		rt2x00usb_vendor_request_large_buff(rt2x00dev, USB_MULTI_WRITE,
++						    USB_VENDOR_REQUEST_OUT, reg,
++						    crypto->key,
++						    sizeof(crypto->key),
++						    timeout);
++
++		/*
++		 * The driver does not support the IV/EIV generation
++		 * in hardware. However it doesn't support the IV/EIV
++		 * inside the ieee80211 frame either, but requires it
++		 * to be provided seperately for the descriptor.
++		 * rt2x00lib will cut the IV/EIV data out of all frames
++		 * given to us by mac80211, but we must tell mac80211
++		 * to generate the IV/EIV data.
++		 */
++		key->flags |= IEEE80211_KEY_FLAG_GENERATE_IV;
++		key->flags |= IEEE80211_KEY_FLAG_GENERATE_MMIC;
++	}
++
++	/*
++	 * TXRX_CSR0_KEY_ID contains only single-bit fields to indicate
++	 * a particular key is valid.
++	 */
++	rt2500usb_register_read(rt2x00dev, TXRX_CSR0, &reg);
++	rt2x00_set_field16(&reg, TXRX_CSR0_ALGORITHM, crypto->cipher);
++	rt2x00_set_field16(&reg, TXRX_CSR0_IV_OFFSET, IEEE80211_HEADER);
++
++	mask = rt2x00_get_field16(reg, TXRX_CSR0_KEY_ID);
++	if (crypto->cmd == SET_KEY)
++		mask |= 1 << key->hw_key_idx;
++	else if (crypto->cmd == DISABLE_KEY)
++		mask &= ~(1 << key->hw_key_idx);
++	rt2x00_set_field16(&reg, TXRX_CSR0_KEY_ID, mask);
++	rt2500usb_register_write(rt2x00dev, TXRX_CSR0, reg);
++
++	return 0;
++}
++
+ static void rt2500usb_config_filter(struct rt2x00_dev *rt2x00dev,
+ 				    const unsigned int filter_flags)
+ {
+@@ -844,7 +930,7 @@ static int rt2500usb_init_registers(struct rt2x00_dev *rt2x00dev)
+ 
+ 	rt2500usb_register_read(rt2x00dev, TXRX_CSR0, &reg);
+ 	rt2x00_set_field16(&reg, TXRX_CSR0_IV_OFFSET, IEEE80211_HEADER);
+-	rt2x00_set_field16(&reg, TXRX_CSR0_KEY_ID, 0xff);
++	rt2x00_set_field16(&reg, TXRX_CSR0_KEY_ID, 0);
+ 	rt2500usb_register_write(rt2x00dev, TXRX_CSR0, reg);
+ 
+ 	rt2500usb_register_read(rt2x00dev, MAC_CSR18, &reg);
+@@ -1066,7 +1152,7 @@ static void rt2500usb_write_tx_desc(struct rt2x00_dev *rt2x00dev,
+ 	 * Start writing the descriptor words.
+ 	 */
+ 	rt2x00_desc_read(txd, 1, &word);
+-	rt2x00_set_field32(&word, TXD_W1_IV_OFFSET, IEEE80211_HEADER);
++	rt2x00_set_field32(&word, TXD_W1_IV_OFFSET, txdesc->iv_offset);
+ 	rt2x00_set_field32(&word, TXD_W1_AIFS, txdesc->aifs);
+ 	rt2x00_set_field32(&word, TXD_W1_CWMIN, txdesc->cw_min);
+ 	rt2x00_set_field32(&word, TXD_W1_CWMAX, txdesc->cw_max);
+@@ -1079,6 +1165,11 @@ static void rt2500usb_write_tx_desc(struct rt2x00_dev *rt2x00dev,
+ 	rt2x00_set_field32(&word, TXD_W2_PLCP_LENGTH_HIGH, txdesc->length_high);
+ 	rt2x00_desc_write(txd, 2, word);
+ 
++	if (test_bit(ENTRY_TXD_ENCRYPT, &txdesc->flags)) {
++		_rt2x00_desc_write(txd, 3, skbdesc->iv);
++		_rt2x00_desc_write(txd, 4, skbdesc->eiv);
++	}
++
+ 	rt2x00_desc_read(txd, 0, &word);
+ 	rt2x00_set_field32(&word, TXD_W0_RETRY_LIMIT, txdesc->retry_limit);
+ 	rt2x00_set_field32(&word, TXD_W0_MORE_FRAG,
+@@ -1093,7 +1184,8 @@ static void rt2500usb_write_tx_desc(struct rt2x00_dev *rt2x00dev,
+ 			   test_bit(ENTRY_TXD_FIRST_FRAGMENT, &txdesc->flags));
+ 	rt2x00_set_field32(&word, TXD_W0_IFS, txdesc->ifs);
+ 	rt2x00_set_field32(&word, TXD_W0_DATABYTE_COUNT, skb->len);
+-	rt2x00_set_field32(&word, TXD_W0_CIPHER, CIPHER_NONE);
++	rt2x00_set_field32(&word, TXD_W0_CIPHER, txdesc->cipher);
++	rt2x00_set_field32(&word, TXD_W0_KEY_ID, txdesc->key_idx);
+ 	rt2x00_desc_write(txd, 0, word);
+ }
+ 
+@@ -1204,6 +1296,7 @@ static void rt2500usb_kick_tx_queue(struct rt2x00_dev *rt2x00dev,
+ static void rt2500usb_fill_rxdone(struct queue_entry *entry,
+ 				  struct rxdone_entry_desc *rxdesc)
+ {
++	struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev;
+ 	struct queue_entry_priv_usb *entry_priv = entry->priv_data;
+ 	struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb);
+ 	__le32 *rxd =
+@@ -1231,6 +1324,31 @@ static void rt2500usb_fill_rxdone(struct queue_entry *entry,
+ 	if (rt2x00_get_field32(word0, RXD_W0_PHYSICAL_ERROR))
+ 		rxdesc->flags |= RX_FLAG_FAILED_PLCP_CRC;
+ 
++	if (test_bit(CONFIG_SUPPORT_HW_CRYPTO, &rt2x00dev->flags)) {
++		rxdesc->cipher = rt2x00_get_field32(word0, RXD_W0_CIPHER);
++		if (rt2x00_get_field32(word0, RXD_W0_CIPHER_ERROR))
++			rxdesc->cipher_status = RX_CRYPTO_FAIL_KEY;
++	}
++
++	if (rxdesc->cipher != CIPHER_NONE) {
++		_rt2x00_desc_read(rxd, 2, &rxdesc->iv);
++		_rt2x00_desc_read(rxd, 3, &rxdesc->eiv);
++		/* ICV is located at the end of frame */
++
++		/*
++		 * Hardware has stripped IV/EIV data from 802.11 frame during
++		 * decryption. It has provided the data seperately but rt2x00lib
++		 * should decide if it should be reinserted.
++		 */
++		rxdesc->flags |= RX_FLAG_IV_STRIPPED;
++		if (rxdesc->cipher != CIPHER_TKIP)
++			rxdesc->flags |= RX_FLAG_MMIC_STRIPPED;
++		if (rxdesc->cipher_status == RX_CRYPTO_SUCCESS)
++			rxdesc->flags |= RX_FLAG_DECRYPTED;
++		else if (rxdesc->cipher_status == RX_CRYPTO_FAIL_MIC)
++			rxdesc->flags |= RX_FLAG_MMIC_ERROR;
++	}
++
+ 	/*
+ 	 * Obtain the status about this packet.
+ 	 * When frame was received with an OFDM bitrate,
+@@ -1238,8 +1356,8 @@ static void rt2500usb_fill_rxdone(struct queue_entry *entry,
+ 	 * a CCK bitrate the signal is the rate in 100kbit/s.
+ 	 */
+ 	rxdesc->signal = rt2x00_get_field32(word1, RXD_W1_SIGNAL);
+-	rxdesc->rssi = rt2x00_get_field32(word1, RXD_W1_RSSI) -
+-	    entry->queue->rt2x00dev->rssi_offset;
++	rxdesc->rssi =
++	    rt2x00_get_field32(word1, RXD_W1_RSSI) - rt2x00dev->rssi_offset;
+ 	rxdesc->size = rt2x00_get_field32(word0, RXD_W0_DATABYTE_COUNT);
+ 
+ 	if (rt2x00_get_field32(word0, RXD_W0_OFDM))
+@@ -1729,6 +1847,8 @@ static int rt2500usb_probe_hw(struct rt2x00_dev *rt2x00dev)
+ 	__set_bit(DRIVER_REQUIRE_ATIM_QUEUE, &rt2x00dev->flags);
+ 	__set_bit(DRIVER_REQUIRE_BEACON_GUARD, &rt2x00dev->flags);
+ 	__set_bit(DRIVER_REQUIRE_SCHEDULED, &rt2x00dev->flags);
++	if (!modparam_nohwcrypt)
++		__set_bit(CONFIG_SUPPORT_HW_CRYPTO, &rt2x00dev->flags);
+ 	__set_bit(CONFIG_DISABLE_LINK_TUNING, &rt2x00dev->flags);
+ 
+ 	/*
+@@ -1748,6 +1868,7 @@ static const struct ieee80211_ops rt2500usb_mac80211_ops = {
+ 	.config			= rt2x00mac_config,
+ 	.config_interface	= rt2x00mac_config_interface,
+ 	.configure_filter	= rt2x00mac_configure_filter,
++	.set_key		= rt2x00mac_set_key,
+ 	.get_stats		= rt2x00mac_get_stats,
+ 	.bss_info_changed	= rt2x00mac_bss_info_changed,
+ 	.conf_tx		= rt2x00mac_conf_tx,
+@@ -1769,6 +1890,8 @@ static const struct rt2x00lib_ops rt2500usb_rt2x00_ops = {
+ 	.get_tx_data_len	= rt2500usb_get_tx_data_len,
+ 	.kick_tx_queue		= rt2500usb_kick_tx_queue,
+ 	.fill_rxdone		= rt2500usb_fill_rxdone,
++	.config_shared_key	= rt2500usb_config_key,
++	.config_pairwise_key	= rt2500usb_config_key,
+ 	.config_filter		= rt2500usb_config_filter,
+ 	.config_intf		= rt2500usb_config_intf,
+ 	.config_erp		= rt2500usb_config_erp,
+diff --git a/drivers/net/wireless/rt2x00/rt2500usb.h b/drivers/net/wireless/rt2x00/rt2500usb.h
+index dbb5d68..4347dfd 100644
+--- a/drivers/net/wireless/rt2x00/rt2500usb.h
++++ b/drivers/net/wireless/rt2x00/rt2500usb.h
+@@ -447,6 +447,9 @@
+ #define SEC_CSR30			0x04bc
+ #define SEC_CSR31			0x04be
+ 
++#define KEY_ENTRY(__idx) \
++	( SEC_CSR0 + ((__idx) * 16) )
++
+ /*
+  * PHY control registers.
+  */

Fișier diff suprimat deoarece este prea mare
+ 250 - 525
package/mac80211/patches/310-rt2800_experimental.patch


+ 11 - 1
package/mac80211/patches/320-enable_rt2800.patch

@@ -1,6 +1,8 @@
+diff --git a/config.mk b/config.mk
+index d94a976..a624bdf 100644
 --- a/config.mk
 +++ b/config.mk
-@@ -146,6 +146,7 @@ CONFIG_ADM8211=m
+@@ -156,6 +156,7 @@ CONFIG_ADM8211=m
  CONFIG_RT2X00_LIB_PCI=m
  CONFIG_RT2400PCI=m
  CONFIG_RT2500PCI=m
@@ -8,3 +10,11 @@
  NEED_RT2X00=y
  
  # Two rt2x00 drivers require firmware: rt61pci and rt73usb. They depend on
+@@ -197,6 +198,7 @@ CONFIG_RTL8187=m
+ # RT2500USB does not require firmware
+ CONFIG_RT2500USB=m
+ CONFIG_RT2X00_LIB_USB=m
++CONFIG_RT2X00_LIB_CRYPTO=y
+ NEED_RT2X00=y
+ # RT73USB requires firmware
+ ifneq ($(CONFIG_CRC_ITU_T),)

Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff