From f4eb601bd7186071f8655058fcce615ac69dbd64 Mon Sep 17 00:00:00 2001 From: John W. Linville Date: Tue, 7 Oct 2008 15:11:20 -0400 Subject: [RFC PATCH] rtl8187: do not report ACKs if USB Tx status is non-zero The vendor-supplied driver treats a USB Tx failure as an un-ACKed frame. I don't see why we shouldn't do the same thing -- hopefully this makes rate-scaling algorithms behave sanely with the rtl8187 driver. Thanks to Felix Fietkau for suggesting this as an option. Signed-off-by: John W. Linville --- This is currently untested -- anyone with rtl8187 bored enough to try it? :-) drivers/net/wireless/rtl8187_dev.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) diff --git a/drivers/net/wireless/rtl8187_dev.c b/drivers/net/wireless/rtl8187_dev.c index ca5deb6..ae21191 100644 --- a/drivers/net/wireless/rtl8187_dev.c +++ b/drivers/net/wireless/rtl8187_dev.c @@ -164,7 +164,12 @@ static void rtl8187_tx_cb(struct urb *urb) skb_pull(skb, priv->is_rtl8187b ? sizeof(struct rtl8187b_tx_hdr) : sizeof(struct rtl8187_tx_hdr)); memset(&info->status, 0, sizeof(info->status)); - info->flags |= IEEE80211_TX_STAT_ACK; + if (!(info->flags & IEEE80211_TX_CTL_NO_ACK)) { + if (!urb->status) + info->flags |= IEEE80211_TX_STAT_ACK; + else /* assume ACK not received */ + info->status.excessive_retries = 1; + } ieee80211_tx_status_irqsafe(hw, skb); } -- 1.5.4.3