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

Reply via email to