|
|
@ -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
|
|
|
|
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/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
|
|
|
|
+++ 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
|
|
|
|
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/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 @@
|
|
|
|
@@ -110,10 +110,8 @@
|
|
|
|
#include <linux/netpoll.h>
|
|
|
|
#include <linux/netpoll.h>
|
|
|
|
#include <linux/rcupdate.h>
|
|
|
|
#include <linux/rcupdate.h>
|
|
|
|
#include <linux/delay.h>
|
|
|
|
#include <linux/delay.h>
|
|
|
|
-#ifdef CONFIG_NET_RADIO
|
|
|
|
-#ifdef CONFIG_NET_RADIO
|
|
|
|
-#include <linux/wireless.h> /* Note : will define WIRELESS_EXT */
|
|
|
|
-#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>
|
|
|
|
#include <net/iw_handler.h>
|
|
|
|
-#endif /* CONFIG_NET_RADIO */
|
|
|
|
-#endif /* CONFIG_NET_RADIO */
|
|
|
|
#include <asm/current.h>
|
|
|
|
#include <asm/current.h>
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
/*
|
|
|
|
@@ -1448,8 +1446,29 @@
|
|
|
|
@@ -2028,7 +2026,7 @@
|
|
|
|
{
|
|
|
|
|
|
|
|
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 @@
|
|
|
|
|
|
|
|
.release = seq_release,
|
|
|
|
.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);
|
|
|
|
extern int wireless_proc_init(void);
|
|
|
|
#else
|
|
|
|
#else
|
|
|
|
#define wireless_proc_init() 0
|
|
|
|
#define wireless_proc_init() 0
|
|
|
|
@@ -2582,7 +2604,7 @@
|
|
|
|
@@ -2582,7 +2580,7 @@
|
|
|
|
ret = -EFAULT;
|
|
|
|
ret = -EFAULT;
|
|
|
|
return ret;
|
|
|
|
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 */
|
|
|
|
/* Take care of Wireless Extensions */
|
|
|
|
if (cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST) {
|
|
|
|
if (cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST) {
|
|
|
|
/* If command is `set a parameter', or
|
|
|
|
/* If command is `set a parameter', or
|
|
|
|
@@ -2603,7 +2625,7 @@
|
|
|
|
@@ -2603,7 +2601,7 @@
|
|
|
|
ret = -EFAULT;
|
|
|
|
ret = -EFAULT;
|
|
|
|
return ret;
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
}
|
|
|
|