Am Montag 02 Oktober 2006 01:21 schrieb Larry Finger:
> Hendrik Sattler wrote:
> > Am Sonntag 01 Oktober 2006 15:45 schrieb Hendrik Sattler:
> >> I'll try with BADNESS_LIMIT set to 0.
> >
> > Didn't help.
>
> Please send a listing of routine bcm43xx_periodic_work_handler in
> drivers/net/wireless/bcm43xx/bcm43xx_main.c.

Didn't change anything manually in that function, only the wireless26 patch 
from you and setting the BADNESS_LIMIT define to 0.

static void bcm43xx_periodic_work_handler(void *d)
{
        struct bcm43xx_private *bcm = d;
        unsigned long flags;
        u32 savedirqs = 0;
        int badness;

        mutex_lock(&bcm->mutex);
        badness = estimate_periodic_work_badness(bcm->periodic_state);
        if (badness > BADNESS_LIMIT) {
                /* Periodic work will take a long time, so we want it to
                 * be preemtible.
                 */
                netif_tx_disable(bcm->net_dev);
                spin_lock_irqsave(&bcm->irq_lock, flags);
                bcm43xx_mac_suspend(bcm);
                if (bcm43xx_using_pio(bcm))
                        bcm43xx_pio_freeze_txqueues(bcm);
                savedirqs = bcm43xx_interrupt_disable(bcm, BCM43xx_IRQ_ALL);
                spin_unlock_irqrestore(&bcm->irq_lock, flags);
                bcm43xx_synchronize_irq(bcm);
        } else {
                /* Periodic work should take short time, so we want low
                 * locking overhead.
                 */
                spin_lock_irqsave(&bcm->irq_lock, flags);
        }

        do_periodic_work(bcm);

        if (badness > BADNESS_LIMIT) {
                spin_lock_irqsave(&bcm->irq_lock, flags);
                tasklet_enable(&bcm->isr_tasklet);
                bcm43xx_interrupt_enable(bcm, savedirqs);
                if (bcm43xx_using_pio(bcm))
                        bcm43xx_pio_thaw_txqueues(bcm);
                bcm43xx_mac_enable(bcm);
                netif_wake_queue(bcm->net_dev);
        }
        mmiowb();
        spin_unlock_irqrestore(&bcm->irq_lock, flags);
        mutex_unlock(&bcm->mutex);
}

HS
_______________________________________________
Bcm43xx-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev

Reply via email to