aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00/rt2800usb.c
diff options
context:
space:
mode:
authorIvo van Doorn <ivdoorn@gmail.com>2009-09-06 09:14:23 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-09-09 11:18:14 -0400
commit4789666e13fb0b2d45feb1b4a5119a1b997ec84c (patch)
tree2071e79396f94d56177eab6386b5ce09e799abb8 /drivers/net/wireless/rt2x00/rt2800usb.c
parentfd413da852991e96c555ad7253cc481bc133e221 (diff)
rt2x00: Hardcode TX ack timeout and consume time
The calculated values for the ACK timeout and ACK consume time are different then the values as used by the Legacy drivers. After testing from James Ledwith it appeared that the calculated values caused a high amount of TX failures, and the values from the Legacy drivers were the most optimal to prevent TX failure due to excessive retries. The symptoms of this problem: - Rate control module always falls back to 1Mbs - Low throughput when bitrate was fixed Possible side-effects (not confirmed but highly likely) - Problems with DHCP - Broken connections due to lack of probe response This should fix at least: Kernel bugzilla reports: [13362], [13009], [9273] Fedora bugzilla reports: [443203] but possible some additional bugs as well. Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2800usb.c')
-rw-r--r--drivers/net/wireless/rt2x00/rt2800usb.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
index 639dc6cc04b9..a084077a1c61 100644
--- a/drivers/net/wireless/rt2x00/rt2800usb.c
+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
@@ -580,8 +580,7 @@ static void rt2800usb_config_erp(struct rt2x00_dev *rt2x00dev,
580 u32 reg; 580 u32 reg;
581 581
582 rt2x00usb_register_read(rt2x00dev, TX_TIMEOUT_CFG, &reg); 582 rt2x00usb_register_read(rt2x00dev, TX_TIMEOUT_CFG, &reg);
583 rt2x00_set_field32(&reg, TX_TIMEOUT_CFG_RX_ACK_TIMEOUT, 583 rt2x00_set_field32(&reg, TX_TIMEOUT_CFG_RX_ACK_TIMEOUT, 0x20);
584 DIV_ROUND_UP(erp->ack_timeout, erp->slot_time));
585 rt2x00usb_register_write(rt2x00dev, TX_TIMEOUT_CFG, reg); 584 rt2x00usb_register_write(rt2x00dev, TX_TIMEOUT_CFG, reg);
586 585
587 rt2x00usb_register_read(rt2x00dev, AUTO_RSP_CFG, &reg); 586 rt2x00usb_register_read(rt2x00dev, AUTO_RSP_CFG, &reg);