On Sunday 26 July 2009 17:37:10 Larry Finger wrote: > Michael Buesch wrote: > > > > Just to explain my idea: > > I think there are two ways for this warning to trigger. > > The first being mac80211 being broken and not stopping the queue on request. > > That's probably not very likely. > > The second could possibly be the firmware reporting status for one frame > > multiple times. I did not check the whole code, but this could possibly > > lead to an integer under/overflow in the free_slots() calculation. A signed > > integer > > is used, so I think it can go negative, which would trigger the warning. > > > > I don't see another way to trigger the message. > > And as it only seems to happen with open firmware, it seems likely be caused > > by TX status reporting in the firmware. > > The message also triggers with proprietary firmware. My debugging hunk is > > @@ -1340,7 +1350,8 @@ int b43_dma_tx(struct b43_wldev *dev, st > B43_WARN_ON(ring->stopped); > > if (unlikely(free_slots(ring) < TX_SLOTS_PER_FRAME)) { > - b43warn(dev->wl, "DMA queue overflow\n"); > + b43warn(dev->wl, "DMA queue overflow with free_slots = > %d\n", > + free_slots(ring)); > err = -ENOSPC; > goto out_unlock; > } > > The revised printk shows > > b43-phy0 warning: DMA queue overflow with free_slots = 0
Ok, it's a mac80211 bug then. -- Greetings, Michael. _______________________________________________ Bcm43xx-dev mailing list Bcm43xx-dev@lists.berlios.de https://lists.berlios.de/mailman/listinfo/bcm43xx-dev