Skip to content

Commit

Permalink
rndis_wlan: enable stall workaround by link quality instead of link s…
Browse files Browse the repository at this point in the history
…peed

Enable workaround for poor link stalls by link quality instead of link
speed. Using link speed caused workaround be active always on 802.11b
networks which reduced performance and not even catch all stalls.

Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Jussi Kivilinna authored and John W. Linville committed Feb 15, 2008
1 parent 281c56d commit a97b1f3
Showing 1 changed file with 5 additions and 9 deletions.
14 changes: 5 additions & 9 deletions drivers/net/wireless/rndis_wlan.c
Original file line number Diff line number Diff line change
Expand Up @@ -2300,7 +2300,7 @@ static void rndis_update_wireless_stats(struct work_struct *work)
struct usbnet *usbdev = priv->usbdev;
struct iw_statistics iwstats;
__le32 rssi, tmp;
int len, ret, bitrate, j;
int len, ret, j;
unsigned long flags;
int update_jiffies = STATS_UPDATE_JIFFIES;
void *buf;
Expand Down Expand Up @@ -2352,14 +2352,10 @@ static void rndis_update_wireless_stats(struct work_struct *work)
if (ret == 0)
iwstats.discard.misc += le32_to_cpu(tmp);

/* Workaround transfer stalls on poor quality links. */
len = sizeof(tmp);
ret = rndis_query_oid(usbdev, OID_GEN_LINK_SPEED, &tmp, &len);
if (ret == 0) {
bitrate = le32_to_cpu(tmp) * 100;
if (bitrate > 11000000)
goto end;

/* Workaround transfer stalls on poor quality links.
* TODO: find right way to fix these stalls (as stalls do not happen
* with ndiswrapper/windows driver). */
if (iwstats.qual.qual <= 25) {
/* Decrease stats worker interval to catch stalls.
* faster. Faster than 400-500ms causes packet loss,
* Slower doesn't catch stalls fast enough.
Expand Down

0 comments on commit a97b1f3

Please sign in to comment.