Subject: Re: [PATCH 1/2] rps: core implementation

From: Jarek Poplawski <[email-masked]>
Date: Thu, 19 Nov 2009 08:08:31 +0000

On 16-11-2009 17:43, Tom Herbert wrote:
> On Mon, Nov 16, 2009 at 3:19 AM, David Miller <[email-masked]> wrote:
>> From: Tom Herbert <[email-masked]>
>> Date: Tue, 10 Nov 2009 22:53:17 -0800
>>
>>> +             /* Schedule NAPI for backlog device */
>>> +             if (napi_schedule_prep(&queue->backlog)) {
>>> +                     if (cpu != smp_processor_id()) {
>>> +                             cpu_set(cpu,
>>> +                                 get_cpu_var(rps_remote_softirq_cpus));
>>> +                             __raise_softirq_irqoff(NET_RPS_SOFTIRQ);
>>> +                     } else
>>> +                             __napi_schedule(&queue->backlog);
>>> +             }
>>> +             goto enqueue;
>> {,__}send_remote_softirq() doesn't work? :-)
>>
> NET_RPS_SOFTIRQ is intended to provide coalescing of IPIs.

It seems calling net_rps_action() at the end of net_rx_action() should
do (mostly) the same, at least for napi drivers. And I'm not sure it's
worth to add a new softirq because of non-napis.

Jarek P.