Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 47ab3840 authored by Larry Finger's avatar Larry Finger Committed by John W. Linville
Browse files

p54: tx refused but queue active



In the mainline kernel, p54usb will fail because the TX queue length can
become < 0. This problem has been reported as Bugzilla #13725. The failure
is expressed by the following message in the logs:

WARNING: at net/mac80211/tx.c:1325 ieee80211_tx+0x23c/0x298 [mac80211]()
Hardware name: HP Pavilion dv2700 Notebook PC
tx refused but queue active

This problem has been recently observed in the wireless-testing tree, where
a full solution is being tested. That fix is too invasive for 2.6.31-rcX,
but the simple change supplied here will prevent the failure.

Signed-off-by: default avatarLarry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 804ef71e
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -912,13 +912,14 @@ static void p54_rx_frame_sent(struct ieee80211_hw *dev, struct sk_buff *skb)
		}

		__skb_unlink(entry, &priv->tx_queue);
		spin_unlock_irqrestore(&priv->tx_queue.lock, flags);

		frame_len = entry->len;
		entry_hdr = (struct p54_hdr *) entry->data;
		entry_data = (struct p54_tx_data *) entry_hdr->data;
		if (priv->tx_stats[entry_data->hw_queue].len)
			priv->tx_stats[entry_data->hw_queue].len--;
		priv->stats.dot11ACKFailureCount += payload->tries - 1;
		spin_unlock_irqrestore(&priv->tx_queue.lock, flags);

		/*
		 * Frames in P54_QUEUE_FWSCAN and P54_QUEUE_BEACON are