Skip to contentSkip to conversation

rtl8187: always set MSR_LINK_ENEDCA flag with RTL8187B

PATCH In review Herton Ronaldo Krzesinski 3 participants 5 messages Aug 21, 2009 – Aug 22, 2009 Networking drivers (wireless)

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 rtl8187: always set MSR_LINK_ENEDCA flag with RTL8187B

RTL8187B always needs MSR_LINK_ENEDCA flag to be set even when it is in no link mode, otherwise it'll not be able to associate when this flag is not set after the change "mac80211: fix managed mode BSSID handling" (commit 9cef8737).

By accident, setting BSSID of AP before association makes 8187B to successfuly associate even when ENEDCA flag isn't set, which was the case before the mac80211 change. But now the BSSID of AP we are trying to associate is only available after association is successful, and any attempt to associate without the needed flag doesn't work.

---
 drivers/net/wireless/rtl818x/rtl8187_dev.c |   14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)

This is a bug fix that should be sent too for 2.6.31-rcX

drivers/net/wireless/rtl818x/rtl8187_dev.c +10 -4
index 90f3835..5830f6c 100644
@@ -870,6 +870,9 @@ static int rtl8187b_init_hw(struct ieee80211_hw *dev)
 	priv->aifsn[3] = 3; /* AIFSN[AC_BE] */
 	rtl818x_iowrite8(priv, &priv->map->ACM_CONTROL, 0);
 
+	/* ENEDCA flag must always be set, transmit issues? */
+	rtl818x_iowrite8(priv, &priv->map->MSR, RTL818X_MSR_ENEDCA);
+
 	return 0;
 }
 
@@ -1174,13 +1177,16 @@ static void rtl8187_bss_info_changed(struct ieee80211_hw *dev,
 			rtl818x_iowrite8(priv, &priv->map->BSSID[i],
 					 info->bssid[i]);
 
+		if (priv->is_rtl8187b)
+			reg = RTL818X_MSR_ENEDCA;
+		else
+			reg = 0;
+
 		if (is_valid_ether_addr(info->bssid)) {
-			reg = RTL818X_MSR_INFRA;
-			if (priv->is_rtl8187b)
-				reg |= RTL818X_MSR_ENEDCA;
+			reg |= RTL818X_MSR_INFRA;
 			rtl818x_iowrite8(priv, &priv->map->MSR, reg);
 		} else {
-			reg = RTL818X_MSR_NO_LINK;
+			reg |= RTL818X_MSR_NO_LINK;
 			rtl818x_iowrite8(priv, &priv->map->MSR, reg);
 		}
 
Signature · 1 line
1.6.4
Tested-by on v1 1/1
#1 lore raw
Quoted 5 lines · Herton Ronaldo Krzesinski

RTL8187B always needs MSR_LINK_ENEDCA flag to be set even when it is in no link mode, otherwise it'll not be able to associate when this flag is not set after the change "mac80211: fix managed mode BSSID handling" (commit 9cef8737).

Quoted 8 lines

By accident, setting BSSID of AP before association makes 8187B to successfuly associate even when ENEDCA flag isn't set, which was the case before the mac80211 change. But now the BSSID of AP we are trying to associate is only available after association is successful, and any attempt to associate without the needed flag doesn't work.

---

I had just finished bisecting the problem reported in Bug #13960 when this patch from Herton appeared in my mailbox, and it fixed the problem.

Larry

Acked-by
#2 lore raw
Quoted 12 lines · Larry Finger
Quoted 11 lines · Herton Ronaldo Krzesinski

RTL8187B always needs MSR_LINK_ENEDCA flag to be set even when it is in no link mode, otherwise it'll not be able to associate when this flag is not set after the change "mac80211: fix managed mode BSSID handling" (commit 9cef8737).

By accident, setting BSSID of AP before association makes 8187B to successfuly associate even when ENEDCA flag isn't set, which was the case before the mac80211 change. But now the BSSID of AP we are trying to associate is only available after association is successful, and any attempt to associate without the needed flag doesn't work.

Quoted 4 lines
Quoted 2 lines

---

Quoted 10 lines

I had just finished bisecting the problem reported in Bug #13960 when this patch from Herton appeared in my mailbox, and it fixed the problem.

Larry
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

This seems to be related to a problem I reported a while back - see the "compat-wireless won't associate on 2nd load" thread, I wrote on May 31. Supposedly I had that problem about a week before that, the date on the patch from Johannes is May 14, but I just went back to look at the mailing list archive and it looks like there were some problem with applying and John did some fix on 20th. So it seems that it might be the source of my not being able to load compat-wireless a 2nd time; and the description of the problem sounds like it too.

Sorry I haven't been doing much with compat-wireless lately, so I have no firm data whether I have the same problem or not since May - that problem only happens if I switch from one compat-wireless to another compat-wireless, without rebooting - while I have tried compat-wireless in the last two months, I don't think I have followed compat-wireless as closely as I should to have two successive compat-wireless. I probably should go and have a try now.

Thanks for hunting this down!

Hin-Tak

#3 lore raw
Quoted 10 lines · Hin-Tak Leung

This seems to be related to a problem I reported a while back - see the "compat-wireless won't associate on 2nd load" thread, I wrote on May 31. Supposedly I had that problem about a week before that, the date on the patch from Johannes is May 14, but I just went back to look at the mailing list archive and it looks like there were some problem with applying and John did some fix on 20th. So it seems that it might be the source of my not being able to load compat-wireless a 2nd time; and the description of the problem sounds like it too.

Quoted 7 lines

Sorry I haven't been doing much with compat-wireless lately, so I have no firm data whether I have the same problem or not since May - that problem only happens if I switch from one compat-wireless to another compat-wireless, without rebooting - while I have tried compat-wireless in the last two months, I don't think I have followed compat-wireless as closely as I should to have two successive compat-wireless. I probably should go and have a try now.

This problem was quite strange. My system would fail when the RTL8187B was inserted when the system booted. Unloading the driver did not help, but removing/reinstalling the card fixed the problem. As all my testing had been to install the card after booting, I never saw the failure.

Larry

#4 lore raw
Quoted 8 lines · Larry Finger
Quoted 1 line · Hin-Tak Leung

This problem was quite strange. My system would fail when the RTL8187B was inserted when the system booted. Unloading the driver did not help, but removing/reinstalling the card fixed the problem. As all my testing had been to install the card after booting, I never saw the failure.

Removing/reinstalling the card also reset the usb hub driver, I think, and does more than unloading the driver. I don't have that ability (rtl8187 built-in), but suspend/resume on my system also works around the 'can't load 2nd time' problem.

Anyway, the 'can't load compat-wireless 2nd time' problem seems to have gone away - I just loaded it a 2nd time testing the rkfill patch.

Hin-Tak