Netdev Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Hauke Mehrtens <hauke@hauke-m.de>
To: Eric Dumazet <eric.dumazet@gmail.com>, davem@davemloft.net
Cc: kuba@kernel.org, netdev@vger.kernel.org,
martin.blumenstingl@googlemail.com
Subject: Re: [PATCH 3/3] net: lantiq: Use napi_complete_done()
Date: Mon, 17 Aug 2020 23:17:35 +0200 [thread overview]
Message-ID: <718dce81-ace3-aaad-0f81-e75e227cd722@hauke-m.de> (raw)
In-Reply-To: <17761534-65b1-e575-5e00-55e6f7e3f7b7@gmail.com>
[-- Attachment #1.1: Type: text/plain, Size: 1956 bytes --]
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@hauke-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
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
next prev parent reply other threads:[~2020-08-17 21:18 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-15 18:33 [PATCH 1/3] net: lantiq: Wake TX queue again Hauke Mehrtens
2020-08-15 18:33 ` [PATCH 2/3] net: lantiq: use netif_tx_napi_add() for TX NAPI Hauke Mehrtens
2020-08-16 18:05 ` Eric Dumazet
2020-08-15 18:33 ` [PATCH 3/3] net: lantiq: Use napi_complete_done() Hauke Mehrtens
2020-08-16 18:07 ` Eric Dumazet
2020-08-17 21:17 ` Hauke Mehrtens [this message]
2020-08-18 0:33 ` Eric Dumazet
2020-08-18 0:48 ` Eric Dumazet
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=718dce81-ace3-aaad-0f81-e75e227cd722@hauke-m.de \
--to=hauke@hauke-m.de \
--cc=davem@davemloft.net \
--cc=eric.dumazet@gmail.com \
--cc=kuba@kernel.org \
--cc=martin.blumenstingl@googlemail.com \
--cc=netdev@vger.kernel.org \
--subject='Re: [PATCH 3/3] net: lantiq: Use napi_complete_done()' \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).