On Saturday 04 July 2009 18:40:14 Larry Finger wrote: > I have logged the usb transfers, but not yet analyzed them. great! > This time I got a new failure - I hit this warning at > net/mac80211/tx.c:1299 > retries++; > if (WARN(retries > 10, "tx refused but queue > active\n")) > goto drop; > goto retry; > > If I have analyzed this correctly, I hit this section of > p54_tx_qos_accounting_alloc at drivers/net/wireless/p54/txrx.c:204. > I'm running the splitup patches. > > if (unlikely(queue->len > queue->limit && > IS_QOS_QUEUE(p54_queue))) { > spin_unlock_irqrestore(&priv->tx_stats_lock, flags); > return -ENOSPC; > } > > Any suggestions on debugging this would be appreciated. --- diff --git a/drivers/net/wireless/p54/txrx.c b/drivers/net/wireless/p54/txrx.c index ea074a6..69fc70a 100644 --- a/drivers/net/wireless/p54/txrx.c +++ b/drivers/net/wireless/p54/txrx.c @@ -25,6 +25,7 @@ #include "p54.h" #include "lmac.h" +#define P54_MM_DEBUG #ifdef P54_MM_DEBUG static void p54_dump_tx_queue(struct p54_common *priv) { @@ -200,7 +201,18 @@ static int p54_tx_qos_accounting_alloc(struct p54_common *priv, spin_lock_irqsave(&priv->tx_stats_lock, flags); if (unlikely(queue->len > queue->limit && IS_QOS_QUEUE(p54_queue))) { + u16 ac_queue = p54_queue - P54_QUEUE_DATA; + int i; + + printk(KERN_DEBUG "TX queue stats\n"); + for (i = 0; i < 8; i++) + printk(KERN_DEBUG "\ttxq[%d]: used %d [of %d] => %s\n", + i, priv->tx_stats[i].len, + priv->tx_stats[i].limit, + ieee80211_queue_stopped(priv->hw, ac_queue) ? + "stopped" : "running"); spin_unlock_irqrestore(&priv->tx_stats_lock, flags); + p54_dump_tx_queue(priv); return -ENOSPC; } --- let's hope the queue .len count does not turn negative! regards, Chr -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html