Build b43, b43legacy and ath9k for kernels >= 2.6.27 from mac80211. Include b43legacy by default in the Generic bcm47xx profile (#4179)

SVN-Revision: 13164
This commit is contained in:
Florian Fainelli 2008-11-09 22:42:36 +00:00
parent dc1b6a3961
commit ce1ab6d41c
8 changed files with 608 additions and 267 deletions

View File

@ -16,7 +16,7 @@ include $(INCLUDE_DIR)/package.mk
define KernelPackage/ath9k
SUBMENU:=Wireless Drivers
TITLE:=Atheros AR9xxx and AR5416/AR5418 wireless support
DEPENDS:=+kmod-mac80211 @!TARGET_brcm47xx @PCI_SUPPORT
DEPENDS:=+kmod-mac80211 @PCI_SUPPORT @LINUX_2_6_23||@LINUX_2_6_24||@LINUX_2_6_25||@LINUX_2_6_26 @!kmod-ath9k-new
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath9k/ath9k.$(LINUX_KMOD_SUFFIX)
AUTOLOAD:=$(call AutoLoad,30,ath9k)
endef

View File

@ -1,110 +0,0 @@
#
# Copyright (C) 2007 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
# $Id: Makefile 7440 2007-06-02 02:22:01Z nbd $
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=b43
PKG_RELEASE:=1
include $(INCLUDE_DIR)/package.mk
PKG_FWV4_NAME:=broadcom-wl
PKG_FWV4_VERSION=4.150.10.5
PKG_FWV4_OBJECT:=driver/wl_apsta_mimo.o
PKG_FWV4_SOURCE:=$(PKG_FWV4_NAME)-$(PKG_FWV4_VERSION).tar.bz2
PKG_FWV4_SOURCE_URL:=http://mirror2.openwrt.org/sources/
PKG_FWV4_MD5SUM:=0c6ba9687114c6b598e8019e262d9a60
PKG_FWCUTTER_NAME:=b43-fwcutter
PKG_FWCUTTER_VERSION=011
PKG_FWCUTTER_SOURCE:=$(PKG_FWCUTTER_NAME)-$(PKG_FWCUTTER_VERSION).tar.bz2
PKG_FWCUTTER_SOURCE_URL:=http://bu3sch.de/b43/fwcutter/
PKG_FWCUTTER_MD5SUM:=3db2f4de85a459451f5b391cf67a8d44
PKG_SRC_NAME:=b43-src
PKG_SRC_VERSION:=2008-08-06
PKG_SRC_SOURCE:=compat-wireless-$(PKG_SRC_VERSION).tar.bz2
PKG_SRC_SOURCE_URL:=http://www.orbit-lab.org/kernel/compat-wireless-2.6/2008/08/
PKG_SRC_MD5SUM:=9563ceeed86bca0859ad5f010623277c
define KernelPackage/b43
SUBMENU:=Wireless Drivers
TITLE:=Broadcom 43xx wireless support
DEPENDS:=@TARGET_brcm47xx +kmod-mac80211
FILES:=$(PKG_BUILD_DIR)/b43.$(LINUX_KMOD_SUFFIX)
AUTOLOAD:=$(call AutoLoad,30,b43)
endef
define KernelPackage/b43/description
Kernel module for Broadcom 43xx wireless support (mac80211)
endef
EXTRA_KCONFIG:= \
CONFIG_B43=m \
CONFIG_B43_NPHY=y \
CONFIG_B43_DEBUG=y \
$(if $(CONFIG_RFKILL),CONFIG_B43_RFKILL=y) \
$(if $(CONFIG_LEDS_TRIGGERS),CONFIG_B43_LEDS=y) \
EXTRA_CFLAGS:= \
$(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=m,%,$(filter %=m,$(EXTRA_KCONFIG)))) \
$(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=y,%,$(filter %=y,$(EXTRA_KCONFIG)))) \
MAKE_OPTS:= \
ARCH="$(LINUX_KARCH)" \
CROSS_COMPILE="$(TARGET_CROSS)" \
SUBDIRS="$(PKG_BUILD_DIR)" \
EXTRA_CFLAGS="$(EXTRA_CFLAGS)" \
LINUXINCLUDE="-I$(STAGING_DIR)/usr/include/mac80211 -I$(LINUX_DIR)/include -include linux/autoconf.h" \
$(EXTRA_KCONFIG)
$(STAMP_PREPARED): $(DL_DIR)/$(PKG_FWV4_SOURCE) $(DL_DIR)/$(PKG_FWCUTTER_SOURCE)
$(DL_DIR)/$(PKG_FWV4_SOURCE):
$(SCRIPT_DIR)/download.pl "$(DL_DIR)" "$(PKG_FWV4_SOURCE)" "$(PKG_FWV4_MD5SUM)" $(PKG_FWV4_SOURCE_URL)
$(DL_DIR)/$(PKG_FWCUTTER_SOURCE):
$(SCRIPT_DIR)/download.pl "$(DL_DIR)" "$(PKG_FWCUTTER_SOURCE)" "$(PKG_FWCUTTER_MD5SUM)" $(PKG_FWCUTTER_SOURCE_URL)
define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)
tar xjf "$(DL_DIR)/$(PKG_FWV4_SOURCE)" -C "$(PKG_BUILD_DIR)"
tar xjf "$(DL_DIR)/$(PKG_FWCUTTER_SOURCE)" -C "$(PKG_BUILD_DIR)"
tar xjf "$(DL_DIR)/$(PKG_SRC_SOURCE)" -C "$(PKG_BUILD_DIR)"
$(CP) $(PKG_BUILD_DIR)/compat-wireless-$(PKG_SRC_VERSION)/drivers/net/wireless/b43/* $(PKG_BUILD_DIR)/
$(Build/Patch)
$(if $(QUILT),touch $(PKG_BUILD_DIR)/.quilt_used)
endef
define Build/Configure
endef
define Build/Compile
$(MAKE) -C "$(LINUX_DIR)" \
$(MAKE_OPTS) \
modules
$(MAKE) -C "$(PKG_BUILD_DIR)/$(PKG_FWCUTTER_NAME)-$(PKG_FWCUTTER_VERSION)" \
CFLAGS="-I$(STAGING_DIR_HOST)/include -include endian.h"
endef
define KernelPackage/b43/install
$(INSTALL_DIR) $(1)/lib/firmware/
$(PKG_BUILD_DIR)/$(PKG_FWCUTTER_NAME)-$(PKG_FWCUTTER_VERSION)/b43-fwcutter \
-w $(1)/lib/firmware/ \
$(PKG_BUILD_DIR)/$(PKG_FWV4_NAME)-$(PKG_FWV4_VERSION)/$(PKG_FWV4_OBJECT)
endef
$(eval $(call KernelPackage,b43))

View File

@ -1,152 +0,0 @@
Index: b43/dma.c
===================================================================
--- b43.orig/dma.c 2008-07-27 13:56:25.000000000 +0200
+++ b43/dma.c 2008-07-27 14:02:26.000000000 +0200
@@ -328,11 +328,11 @@ static inline
dma_addr_t dmaaddr;
if (tx) {
- dmaaddr = ssb_dma_map_single(ring->dev->dev,
- buf, len, DMA_TO_DEVICE);
+ dmaaddr = dma_map_single(ring->dev->dev->dma_dev,
+ buf, len, DMA_TO_DEVICE);
} else {
- dmaaddr = ssb_dma_map_single(ring->dev->dev,
- buf, len, DMA_FROM_DEVICE);
+ dmaaddr = dma_map_single(ring->dev->dev->dma_dev,
+ buf, len, DMA_FROM_DEVICE);
}
return dmaaddr;
@@ -343,11 +343,11 @@ static inline
dma_addr_t addr, size_t len, int tx)
{
if (tx) {
- ssb_dma_unmap_single(ring->dev->dev,
- addr, len, DMA_TO_DEVICE);
+ dma_unmap_single(ring->dev->dev->dma_dev,
+ addr, len, DMA_TO_DEVICE);
} else {
- ssb_dma_unmap_single(ring->dev->dev,
- addr, len, DMA_FROM_DEVICE);
+ dma_unmap_single(ring->dev->dev->dma_dev,
+ addr, len, DMA_FROM_DEVICE);
}
}
@@ -356,8 +356,8 @@ static inline
dma_addr_t addr, size_t len)
{
B43_WARN_ON(ring->tx);
- ssb_dma_sync_single_for_cpu(ring->dev->dev,
- addr, len, DMA_FROM_DEVICE);
+ dma_sync_single_for_cpu(ring->dev->dev->dma_dev,
+ addr, len, DMA_FROM_DEVICE);
}
static inline
@@ -365,8 +365,8 @@ static inline
dma_addr_t addr, size_t len)
{
B43_WARN_ON(ring->tx);
- ssb_dma_sync_single_for_device(ring->dev->dev,
- addr, len, DMA_FROM_DEVICE);
+ dma_sync_single_for_device(ring->dev->dev->dma_dev,
+ addr, len, DMA_FROM_DEVICE);
}
static inline
@@ -381,6 +381,7 @@ static inline
static int alloc_ringmemory(struct b43_dmaring *ring)
{
+ struct device *dma_dev = ring->dev->dev->dma_dev;
gfp_t flags = GFP_KERNEL;
/* The specs call for 4K buffers for 30- and 32-bit DMA with 4K
@@ -391,14 +392,11 @@ static int alloc_ringmemory(struct b43_dmaring *ring)
* For unknown reasons - possibly a hardware error - the BCM4311 rev
* 02, which uses 64-bit DMA, needs the ring buffer in very low memory,
* which accounts for the GFP_DMA flag below.
- *
- * The flags here must match the flags in free_ringmemory below!
*/
if (ring->type == B43_DMA_64BIT)
flags |= GFP_DMA;
- ring->descbase = ssb_dma_alloc_consistent(ring->dev->dev,
- B43_DMA_RINGMEMSIZE,
- &(ring->dmabase), flags);
+ ring->descbase = dma_alloc_coherent(dma_dev, B43_DMA_RINGMEMSIZE,
+ &(ring->dmabase), flags);
if (!ring->descbase) {
b43err(ring->dev->wl, "DMA ringmemory allocation failed\n");
return -ENOMEM;
@@ -410,13 +408,10 @@ static int alloc_ringmemory(struct b43_dmaring *ring)
static void free_ringmemory(struct b43_dmaring *ring)
{
- gfp_t flags = GFP_KERNEL;
-
- if (ring->type == B43_DMA_64BIT)
- flags |= GFP_DMA;
+ struct device *dma_dev = ring->dev->dev->dma_dev;
- ssb_dma_free_consistent(ring->dev->dev, B43_DMA_RINGMEMSIZE,
- ring->descbase, ring->dmabase, flags);
+ dma_free_coherent(dma_dev, B43_DMA_RINGMEMSIZE,
+ ring->descbase, ring->dmabase);
}
/* Reset the RX DMA channel */
@@ -523,7 +518,7 @@ static bool b43_dma_mapping_error(struct b43_dmaring *ring,
dma_addr_t addr,
size_t buffersize, bool dma_to_device)
{
- if (unlikely(ssb_dma_mapping_error(ring->dev->dev, addr)))
+ if (unlikely(dma_mapping_error(addr)))
return 1;
switch (ring->type) {
@@ -849,10 +844,10 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wldev *dev,
goto err_kfree_meta;
/* test for ability to dma to txhdr_cache */
- dma_test = ssb_dma_map_single(dev->dev,
- ring->txhdr_cache,
- b43_txhdr_size(dev),
- DMA_TO_DEVICE);
+ dma_test = dma_map_single(dev->dev->dma_dev,
+ ring->txhdr_cache,
+ b43_txhdr_size(dev),
+ DMA_TO_DEVICE);
if (b43_dma_mapping_error(ring, dma_test,
b43_txhdr_size(dev), 1)) {
@@ -864,10 +859,10 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wldev *dev,
if (!ring->txhdr_cache)
goto err_kfree_meta;
- dma_test = ssb_dma_map_single(dev->dev,
- ring->txhdr_cache,
- b43_txhdr_size(dev),
- DMA_TO_DEVICE);
+ dma_test = dma_map_single(dev->dev->dma_dev,
+ ring->txhdr_cache,
+ b43_txhdr_size(dev),
+ DMA_TO_DEVICE);
if (b43_dma_mapping_error(ring, dma_test,
b43_txhdr_size(dev), 1)) {
@@ -878,9 +873,9 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wldev *dev,
}
}
- ssb_dma_unmap_single(dev->dev,
- dma_test, b43_txhdr_size(dev),
- DMA_TO_DEVICE);
+ dma_unmap_single(dev->dev->dma_dev,
+ dma_test, b43_txhdr_size(dev),
+ DMA_TO_DEVICE);
}
err = alloc_ringmemory(ring);

View File

@ -18,7 +18,7 @@ ifneq ($(CONFIG_LINUX_2_6_27),)
else
PKG_VERSION:=2008-08-06
PKG_SOURCE_URL:=http://www.orbit-lab.org/kernel/compat-wireless-2.6/2008/08
PATCH_DIR:=./patches-old
PATCH_DIR:=$(if $(CONFIG_TARGET_brcm47xx),./patches-brcm,./patches-old)
endif
PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2
@ -30,6 +30,7 @@ STAMP_CONFIGURED:=$(STAMP_CONFIGURED)_$(call confvar,CONFIG_PACKAGE_kmod-mac8021
define KernelPackage/mac80211
SUBMENU:=Wireless Drivers
TITLE:=Linux 802.11 Wireless Networking Stack
URL:=http://linuxwireless.org/
DEPENDS:=@LINUX_2_6 +kmod-crypto-arc4 +kmod-crypto-aes +wireless-tools @!TARGET_avr32
FILES:= \
$(PKG_BUILD_DIR)/net/mac80211/mac80211.$(LINUX_KMOD_SUFFIX) \
@ -138,7 +139,7 @@ endef
define KernelPackage/rt2800-pci
$(call KernelPackage/rt2x00/Default)
DEPENDS+= @PCI_SUPPORT +kmod-rt2x00-pci @LINUX_2_6_27
DEPENDS+= @PCI_SUPPORT +kmod-rt2x00-pci @LINUX_2_6_27||@LINUX_2_6_28
TITLE+= (RT2860 PCI)
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2800pci.$(LINUX_KMOD_SUFFIX)
AUTOLOAD:=$(call AutoLoad,27,rt2800pci)
@ -156,7 +157,7 @@ $(eval $(call Download,zd1211rw))
define KernelPackage/zd1211rw
SUBMENU:=Wireless Drivers
TITLE:=Zydas ZD1211 support
DEPENDS:=@LINUX_2_6_24||@LINUX_2_6_25||@LINUX_2_6_26||@LINUX_2_6_27 @USB_SUPPORT +kmod-usb-core +kmod-mac80211
DEPENDS:= @USB_SUPPORT +kmod-usb-core +kmod-mac80211
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/zd1211rw/zd1211rw.$(LINUX_KMOD_SUFFIX)
AUTOLOAD:=$(call AutoLoad,60,zd1211rw)
endef
@ -164,11 +165,31 @@ endef
define KernelPackage/ath5k
SUBMENU:=Wireless Drivers
TITLE:=Atheros 5xxx wireless cards support
URL:=http://linuxwireless.org/en/users/Drivers/ath5k
DEPENDS+= @PCI_SUPPORT +kmod-mac80211
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath5k/ath5k.$(LINUX_KMOD_SUFFIX)
AUTOLOAD:=$(call AutoLoad,27,ath5k)
endef
define KernelPackage/ath5k/description
This module adds support for wireless adapters based on
Atheros 5xxx chipset.
endef
define KernelPackage/ath9k-new
SUBMENU:=Wireless Drivers
TITLE:=Atheros 802.11n wireless cards support
URL:=http://linuxwireless.org/en/users/Drivers/ath9k
DEPENDS+= @PCI_SUPPORT +kmod-mac80211 @LINUX_2_6_27||@LINUX_2_6_28 @!kmod-ath9k
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath9k/ath9k.$(LINUX_KMOD_SUFFIX)
AUTOLOAD:=$(call AutoLoad,27,ath9k)
endef
define KernelPackage/ath9k-new/description
This module adds support for wireless adapters based on
Atheros IEEE 802.11n AR5008 and AR9001 family of chipsets.
endef
define KernelPackage/mac80211-hwsim
SUBMENU:=Wireless Drivers
TITLE:=mac80211 HW simulation device
@ -177,6 +198,76 @@ define KernelPackage/mac80211-hwsim
AUTOLOAD:=$(call AutoLoad,60,mac80211_hwsim)
endef
#Broadcom firmware
PKG_B43_FWV4_NAME:=broadcom-wl
PKG_B43_FWV4_VERSION:=4.150.10.5
PKG_B43_FWV4_OBJECT:=driver/wl_apsta_mimo.o
PKG_B43_FWV4_SOURCE:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION).tar.bz2
PKG_B43_FWV4_SOURCE_URL:=http://mirror2.openwrt.org/sources/
PKG_B43_FWV4_MD5SUM:=0c6ba9687114c6b598e8019e262d9a60
PKG_B43_FWV3_NAME:=wl_apsta
PKG_B43_FWV3_VERSION:=3.130.20.0
PKG_B43_FWV3_SOURCE:=$(PKG_B43_FWV3_NAME)-$(PKG_B43_FWV3_VERSION).o
PKG_B43_FWV3_SOURCE_URL:=http://downloads.openwrt.org/sources/
PKG_B43_FWV3_MD5SUM:=e08665c5c5b66beb9c3b2dd54aa80cb3
PKG_B43_FWCUTTER_NAME:=b43-fwcutter
PKG_B43_FWCUTTER_VERSION:=011
PKG_B43_FWCUTTER_SOURCE:=$(PKG_B43_FWCUTTER_NAME)-$(PKG_B43_FWCUTTER_VERSION).tar.bz2
PKG_B43_FWCUTTER_SOURCE_URL:=http://bu3sch.de/b43/fwcutter/
PKG_B43_FWCUTTER_MD5SUM:=3db2f4de85a459451f5b391cf67a8d44
define Download/b43-common
FILE:=$(PKG_B43_FWCUTTER_SOURCE)
URL:=$(PKG_B43_FWCUTTER_SOURCE_URL)
MD5SUM:=$(PKG_B43_FWCUTTER_MD5SUM)
endef
$(eval $(call Download,b43-common))
define Download/b43
FILE:=$(PKG_B43_FWV4_SOURCE)
URL:=$(PKG_B43_FWV4_SOURCE_URL)
MD5SUM:=$(PKG_B43_FWV4_MD5SUM)
endef
$(eval $(call Download,b43))
define Download/b43legacy
FILE:=$(PKG_B43_FWV3_SOURCE)
URL:=$(PKG_B43_FWV3_SOURCE_URL)
MD5SUM:=$(PKG_B43_FWV3_MD5SUM)
endef
$(eval $(call Download,b43legacy))
define KernelPackage/b43-common
SUBMENU:=Wireless Drivers
TITLE:=Generic stuff for Broadcom wireless devices
URL:=http://linuxwireless.org/en/users/Drivers/b43
DEPENDS:=@TARGET_brcm47xx +kmod-mac80211
endef
define KernelPackage/b43
$(call KernelPackage/b43-common)
TITLE:=Broadcom 43xx wireless support
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/b43/b43.$(LINUX_KMOD_SUFFIX)
AUTOLOAD:=$(call AutoLoad,30,b43)
endef
define KernelPackage/b43/description
Kernel module for Broadcom 43xx wireless support (mac80211 stack) new
endef
define KernelPackage/b43legacy
$(call KernelPackage/b43-common)
TITLE:=Broadcom 43xx-legacy wireless support
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/b43legacy/b43legacy.$(LINUX_KMOD_SUFFIX)
AUTOLOAD:=$(call AutoLoad,30,b43legacy)
endef
define KernelPackage/b43legacy/description
Kernel module for Broadcom 43xx-legacy wireless support (mac80211 stack) new
endef
BUILDFLAGS:= \
-I$(PKG_BUILD_DIR)/include \
$(foreach opt,$(CONFOPTS),-DCONFIG_$(opt)) \
@ -208,6 +299,10 @@ define Build/Prepare
-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 $(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
endef
ifneq ($(CONFIG_PACKAGE_kmod-mac80211),)
@ -251,6 +346,31 @@ define KernelPackage/zd1211rw/install
$(INSTALL_DATA) $(PKG_BUILD_DIR)/$(ZD1211FW_NAME)/zd1211* $(1)/lib/firmware/zd1211
endef
define Build/b43-common
tar xjf "$(DL_DIR)/$(PKG_B43_FWCUTTER_SOURCE)" -C "$(PKG_BUILD_DIR)"
$(MAKE) -C "$(PKG_BUILD_DIR)/$(PKG_B43_FWCUTTER_NAME)-$(PKG_B43_FWCUTTER_VERSION)" \
CFLAGS="-I$(STAGING_DIR_HOST)/include -include endian.h"
endef
define KernelPackage/b43/install
$(call Build/b43-common)
tar xjf "$(DL_DIR)/$(PKG_B43_FWV4_SOURCE)" -C "$(PKG_BUILD_DIR)"
$(INSTALL_DIR) $(1)/lib/firmware/
$(PKG_BUILD_DIR)/$(PKG_B43_FWCUTTER_NAME)-$(PKG_B43_FWCUTTER_VERSION)/b43-fwcutter \
-w $(1)/lib/firmware/ \
$(PKG_BUILD_DIR)/$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION)/$(PKG_B43_FWV4_OBJECT)
endef
define KernelPackage/b43legacy/install
$(call Build/b43-common)
$(INSTALL_DIR) $(1)/lib/firmware/
$(PKG_BUILD_DIR)/$(PKG_B43_FWCUTTER_NAME)-$(PKG_B43_FWCUTTER_VERSION)/b43-fwcutter \
-w $(1)/lib/firmware/ \
$(DL_DIR)/$(PKG_B43_FWV3_SOURCE)
endef
$(eval $(call KernelPackage,ath5k))
$(eval $(call KernelPackage,mac80211))
$(eval $(call KernelPackage,rt2x00-lib))
@ -264,3 +384,6 @@ $(eval $(call KernelPackage,rt73-usb))
$(eval $(call KernelPackage,rt2800-pci))
$(eval $(call KernelPackage,zd1211rw))
$(eval $(call KernelPackage,mac80211-hwsim))
$(eval $(call KernelPackage,ath9k-new))
$(eval $(call KernelPackage,b43))
$(eval $(call KernelPackage,b43legacy))

View File

@ -0,0 +1,159 @@
--- 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-09 13:16:02.000000000 +0100
@@ -72,69 +72,31 @@
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_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_B43LEGACY_PIO=y
+# CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
CONFIG_RT2X00_LIB_PCI=m
CONFIG_RT2400PCI=m
@@ -159,32 +121,6 @@
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
CONFIG_RT2X00_LIB_USB=m
@@ -209,39 +145,6 @@
CONFIG_RT2X00_LIB_FIRMWARE=y
endif
-# 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

View File

@ -0,0 +1,296 @@
This patch backports the interface of the b43 and b43legacy driver from
the new to the old ssb API. This patch is needed as long the old ssb
version is used in the kernel for broadcom devices. After upgrading to
ssb version out of kernel 2.6.27 or later this patch is not needed any more.
diff --git a/drivers/net/wireless/b43/dma.c b/drivers/net/wireless/b43/dma.c
index 098f886..8a09a1d 100644
--- a/drivers/net/wireless/b43/dma.c
+++ b/drivers/net/wireless/b43/dma.c
@@ -328,11 +328,11 @@ static inline
dma_addr_t dmaaddr;
if (tx) {
- dmaaddr = ssb_dma_map_single(ring->dev->dev,
- buf, len, DMA_TO_DEVICE);
+ dmaaddr = dma_map_single(ring->dev->dev->dma_dev,
+ buf, len, DMA_TO_DEVICE);
} else {
- dmaaddr = ssb_dma_map_single(ring->dev->dev,
- buf, len, DMA_FROM_DEVICE);
+ dmaaddr = dma_map_single(ring->dev->dev->dma_dev,
+ buf, len, DMA_FROM_DEVICE);
}
return dmaaddr;
@@ -343,11 +343,11 @@ static inline
dma_addr_t addr, size_t len, int tx)
{
if (tx) {
- ssb_dma_unmap_single(ring->dev->dev,
- addr, len, DMA_TO_DEVICE);
+ dma_unmap_single(ring->dev->dev->dma_dev,
+ addr, len, DMA_TO_DEVICE);
} else {
- ssb_dma_unmap_single(ring->dev->dev,
- addr, len, DMA_FROM_DEVICE);
+ dma_unmap_single(ring->dev->dev->dma_dev,
+ addr, len, DMA_FROM_DEVICE);
}
}
@@ -356,8 +356,8 @@ static inline
dma_addr_t addr, size_t len)
{
B43_WARN_ON(ring->tx);
- ssb_dma_sync_single_for_cpu(ring->dev->dev,
- addr, len, DMA_FROM_DEVICE);
+ dma_sync_single_for_cpu(ring->dev->dev->dma_dev,
+ addr, len, DMA_FROM_DEVICE);
}
static inline
@@ -365,8 +365,8 @@ static inline
dma_addr_t addr, size_t len)
{
B43_WARN_ON(ring->tx);
- ssb_dma_sync_single_for_device(ring->dev->dev,
- addr, len, DMA_FROM_DEVICE);
+ dma_sync_single_for_device(ring->dev->dev->dma_dev,
+ addr, len, DMA_FROM_DEVICE);
}
static inline
@@ -381,6 +381,7 @@ static inline
static int alloc_ringmemory(struct b43_dmaring *ring)
{
+ struct device *dma_dev = ring->dev->dev->dma_dev;
gfp_t flags = GFP_KERNEL;
/* The specs call for 4K buffers for 30- and 32-bit DMA with 4K
@@ -391,14 +392,11 @@ static int alloc_ringmemory(struct b43_dmaring *ring)
* For unknown reasons - possibly a hardware error - the BCM4311 rev
* 02, which uses 64-bit DMA, needs the ring buffer in very low memory,
* which accounts for the GFP_DMA flag below.
- *
- * The flags here must match the flags in free_ringmemory below!
*/
if (ring->type == B43_DMA_64BIT)
flags |= GFP_DMA;
- ring->descbase = ssb_dma_alloc_consistent(ring->dev->dev,
- B43_DMA_RINGMEMSIZE,
- &(ring->dmabase), flags);
+ ring->descbase = dma_alloc_coherent(dma_dev, B43_DMA_RINGMEMSIZE,
+ &(ring->dmabase), flags);
if (!ring->descbase) {
b43err(ring->dev->wl, "DMA ringmemory allocation failed\n");
return -ENOMEM;
@@ -410,13 +408,10 @@ static int alloc_ringmemory(struct b43_dmaring *ring)
static void free_ringmemory(struct b43_dmaring *ring)
{
- gfp_t flags = GFP_KERNEL;
-
- if (ring->type == B43_DMA_64BIT)
- flags |= GFP_DMA;
+ struct device *dma_dev = ring->dev->dev->dma_dev;
- ssb_dma_free_consistent(ring->dev->dev, B43_DMA_RINGMEMSIZE,
- ring->descbase, ring->dmabase, flags);
+ dma_free_coherent(dma_dev, B43_DMA_RINGMEMSIZE,
+ ring->descbase, ring->dmabase);
}
/* Reset the RX DMA channel */
@@ -523,7 +518,7 @@ static bool b43_dma_mapping_error(struct b43_dmaring *ring,
dma_addr_t addr,
size_t buffersize, bool dma_to_device)
{
- if (unlikely(ssb_dma_mapping_error(ring->dev->dev, addr)))
+ if (unlikely(dma_mapping_error(addr)))
return 1;
switch (ring->type) {
@@ -849,10 +844,10 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wldev *dev,
goto err_kfree_meta;
/* test for ability to dma to txhdr_cache */
- dma_test = ssb_dma_map_single(dev->dev,
- ring->txhdr_cache,
- b43_txhdr_size(dev),
- DMA_TO_DEVICE);
+ dma_test = dma_map_single(dev->dev->dma_dev,
+ ring->txhdr_cache,
+ b43_txhdr_size(dev),
+ DMA_TO_DEVICE);
if (b43_dma_mapping_error(ring, dma_test,
b43_txhdr_size(dev), 1)) {
@@ -864,10 +859,10 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wldev *dev,
if (!ring->txhdr_cache)
goto err_kfree_meta;
- dma_test = ssb_dma_map_single(dev->dev,
- ring->txhdr_cache,
- b43_txhdr_size(dev),
- DMA_TO_DEVICE);
+ dma_test = dma_map_single(dev->dev->dma_dev,
+ ring->txhdr_cache,
+ b43_txhdr_size(dev),
+ DMA_TO_DEVICE);
if (b43_dma_mapping_error(ring, dma_test,
b43_txhdr_size(dev), 1)) {
@@ -878,9 +873,9 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wldev *dev,
}
}
- ssb_dma_unmap_single(dev->dev,
- dma_test, b43_txhdr_size(dev),
- DMA_TO_DEVICE);
+ dma_unmap_single(dev->dev->dma_dev,
+ dma_test, b43_txhdr_size(dev),
+ DMA_TO_DEVICE);
}
err = alloc_ringmemory(ring);
diff --git a/drivers/net/wireless/b43legacy/dma.c b/drivers/net/wireless/b43legacy/dma.c
index fb6819e..87b1049 100644
--- a/drivers/net/wireless/b43legacy/dma.c
+++ b/drivers/net/wireless/b43legacy/dma.c
@@ -393,13 +393,13 @@ dma_addr_t map_descbuffer(struct b43legacy_dmaring *ring,
dma_addr_t dmaaddr;
if (tx)
- dmaaddr = ssb_dma_map_single(ring->dev->dev,
- buf, len,
- DMA_TO_DEVICE);
+ dmaaddr = dma_map_single(ring->dev->dev->dma_dev,
+ buf, len,
+ DMA_TO_DEVICE);
else
- dmaaddr = ssb_dma_map_single(ring->dev->dev,
- buf, len,
- DMA_FROM_DEVICE);
+ dmaaddr = dma_map_single(ring->dev->dev->dma_dev,
+ buf, len,
+ DMA_FROM_DEVICE);
return dmaaddr;
}
@@ -411,13 +411,13 @@ void unmap_descbuffer(struct b43legacy_dmaring *ring,
int tx)
{
if (tx)
- ssb_dma_unmap_single(ring->dev->dev,
- addr, len,
- DMA_TO_DEVICE);
+ dma_unmap_single(ring->dev->dev->dma_dev,
+ addr, len,
+ DMA_TO_DEVICE);
else
- ssb_dma_unmap_single(ring->dev->dev,
- addr, len,
- DMA_FROM_DEVICE);
+ dma_unmap_single(ring->dev->dev->dma_dev,
+ addr, len,
+ DMA_FROM_DEVICE);
}
static inline
@@ -427,8 +427,8 @@ void sync_descbuffer_for_cpu(struct b43legacy_dmaring *ring,
{
B43legacy_WARN_ON(ring->tx);
- ssb_dma_sync_single_for_cpu(ring->dev->dev,
- addr, len, DMA_FROM_DEVICE);
+ dma_sync_single_for_cpu(ring->dev->dev->dma_dev,
+ addr, len, DMA_FROM_DEVICE);
}
static inline
@@ -438,8 +438,8 @@ void sync_descbuffer_for_device(struct b43legacy_dmaring *ring,
{
B43legacy_WARN_ON(ring->tx);
- ssb_dma_sync_single_for_device(ring->dev->dev,
- addr, len, DMA_FROM_DEVICE);
+ dma_sync_single_for_device(ring->dev->dev->dma_dev,
+ addr, len, DMA_FROM_DEVICE);
}
static inline
@@ -458,11 +458,10 @@ void free_descriptor_buffer(struct b43legacy_dmaring *ring,
static int alloc_ringmemory(struct b43legacy_dmaring *ring)
{
- /* GFP flags must match the flags in free_ringmemory()! */
- ring->descbase = ssb_dma_alloc_consistent(ring->dev->dev,
- B43legacy_DMA_RINGMEMSIZE,
- &(ring->dmabase),
- GFP_KERNEL);
+ struct device *dma_dev = ring->dev->dev->dma_dev;
+
+ ring->descbase = dma_alloc_coherent(dma_dev, B43legacy_DMA_RINGMEMSIZE,
+ &(ring->dmabase), GFP_KERNEL);
if (!ring->descbase) {
b43legacyerr(ring->dev->wl, "DMA ringmemory allocation"
" failed\n");
@@ -475,8 +474,10 @@ static int alloc_ringmemory(struct b43legacy_dmaring *ring)
static void free_ringmemory(struct b43legacy_dmaring *ring)
{
- ssb_dma_free_consistent(ring->dev->dev, B43legacy_DMA_RINGMEMSIZE,
- ring->descbase, ring->dmabase, GFP_KERNEL);
+ struct device *dma_dev = ring->dev->dev->dma_dev;
+
+ dma_free_coherent(dma_dev, B43legacy_DMA_RINGMEMSIZE,
+ ring->descbase, ring->dmabase);
}
/* Reset the RX DMA channel */
@@ -588,7 +589,7 @@ static bool b43legacy_dma_mapping_error(struct b43legacy_dmaring *ring,
size_t buffersize,
bool dma_to_device)
{
- if (unlikely(ssb_dma_mapping_error(ring->dev->dev, addr)))
+ if (unlikely(dma_mapping_error(addr)))
return 1;
switch (ring->type) {
@@ -905,9 +906,9 @@ struct b43legacy_dmaring *b43legacy_setup_dmaring(struct b43legacy_wldev *dev,
goto err_kfree_meta;
/* test for ability to dma to txhdr_cache */
- dma_test = ssb_dma_map_single(dev->dev, ring->txhdr_cache,
- sizeof(struct b43legacy_txhdr_fw3),
- DMA_TO_DEVICE);
+ dma_test = dma_map_single(dev->dev->dma_dev, ring->txhdr_cache,
+ sizeof(struct b43legacy_txhdr_fw3),
+ DMA_TO_DEVICE);
if (b43legacy_dma_mapping_error(ring, dma_test,
sizeof(struct b43legacy_txhdr_fw3), 1)) {
@@ -919,7 +920,7 @@ struct b43legacy_dmaring *b43legacy_setup_dmaring(struct b43legacy_wldev *dev,
if (!ring->txhdr_cache)
goto err_kfree_meta;
- dma_test = ssb_dma_map_single(dev->dev,
+ dma_test = dma_map_single(dev->dev->dma_dev,
ring->txhdr_cache,
sizeof(struct b43legacy_txhdr_fw3),
DMA_TO_DEVICE);
@@ -929,9 +930,9 @@ struct b43legacy_dmaring *b43legacy_setup_dmaring(struct b43legacy_wldev *dev,
goto err_kfree_txhdr_cache;
}
- ssb_dma_unmap_single(dev->dev, dma_test,
- sizeof(struct b43legacy_txhdr_fw3),
- DMA_TO_DEVICE);
+ dma_unmap_single(dev->dev->dma_dev,
+ dma_test, sizeof(struct b43legacy_txhdr_fw3),
+ DMA_TO_DEVICE);
}
ring->nr_slots = nr_slots;

View File

@ -0,0 +1,25 @@
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 <johannes@sipsolutions.net>
---
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:

View File

@ -7,7 +7,7 @@
define Profile/Broadcom-b43
NAME:=Broadcom BCM43xx WiFi (default)
PACKAGES:=kmod-b43
PACKAGES:=kmod-b43 kmod-b43legacy
endef
define Profile/Broadcom-b43/Description