lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <718dce81-ace3-aaad-0f81-e75e227cd722@hauke-m.de>
Date:   Mon, 17 Aug 2020 23:17:35 +0200
From:   Hauke Mehrtens <hauke@...ke-m.de>
To:     Eric Dumazet <eric.dumazet@...il.com>, davem@...emloft.net
Cc:     kuba@...nel.org, netdev@...r.kernel.org,
        martin.blumenstingl@...glemail.com
Subject: Re: [PATCH 3/3] net: lantiq: Use napi_complete_done()

On 8/16/20 8:07 PM, Eric Dumazet wrote:
> 
> 
> On 8/15/20 11:33 AM, Hauke Mehrtens wrote:
>> Use napi_complete_done() and activate the interrupts when this function
>> returns true. This way the generic NAPI code can take care of activating
>> the interrupts.
>>
>> Signed-off-by: Hauke Mehrtens <hauke@...ke-m.de>
>> ---
>>  drivers/net/ethernet/lantiq_xrx200.c | 8 ++------
>>  1 file changed, 2 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/net/ethernet/lantiq_xrx200.c b/drivers/net/ethernet/lantiq_xrx200.c
>> index f34e4dc8c661..674ffb2ecd9a 100644
>> --- a/drivers/net/ethernet/lantiq_xrx200.c
>> +++ b/drivers/net/ethernet/lantiq_xrx200.c
>> @@ -229,10 +229,8 @@ static int xrx200_poll_rx(struct napi_struct *napi, int budget)
>>  		}
>>  	}
>>  
>> -	if (rx < budget) {
>> -		napi_complete(&ch->napi);
>> +	if (napi_complete_done(&ch->napi, rx))
>>  		ltq_dma_enable_irq(&ch->dma);
>> -	}
>>  
>>  	return rx;
>>  }
>> @@ -271,10 +269,8 @@ static int xrx200_tx_housekeeping(struct napi_struct *napi, int budget)
>>  	if (netif_queue_stopped(net_dev))
>>  		netif_wake_queue(net_dev);
>>  
>> -	if (pkts < budget) {
>> -		napi_complete(&ch->napi);
>> +	if (napi_complete_done(&ch->napi, pkts))
>>  		ltq_dma_enable_irq(&ch->dma);
>> -	}
>>  
>>  	return pkts;
>>  }
>>
> 
> 
> This looks buggy to me.

Hi Eric,

Thanks for looking at the patch.

What exactly looks buggy to you?

We see with and also without this patch problems in the TX path, it
looks like the netif tx queue is not started again.

> Please look again to other implementations for a correct usage.

I looked at multiple drivers and they look similar in this area.
For example microchip/lan743x_main.c is looking similar to me.

The hardware has two interrupts one for the RX and one for TX complete.

Can you please suggest a driver which uses the NAPI in a good way and is
not very complex.

Hauke



Download attachment "signature.asc" of type "application/pgp-signature" (489 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ