Skip to content

Commit

Permalink
rt2x00: Fix transfer speed regression for USB hardware
Browse files Browse the repository at this point in the history
Patch:
  rt2x00: Make rt2x00_queue_entry_for_each more flexible
  commit: 10e1156

introduced a severe regression on the throughput
for USB hardware. It turns out that the exiting of
the rt2x00queue_for_each_entry() was done too early.

The exact cause for this regression is unknown,
but by disabling the premature exiting of the loop
seems to resolve the issue.

Signed-off-by: Ivo van Doorn <[email protected]>
Reported-by: Yasushi SHOJI <[email protected]>
Reported-by: Balint Viragh <[email protected]>
Tested-by: Balint Viragh <[email protected]>
Signed-off-by: John W. Linville <[email protected]>
  • Loading branch information
IvDoorn authored and linvjw committed May 5, 2011
1 parent aca355b commit 4268d8e
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions drivers/net/wireless/rt2x00/rt2x00usb.c
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,7 @@ static bool rt2x00usb_kick_tx_entry(struct queue_entry *entry, void* data)

if (!test_and_clear_bit(ENTRY_DATA_PENDING, &entry->flags) ||
test_bit(ENTRY_DATA_STATUS_PENDING, &entry->flags))
return true;
return false;

/*
* USB devices cannot blindly pass the skb->len as the
Expand Down Expand Up @@ -392,7 +392,7 @@ static bool rt2x00usb_kick_rx_entry(struct queue_entry *entry, void* data)

if (test_and_set_bit(ENTRY_OWNER_DEVICE_DATA, &entry->flags) ||
test_bit(ENTRY_DATA_STATUS_PENDING, &entry->flags))
return true;
return false;

rt2x00lib_dmastart(entry);

Expand Down Expand Up @@ -447,7 +447,7 @@ static bool rt2x00usb_flush_entry(struct queue_entry *entry, void* data)
struct queue_entry_priv_usb_bcn *bcn_priv = entry->priv_data;

if (!test_bit(ENTRY_OWNER_DEVICE_DATA, &entry->flags))
return true;
return false;

usb_kill_urb(entry_priv->urb);

Expand Down

0 comments on commit 4268d8e

Please sign in to comment.