On 04/12/15(Fri) 12:38, David Gwynne wrote: > > > On 4 Dec 2015, at 06:44, Alexandr Nedvedicky > > <alexandr.nedvedi...@oracle.com> 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.