From: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
To: Shradha Shah <sshah@solarflare.com>, David Miller <davem@davemloft.net>
Cc: netdev@vger.kernel.org, linux-net-drivers@solarflare.com
Subject: Re: [PATCH net-next 4/4] sfc: set and clear interrupt affinity hints
Date: Wed, 28 Oct 2015 21:15:57 +0300 [thread overview]
Message-ID: <563110DD.8040606@cogentembedded.com> (raw)
In-Reply-To: <5630E36B.2030501@solarflare.com>
Hello.
On 10/28/2015 06:02 PM, Shradha Shah wrote:
> From: Bert Kenward <bkenward@solarflare.com>
>
> Use cpumask_local_spread to provide interrupt affinity hints
> for each queue. This will spread interrupts across NUMA local
> CPUs first, extending to remote nodes if needed.
>
> Signed-off-by: Shradha Shah <sshah@solarflare.com>
> ---
> drivers/net/ethernet/sfc/efx.c | 35 +++++++++++++++++++++++++++++++++++
> 1 file changed, 35 insertions(+)
>
> diff --git a/drivers/net/ethernet/sfc/efx.c b/drivers/net/ethernet/sfc/efx.c
> index 84f9e90..93c4c0e 100644
> --- a/drivers/net/ethernet/sfc/efx.c
> +++ b/drivers/net/ethernet/sfc/efx.c
> @@ -1489,6 +1489,30 @@ static int efx_probe_interrupts(struct efx_nic *efx)
> return 0;
> }
>
> +#if defined(CONFIG_SMP)
> +static void efx_set_interrupt_affinity(struct efx_nic *efx)
> +{
> + struct efx_channel *channel;
> + unsigned int cpu;
> +
> + efx_for_each_channel(channel, efx) {
> + cpu = cpumask_local_spread(channel->channel,
> + pcibus_to_node(efx->pci_dev->bus));
> +
> + irq_set_affinity_hint(channel->irq, cpumask_of(cpu));
> + channel->irq_mem_node = cpu_to_mem(cpu);
> + }
> +}
> +
> +static void efx_clear_interrupt_affinity(struct efx_nic *efx)
> +{
> + struct efx_channel *channel;
> +
> + efx_for_each_channel(channel, efx)
> + irq_set_affinity_hint(channel->irq, NULL);
> +}
> +#endif /* CONFIG_SMP */
> +
> static int efx_soft_enable_interrupts(struct efx_nic *efx)
> {
> struct efx_channel *channel, *end_channel;
> @@ -2932,6 +2956,9 @@ static void efx_pci_remove_main(struct efx_nic *efx)
> cancel_work_sync(&efx->reset_work);
>
> efx_disable_interrupts(efx);
> +#if defined(CONFIG_SMP)
> + efx_clear_interrupt_affinity(efx);
> +#endif
Please just define empty function for !SMP case instead of the ugly
#ifdef'fery in the functiojn bodies.
[...]
MBR, Sergei
prev parent reply other threads:[~2015-10-28 18:16 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-28 15:00 [PATCH net-next 0/4] sfc: NUMA support Shradha Shah
2015-10-28 15:01 ` [PATCH net-next 1/4] sfc: use __GFP_NOWARN when allocating RX pages from atomic context Shradha Shah
2015-10-28 15:01 ` [PATCH net-next 2/4] sfc: allocate rx pages on the same node as the interrupt Shradha Shah
2015-10-28 15:59 ` Eric Dumazet
2015-11-02 13:17 ` Daniel Pieczko (dpieczko)
2015-10-28 15:01 ` [PATCH net-next 3/4] sfc: Use cpu_to_mem() to support memoryless nodes Shradha Shah
2015-10-28 15:02 ` [PATCH net-next 4/4] sfc: set and clear interrupt affinity hints Shradha Shah
2015-10-28 18:15 ` Sergei Shtylyov [this message]
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=563110DD.8040606@cogentembedded.com \
--to=sergei.shtylyov@cogentembedded.com \
--cc=davem@davemloft.net \
--cc=linux-net-drivers@solarflare.com \
--cc=netdev@vger.kernel.org \
--cc=sshah@solarflare.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.