Search Linux Wireless

Re: RaLink RT2500 802.11g Cardbus/mini-PCI

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sunday 13 April 2008, Thomas Bächler wrote:
> Johannes Berg schrieb:
> >>> I compiled half a dozen kernels and now figured it out. This is the 
> >>> patch that causes rt2500pci to be slow. If I revert it, it is fast again:
> >>> http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=d43c7b37ad787173d08683f05eadeea0398fefdf
> > 
> >> That's odd. But that patch looks a bit fishy now that I look at it, care
> >> to try below change (manually, this isn't a patch)?
> >>
> >> johannes
> >>
> >>         bool use_protection = (erp_value & WLAN_ERP_USE_PROTECTION) != 0;
> >> -       bool use_short_preamble = (erp_value & WLAN_ERP_BARKER_PREAMBLE) == 0;
> >> +       bool use_short_preamble = (erp_value & WLAN_ERP_BARKER_PREAMBLE) != 0;
> >>         DECLARE_MAC_BUF(mac);
> > 
> > No, wait, I'm confused, the original patch is correct. As far as I can
> > tell, the code there is correct. The bug in that code was actually
> > introduced by me based on the wrong thinking I just did again.
> 
> I figured as much from the original commit message. So rt2500pci works 
> properly when the use_short_preamble has the wrong value, and breaks 
> when it has the right one.
> By the way, 2.6.25-rc8 was the first time that rt2500pci was ever fast 
> enough to be usable at all for me, so the bug you introduced seemed to 
> be the fix for my speed problems (which is odd). My guess is that 
> rt2500pci treats use_short_preamble wrong.

Could you test this with the below patch?
This enables short_preamble for all rt2x00 drivers regardless of what mac80211 issues.

---
diff --git a/drivers/net/wireless/rt2x00/rt2x00config.c b/drivers/net/wireless/rt2x00/rt2x00config.c
index a9930a0..1c24f5a 100644
--- a/drivers/net/wireless/rt2x00/rt2x00config.c
+++ b/drivers/net/wireless/rt2x00/rt2x00config.c
@@ -83,7 +83,7 @@ void rt2x00lib_config_erp(struct rt2x00_dev *rt2x00dev,
 
 	memset(&erp, 0, sizeof(erp));
 
-	erp.short_preamble = bss_conf->use_short_preamble;
+	erp.short_preamble = 1;
 	erp.ack_timeout = PLCP + get_duration(ACK_SIZE, 10);
 	erp.ack_consume_time = SIFS + PLCP + get_duration(ACK_SIZE, 10);
 
@@ -92,7 +92,7 @@ void rt2x00lib_config_erp(struct rt2x00_dev *rt2x00dev,
 	else
 		erp.ack_timeout += DIFS;
 
-	if (bss_conf->use_short_preamble) {
+	if (1) {
 		erp.ack_timeout += SHORT_PREAMBLE;
 		erp.ack_consume_time += SHORT_PREAMBLE;
 	} else {

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

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux