diff options
-rw-r--r-- | openwrt/target/linux/brcm-2.6/patches/005-bcm43xx-dscape-060328.patch | 157 |
1 files changed, 111 insertions, 46 deletions
diff --git a/openwrt/target/linux/brcm-2.6/patches/005-bcm43xx-dscape-060328.patch b/openwrt/target/linux/brcm-2.6/patches/005-bcm43xx-dscape-060328.patch index 0611a0bcaa..ee88128ae5 100644 --- a/openwrt/target/linux/brcm-2.6/patches/005-bcm43xx-dscape-060328.patch +++ b/openwrt/target/linux/brcm-2.6/patches/005-bcm43xx-dscape-060328.patch @@ -1,3 +1,109 @@ +diff -Nur linux-2.6.16/Documentation/networking/bcm43xx-d80211-HOWTO.txt linux-2.6.16-bcm43xx/Documentation/networking/bcm43xx-d80211-HOWTO.txt +--- linux-2.6.16/Documentation/networking/bcm43xx-d80211-HOWTO.txt 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.16-bcm43xx/Documentation/networking/bcm43xx-d80211-HOWTO.txt 2006-03-28 22:16:14.000000000 +0200 +@@ -0,0 +1,67 @@ ++**** **** ++**** HOWTO get bcm43xx-dscape running **** ++**** **** ++ ++This is a port of the bcm43xx driver for the devicescape ieee802.11 ++stack. The devicescape ieee802.11 stack is an advanced out-of-mainline ++802.11 protocol module. ++I will call the "devicescape ieee802.11 stack" simply "dscape" in the ++following text. ++ ++ ++*** Setting up the bcm43xx driver with dscape is currently non-trivial, ++*** as several modifications to the kernel and the userland ++*** wpa_supplicant tool are required. We are working on it... ++ ++ ++1) You need to patch the kernel with the ieee80211-devicescape stack ++ and the bcm43xx-dscape port. ++ Both are available in one cummulative at: ++ ftp://ftp.bu3sch.de/bcm43xx-snapshots/all-in-one/bcm43xx-dscape/ ++ Read the instructions on http://bcm43xx.berlios.de/ for how to apply ++ this patch. ++ ++ Patch the kernel, compile and install it. ++ When configuring, enable ++ "Networking/Generic IEEE 802.11 Networking Stack (dscape)" ++ and ++ "Device Drivers/Network device support/Wireless LAN (non-hamradio)/Broadcom BCM43xx wireless support (DeviceScape stack)" ++ Reboot. ++ ++2) Set up a wpa_supplicant config file in /etc/wpa_supplicant.conf ++ Here is an example for an AES WPA encrypted network: ++ ++ # WPA AES encryption ++ ctrl_interface=/var/run/wpa_supplicant ++ network={ ++ ssid="ACCESSPOINT_SSID" ++ key_mgmt=WPA-PSK ++ proto=WPA ++ pairwise=CCMP TKIP ++ group=CCMP TKIP ++ psk="MY PASSPHRASE" ++ priority=3 ++ } ++ ++3) Take a bottle of your favourite beer, open it and take a swallow. ++ ++4) Now it's time to bring the driver up. ++ Do modprobe bcm43xx-d80211 to load the driver. ++ There is an ugly bash script to bring the driver up after insmod. ++ It is found in the "scripts" subdirectory of the patched kernel ++ tree and is called "bcm43xx-d80211-sta_up.sh". ++ Call scripts/bcm43xx-d80211-sta_up.sh --help to get some usage information. ++ It may suffice to call scripts/bcm43xx-d80211-sta_up.sh without any parameters. See ++ the help. Default parameters, which are used when called without parameters, ++ are explained there. ++ ++5) If you want to access the internet, make sure your default route ++ is correctly set up with your gateway's IP: ++ route add default gw 192.168.xxx.xxx ++ ++6) Take another swallow from your bottle of beer and test if it works: ++ ping www.kernel.org ++ ++7) If it works, drink the rest of your beer. Otherwise read this HOWTO again, ++ and again and again. Complain to bcm43xx-dev@lists.berlios.de, if it still ++ does not work. +diff -Nur linux-2.6.16/Documentation/networking/bcm43xx-d80211.txt linux-2.6.16-bcm43xx/Documentation/networking/bcm43xx-d80211.txt +--- linux-2.6.16/Documentation/networking/bcm43xx-d80211.txt 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.16-bcm43xx/Documentation/networking/bcm43xx-d80211.txt 2006-03-28 22:16:14.000000000 +0200 +@@ -0,0 +1,31 @@ ++ ++ BCM43xx Linux Driver Project ++ ============================ ++ ++About this software ++------------------- ++ ++The goal of this project is to develop a linux driver for Broadcom ++BCM43xx chips, based on the specification at ++http://bcm-specs.sipsolutions.net/ ++ ++The project page is http://bcm43xx.berlios.de/ ++ ++This is a port of the bcm43xx driver for the devicescape ieee802.11 ++stack. ++ ++Requirements ++------------ ++ ++1) Linux Kernel 2.6.16 or later ++ http://www.kernel.org/ ++ ++ See Documentation/networking/bcm43xx-d80211-HOWTO.txt for further ++ instructions. ++ ++2) Firmware Files ++ ++ Please try bcm43xx-fwcutter. It can extract the firmware from various ++ binary driver files and supports driver files from Windows, MacOS and ++ Linux. You can get bcm43xx-fwcutter from http://bcm43xx.berlios.de/. ++ Also, bcm43xx-fwcutter comes with a README file for further instructions. diff -Nur linux-2.6.16/drivers/net/wireless/bcm43xx-d80211/bcm43xx_debugfs.c linux-2.6.16-bcm43xx/drivers/net/wireless/bcm43xx-d80211/bcm43xx_debugfs.c --- linux-2.6.16/drivers/net/wireless/bcm43xx-d80211/bcm43xx_debugfs.c 1970-01-01 01:00:00.000000000 +0100 +++ linux-2.6.16-bcm43xx/drivers/net/wireless/bcm43xx-d80211/bcm43xx_debugfs.c 2006-03-28 22:16:14.000000000 +0200 @@ -16609,61 +16715,20 @@ diff -Nur linux-2.6.16/include/net/sock.h linux-2.6.16-bcm43xx/include/net/sock. diff -Nur linux-2.6.16/net/core/dev.c linux-2.6.16-bcm43xx/net/core/dev.c --- linux-2.6.16/net/core/dev.c 2006-03-20 06:53:29.000000000 +0100 -+++ linux-2.6.16-bcm43xx/net/core/dev.c 2006-03-28 22:16:14.000000000 +0200 ++++ linux-2.6.16-bcm43xx/net/core/dev.c 2006-03-29 14:12:58.000000000 +0200 @@ -110,10 +110,8 @@ #include <linux/netpoll.h> #include <linux/rcupdate.h> #include <linux/delay.h> -#ifdef CONFIG_NET_RADIO -#include <linux/wireless.h> /* Note : will define WIRELESS_EXT */ -+#include <linux/wireless.h> ++#include <linux/wireless.h> /* Note : will define CONFIG_WIRELESS_EXT */ #include <net/iw_handler.h> -#endif /* CONFIG_NET_RADIO */ #include <asm/current.h> /* -@@ -1448,8 +1446,29 @@ - { - struct net_device *dev = skb->dev; - -- if (dev->master) -+ if (dev->master) { -+ /* -+ * On bonding slaves other than the currently active -+ * slave, suppress duplicates except for 802.3ad -+ * ETH_P_SLOW and alb non-mcast/bcast. -+ */ -+ if (dev->priv_flags & IFF_SLAVE_INACTIVE) { -+ if (dev->master->priv_flags & IFF_MASTER_ALB) { -+ if (skb->pkt_type != PACKET_BROADCAST && -+ skb->pkt_type != PACKET_MULTICAST) -+ goto keep; -+ } -+ -+ if (dev->master->priv_flags & IFF_MASTER_8023AD && -+ skb->protocol == __constant_htons(ETH_P_SLOW)) -+ goto keep; -+ -+ kfree_skb(skb); -+ return NULL; -+ } -+keep: - skb->dev = dev->master; -+ } - - return dev; - } -@@ -1593,6 +1612,9 @@ - - orig_dev = skb_bond(skb); - -+ if (!orig_dev) -+ return NET_RX_DROP; -+ - __get_cpu_var(netdev_rx_stat).total++; - - skb->h.raw = skb->nh.raw = skb->data; -@@ -2028,7 +2050,7 @@ +@@ -2028,7 +2026,7 @@ .release = seq_release, }; @@ -16672,7 +16737,7 @@ diff -Nur linux-2.6.16/net/core/dev.c linux-2.6.16-bcm43xx/net/core/dev.c extern int wireless_proc_init(void); #else #define wireless_proc_init() 0 -@@ -2582,7 +2604,7 @@ +@@ -2582,7 +2580,7 @@ ret = -EFAULT; return ret; } @@ -16681,7 +16746,7 @@ diff -Nur linux-2.6.16/net/core/dev.c linux-2.6.16-bcm43xx/net/core/dev.c /* Take care of Wireless Extensions */ if (cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST) { /* If command is `set a parameter', or -@@ -2603,7 +2625,7 @@ +@@ -2603,7 +2601,7 @@ ret = -EFAULT; return ret; } |