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
[email protected]
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev