1
linux/drivers/staging/brcm80211
Arend van Spriel d062d44a83 staging: brcm80211: remove assert to avoid panic since 2.6.37 kernel
The driver assumed it would receive skb packets from MAC80211 which
are not cloned. To guard this assumption an assert was placed in
the transmit routine. As of kernel 2.6.37 it turns out MAC80211 does
pass skb packets that are cloned. The assert is also not needed as
it does not lead to a failure state in our driver when the packet is
cloned. Therefore the assert can safely be removed.

> commit f8a0a78148
> Author: Felix Fietkau <nbd@openwrt.org>
> Date:   Sat Dec 18 19:30:50 2010 +0100
>
>     mac80211: fix potentially redundant skb data copying
>
>     When an skb is shared, it needs to be duplicated, along with its data
>     If the skb does not have enough headroom, using skb_copy might cause t
>     buffer to be copied twice (once by skb_copy and once by pskb_expand_he
>     Fix this by using skb_clone initially and letting ieee80211_skb_resize
>     out the rest.
>
>     Signed-off-by: Felix Fietkau <nbd@openwrt.org>
>     Signed-off-by: John W. Linville <linville@tuxdriver.com>
>

Acked-by: Brett Rudley <brudley@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Cc: stable <stable@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-01-22 06:32:22 -08:00
..
brcmfmac staging: brcm80211: Fix WL_<type> logging macros 2010-12-16 12:25:37 -08:00
include staging: brcm80211: Convert ETHER_TYPE_802_1X to ETH_P_PAE 2010-12-16 12:21:30 -08:00
phy staging: brcm80211: remove redundant CHIPID macro 2010-12-02 12:34:09 -08:00
sys staging: brcm80211: remove assert to avoid panic since 2.6.37 kernel 2011-01-22 06:32:22 -08:00
util staging: brcm80211: Convert ETHER_ADDR_LEN to ETH_ALEN 2010-12-16 12:21:28 -08:00
Kconfig staging: brcm80211: Make compiling of brcm80211.ko and brcmfmac.ko mutually exclusive. 2010-09-26 18:23:57 -07:00
Makefile staging: brcm80211: Purge unused bcmwpa.[ch] 2010-10-14 12:20:49 -07:00
README staging: brcm80211: fix documentation on installing firmware 2010-12-08 14:28:51 -08:00
TODO staging: brcm80211: updated maintainers contact information 2010-11-29 10:53:14 -08:00

Broadcom Mac80211 driver

This is a driver in progress.  It has features still to be implemented well as
bugs in current code.


What's here and not here
=======================
- Completely open source host driver, no binary object files
- Features Broadcom's OneDriver architecture (single source base for
  supported chips and architectures)
- On-chip firmware loaded using standard request_firmware()
- Support for BCM43224, BCM43225, BCM4313 (PCIe NIC)
- Framework for supporting new chips, including mac80211-aware embedded chips
- Does not support older PCI/PCIe chips with SSB backplane
- Driver includes BMAC interface for transparent dongle support
- Uses minstrel_ht rate algorithm
- HW based encryption not enabled yet


What's done
==========
- Integration with mac80211 stack
- A-MPDU single & dual stream rates
- BCM43224:	Dualband, Dual stream, 20MHz channels
	Throughput (in chamber): ~85-90 Mbits/sec (in both 2.4 & 5 GHz bands)
- BCM43225:	2.4 GHz, Dual Stream, 20MHz channels
	Throughput (in chamber): ~85-90 Mbits/sec
- BCM4313:		2.4 GHz, Single Stream
	Throughput (in chamber): ~40 Mbits/sec


Things To Be Done
=================
See the TODO file


Firmware installation
======================
Firmware is available from the Linux firmware repository at:

	git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git
	http://git.kernel.org/?p=linux/kernel/git/dwmw2/linux-firmware.git
	https://git.kernel.org/?p=linux/kernel/git/dwmw2/linux-firmware.git

For all chips, copy brcm/bcm43xx-0.fw and brcm/bcm43xx_hdr-0.fw to
/lib/firmware/brcm (or wherever firmware is normally installed on your system).

Currently supported chips
==============
PCI
Name		Device ID
BCM4313		0x4727
BCM43224	0x4353
BCM43225	0x4357


Bugs/Problems
==============
- Driver can get confused while scanning during high throughput, can cause
  burping, hanging, and possible crashing.
- Occasional hangs & burps with BCM43224 on 2.4 GHz with dual stream rates.
- Occasional crashes with BCM43224 on multicore machines.


Note on Regulatory Implementation
================================
This generation of chips contain additional regulatory support independent of
the driver. The devices use a single worldwide regulatory domain, with channels
12-14 (2.4 GHz band) and channels 52-64 and 100-140 (5 GHz band) restricted to
passive operation. Transmission on those channels is suppressed until
appropriate other traffic is observed on those channels.

Within the driver, we use the ficticious country code "X2" to represent this
worldwide regulatory domain. There is currently no interface to configure a
different domain.

The driver reads the SROM country code from the chip and hands it up to
mac80211 as the regulatory hint, however this information is otherwise unused
with the driver.


Contact Info:
=============
Brett Rudley		brudley@broadcom.com
Henry Ptasinski		henryp@broadcom.com
Dowan Kim			dowan@broadcom.com
Roland Vossen		rvossen@broadcom.com
Arend van Spriel	arend@broadcom.com