From: Sowmini Varadhan <sowmini.varadhan@oracle.com>
To: David Miller <davem@davemloft.net>
Cc: raghuram.kothakota@oracle.com, netdev@vger.kernel.org
Subject: Re: [PATCH net-next 0/2] sunvnet: Packet processing in non-interrupt context.
Date: Mon, 6 Oct 2014 12:04:18 -0400 [thread overview]
Message-ID: <20141006160418.GA3604@oracle.com> (raw)
In-Reply-To: <20141003.120802.1213573830649867131.davem@davemloft.net>
> I think you should be able to get rid of all of the in-driver
> locking in the fast paths.
>
> NAPI ->poll() is non-reentrant, so all RX processing occurs
> strictly in a serialized environment.
>
> Once you do TX reclaim in NAPI context, then all you have to do is
> take the generic netdev TX queue lock during the evaluation of whether
> to wakeup the TX queue or not. Worst case you need to hold the
> TX netdev queue lock across the whole TX reclaim operation.
>
> The VIO lock really ought to be entirely superfluous in the data
> paths.
A few clarifications, since there are more driver-examples using NAPI for
Rx than for Tx reclaim
so I can move the LDC_EVENT_RESET/LDC_EVENT_UP processing code into the
napi callback, and that enables the removal of irqsave/restore for
vio.lock from vio_port_up at the least (I do this conditional on
in_softirq() so as to not perturb vdc code at the moment)
But there are still a lot of irqsaves at the ldc layer for the lp lock.
I dont know if these can/should be optimized out.
I looked at tg3 for a template on how to use NAPI in the TX path
The analog of the tg3_poll_work->tg3_tx invocation is probably the
maybe_tx_wakeup call triggered from the Rx side vnet processing,
which, with NAPI happens naturally from softirq context (no need for
extra tasklet).
Regarding rcu locking of port_list and the hash in struct vnet_port,
the thorn here is that vnet_set_rx_mode may end up allocating a
vnet_mcast_entry as part of __update_mc_list
(there may be a different bug here in that it assumes that the
first entry is the switch_port, and this is the only switch_port)
I dont know of a simple way to avoid that (a rwlock just for this
function?!).
But we still need to hold the vio lock around the ldc_write
(and also around dring write) in vnet_start_xmit, right?
--Sowmini
next prev parent reply other threads:[~2014-10-06 16:04 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-01 18:56 [PATCH net-next 0/2] sunvnet: Packet processing in non-interrupt context Sowmini Varadhan
2014-10-01 19:10 ` Eric Dumazet
2014-10-01 19:50 ` David Miller
2014-10-01 19:55 ` Sowmini Varadhan
2014-10-01 20:15 ` David Miller
2014-10-01 20:23 ` Sowmini Varadhan
2014-10-01 20:25 ` David Miller
2014-10-02 20:12 ` Sowmini Varadhan
2014-10-02 20:43 ` David Miller
2014-10-03 14:40 ` Sowmini Varadhan
2014-10-03 19:08 ` David Miller
2014-10-06 16:04 ` Sowmini Varadhan [this message]
2014-10-06 19:25 ` David Miller
2014-10-06 19:31 ` Sowmini Varadhan
2014-10-06 19:37 ` David Miller
2014-10-10 1:10 ` Raghuram Kothakota
2014-10-10 4:36 ` David Miller
2014-10-10 4:56 ` Raghuram Kothakota
2014-10-10 5:03 ` David Miller
2014-10-10 5:13 ` Raghuram Kothakota
2014-10-15 14:05 ` sunvnet NAPIfication Sowmini Varadhan
-- strict thread matches above, loose matches on Subject: below --
2014-10-01 20:24 [PATCH net-next 0/2] sunvnet: Packet processing in non-interrupt context Sowmini Varadhan
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=20141006160418.GA3604@oracle.com \
--to=sowmini.varadhan@oracle.com \
--cc=davem@davemloft.net \
--cc=netdev@vger.kernel.org \
--cc=raghuram.kothakota@oracle.com \
/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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.