Subject: Re: [PATCH 11/16] esp: Use a synchronous crypto algorithm on offloading.

From: Steffen Klassert <[email-masked]>
Date: Fri, 21 Apr 2017 10:33:17 +0200

On Fri, Apr 21, 2017 at 01:29:34PM +0800, Herbert Xu wrote:
> On Thu, Apr 20, 2017 at 12:50:29PM +0200, Steffen Klassert wrote:
> > On Thu, Apr 20, 2017 at 05:52:35PM +0800, Herbert Xu wrote:
> > > On Thu, Apr 20, 2017 at 11:17:52AM +0200, Steffen Klassert wrote:
> > > >
> > > > I tried to use async algorithms but it lead to serveral problems.
> > > > The GSO layer can't handle async returns, we'd need callbacks
> > > > for all the GSO handlers. Also we need something where we can
> > > > requeue packets if the driver is busy etc.
> > > 
> > > Why would we need to requeue? As it is if you get an EBUSY on
> > > an IPsec packet it's simply dropped.
> > 
> > Yes we could do this, but the GSO problem remain.
> > 
> > We discussed this last year at netdevconf but could not come
> > up with an acceptable solutuion.
> 
> Why is it a problem exactly?

My solution for this added some extra code to the generic networking
path, this was seen as too intrusive for this very special usecase.

I still think we can get this to work, but it needs some extra care.

> 
> > For now this is just a fallback to make hardware offloading
> > possible at all, so this is slowpath anyway. Allowing async
> > algorithms can (and should) be done in a second step once we
> > found a not too intrusive solution.
> 
> OK, as long as nobody gets silently switched from async to sync
> then it's fine with me.

The user has to explicitely ask for a offloaded state, so
we don't hide anything here. In this case the user wants
to use the crypto engine of the NIC, we just need a software
fallback to catch some corner cases where the NIC can't
do the crypto operation.