Subject: Re: netdev tx timeouts

From: Michael Buesch <[email-masked]>
Date: Wed, 13 Sep 2006 14:30:53 +0200

On Wednesday 13 September 2006 04:25, Larry Finger wrote:
> Michael,
> 
> I still have not gotten a network guru to answer any questions about 
> synchronize_net, but I have been testing the patch below:

I'd say this is racy.
Did you test this on SMP?

> Index: wireless-2.6/drivers/net/wireless/bcm43xx/bcm43xx_main.c
> ===================================================================
> --- wireless-2.6.orig/drivers/net/wireless/bcm43xx/bcm43xx_main.c
> +++ wireless-2.6/drivers/net/wireless/bcm43xx/bcm43xx_main.c
> @@ -3169,8 +3169,8 @@ static void bcm43xx_periodic_work_handle
>   		 * be preemtible.
>   		 */
>   		mutex_lock(&bcm->mutex);
> -		netif_stop_queue(bcm->net_dev);
>   		synchronize_net();

A TX handler starts on another CPU.

> +		netif_stop_queue(bcm->net_dev);

It's still running... boom.

>   		spin_lock_irqsave(&bcm->irq_lock, flags);
>   		bcm43xx_mac_suspend(bcm);
>   		if (bcm43xx_using_pio(bcm))
> 
> With the synchronize_net call before the netif_stop_queue as shown, my device 
> has run since last Saturday with no netdev watchdog tx timeouts. Roughly two 
> days of that testing was done at the accelerated rate of 60X normal.
> 
> I still hope to get access to a guru, but if that doesn't happen soon, I'm going 
> to push this change so that it gets into 2.6.19.
> 
> Larry
> 
> 

-- 
Greetings Michael.