Not sure how much I can test here, but my tunnels are up.
As well as my bgp sessions (this is "ART box” now) on top.

I use aes-128-gcm.
This is vmware.

//mxb

> On 26 mars 2016, at 16:25, Mike Belopuhov <m...@belopuhov.com> wrote:
> 
> On Fri, Mar 25, 2016 at 22:43 +0100, Mark Kettenis wrote:
>>> From: Mike Belopuhov <m...@belopuhov.com>
>>> Date: Thu, 24 Mar 2016 21:33:25 +0100
>>> 
>>> On 24 March 2016 at 20:53, Mark Kettenis <mark.kette...@xs4all.nl> wrote:
>>>> Diff below makes aesni crypto "mpsafe".  It adds a CRYPTOCAP_F_MPSAFE
>>>> flag that makes the crypto framework dispatch to an mpsafe taskq if it
>>>> is set.  In order to make the aesni_process() function that does the
>>>> actual crypto work mpsafe, it moves the code over to a per-session
>>>> working buffer.  This obviously increases the cost of setting up a
>>>> session a bit.  Directly invoked crypto operations remain locked.  My
>>>> main laptop seem to do ipsec fine with this, but I'm not sure if there
>>>> is an actual performance gain.  So it would probably be good if
>>>> somebody could benchmark this.
>>>> 
>>>> Comments?
>>> 
>>> It should be fairly simple to use SRP for the session list so that you
>>> don't have to take the mutex in the aesni_process.  Other than that I
>>> think this should go in once tests are made and people a happy with
>>> the results.
>> 
>> Actually, I'm not sure that's possible.  I think aesni_newsession()
>> and aesni_freesession() can be called from interrupt context or at
>> least are not supposed to sleep. 
> 
> I thought that it's not possible, but it looks like at least tdb_free
> can be called anywhere and it will trigger freesession, which is a tad
> unfortunate IMO, yet understandable.
> 
>> They would call
>> SRPL_INSERT_HEAD_LOCKED() and SRPL_REMOVE_LOCKED(), which can only be
>> called from process context.
>> 
> 
> Not process context though, but under a lock, which wouldn't save
> us the mtx_enter anyway.
> 
>>> Another question I have is why are you using an IPL_HIGH mutex?
>> 
>> The crypto code may be called from any subsystem, so that is the only
>> safe choice.
> 
> Well, it's not called from all subsystems, just those that use
> IPL_BIO and IPL_NET for interrupts and IPL_HIGH just includes
> AUDIO and CLOCK which don't call any crypto(9) code.  So what
> are you trying to protect it from or is it just a placeholder
> value?  I'm fine if it is, just curious.

Reply via email to