> On 4 Dec 2015, at 7:36 PM, Martin Pieuchot <[email protected]> wrote:
> 
> On 04/12/15(Fri) 12:38, David Gwynne wrote:
>> 
>>> On 4 Dec 2015, at 06:44, Alexandr Nedvedicky 
>>> <[email protected]> wrote:
>>> 
>>> Hello,
>>> 
>>> below is final patch I'm going to commit. Summary of changes:
>>>     - softnettq declaration moved to net/if_var.h (by bluhm@)
>>>     - lock order swapped: KERNEL_LOCK() goes first folllowed
>>>       by spl (by bluhm@)
>>>     - long line got fixed (by bluhm@)
>>>     - ip_insertoptions() prototype deleted in ip_output.c (by bluhm@)
>>>     - avoiding mix of tab/space at netinet6/ip6_var.h (by bluhm@)
>>>     - static at ip*_send_dispatch() got removed (by mpi@)
>>>     - ip*_send_dispatch() functions look more like if_input_process()
>>>       now (by mpi@)
>> 
>> it might be better to add the task to systq instead of &softnettq. if you're 
>> always going to take the kernel lock to send packets then any pending 
>> ip_input_process work will end implicitly waiting for the kernel lock too. 
>> ideally only mpsafe work should be pushed into the softnettq.
> 
> I insisted to keep most of the packets processing in the same context.
> 
> I'd rather see efforts to remove those locks and go towards multiples
> softnettq.
> 
> It this stage I'm more afraid of two ip_output() running in parallel
> than the possible latency due to reporting an error.

the context you want is KERNEL_LOCKed at splsoftnet(). you're insisting on 
forcing the softnettq to wait to assume that context and blocking work that 
doesnt need it.

Reply via email to