Subject: Re: 2.6.19-rc5-mm2 -- bcm43xx busted (backing out the bcm43xx patches fixes it)

From: Larry Finger <[email-masked]>
Date: Wed, 15 Nov 2006 20:16:37 -0600

Rafael J. Wysocki wrote:
> On Wednesday, 15 November 2006 00:21, Miles Lane wrote:
>> Hello,
>>
>> The last three MM kernels have fail to give me a working bcm43xx driver.
>> The odd thing is that dmesg output seems to indicate that the driver
>> is working okay.  NetworkManager doesn't see the driver, though.
>> "iwlist scan" fails to find any access points, too.  iwconfig shows
>> "Access Point: invalid".
> 
> I can confirm the symptoms, I see them too on my test boxes.
> 
>> I tried backing out the following patches, and it fixes the problem:
>>
>> drivers/net/wireless/bcm43xx/bcm43xx.h
>> drivers/net/wireless/bcm43xx/bcm43xx_main.c
>> drivers/net/wireless/bcm43xx/bcm43xx_power.c
>> drivers/net/wireless/bcm43xx/bcm43xx_wx.c
>>> drivers/net/wireless/bcm43xx/bcm43xx_xmit.c 

The missing patch is shown below. This patch was entitled "[PATCH] bcm43xx: Readd dropped
assignment" and submitted to wireless-2.6 by Daniel Drake on 10/17/06, but it seems to have fallen
through the cracks. It is a fix to a patch entitled "[PATCH] ieee80211: Move IV/ICV stripping into
ieee80211_rx" also submitted by Daniel Drake on 9/26/2006.

NOTE to maintainers: This problem affects BOTH wireless-2.6 and 2.6.19-rcX-mmY. At present, the
"Move IV/ICV" patch has not been incorporated into 2.6.19-rcX and it is OK.

Larry

In the patch sent by Daniel Drake under the title "[PATCH] ieee80211: Move
IV/ICV stripping into ieee80211_rx", a needed line was accidentally removed.
As my current copy of wireless-2.6.git does not contain this line, I am
(re)submitting a patch to restore that line.

Signed-off-by: Larry Finger <[email-masked]>
---

Index: wireless-2.6/drivers/net/wireless/bcm43xx/bcm43xx_xmit.c
===================================================================
--- wireless-2.6.orig/drivers/net/wireless/bcm43xx/bcm43xx_xmit.c
+++ wireless-2.6/drivers/net/wireless/bcm43xx/bcm43xx_xmit.c
@@ -543,6 +543,7 @@ int bcm43xx_rx(struct bcm43xx_private *b
  		break;
  	}

+	frame_ctl = le16_to_cpu(wlhdr->frame_ctl);
  	switch (WLAN_FC_GET_TYPE(frame_ctl)) {
  	case IEEE80211_FTYPE_MGMT:
  		ieee80211_rx_mgt(bcm->ieee, wlhdr, &stats);