Subject: Re: [patch 09/11] forcedeth: improve NAPI logic

From: Ayaz Abdulla <[email-masked]>
Date: Thu, 26 Apr 2007 10:30:04 -0400

I don't see why the NAPI handler needs to process tx packets. The ISR 
will handle all tx processing.

[email-masked] wrote:
> From: Ingo Molnar <[email-masked]>
> 
> Another forcedeth.c thing: i noticed that its NAPI handler does not do
> tx-ring processing.  The patch below implements this - tested on DESC_VER_2
> hardware, with CONFIG_FORCEDETH_NAPI=y.
> 
> Signed-off-by: Ingo Molnar <[email-masked]>
> Cc: Ayaz Abdulla <[email-masked]>
> Signed-off-by: Andrew Morton <[email-masked]>
> ---
> 
>  drivers/net/forcedeth.c |    8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff -puN drivers/net/forcedeth.c~forcedeth-improve-napi-logic drivers/net/forcedeth.c
> --- a/drivers/net/forcedeth.c~forcedeth-improve-napi-logic
> +++ a/drivers/net/forcedeth.c
> @@ -3108,9 +3108,17 @@ static int nv_napi_poll(struct net_devic
>  	int retcode;
>  
>  	if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) {
> +		spin_lock_irqsave(&np->lock, flags);
> +		nv_tx_done(dev);
> +		spin_unlock_irqrestore(&np->lock, flags);
> +
>  		pkts = nv_rx_process(dev, limit);
>  		retcode = nv_alloc_rx(dev);
>  	} else {
> +		spin_lock_irqsave(&np->lock, flags);
> +		nv_tx_done_optimized(dev, np->tx_ring_size);
> +		spin_unlock_irqrestore(&np->lock, flags);
> +
>  		pkts = nv_rx_process_optimized(dev, limit);
>  		retcode = nv_alloc_rx_optimized(dev);
>  	}
> _