On 28.04.2017 01:23, Bill Fischofer wrote: > > > On Thu, Apr 27, 2017 at 6:51 AM, Dmitry Eremin-Solenikov > <dmitry.ereminsoleni...@linaro.org > <mailto:dmitry.ereminsoleni...@linaro.org>> wrote: > > If an application has passed invalid SA in async mode, there is no way > to report it back to application except using default queue (which does > not exist at this moment). > > Signed-off-by: Dmitry Eremin-Solenikov > <dmitry.ereminsoleni...@linaro.org > <mailto:dmitry.ereminsoleni...@linaro.org>> > --- > include/odp/api/spec/ipsec.h | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/include/odp/api/spec/ipsec.h b/include/odp/api/spec/ipsec.h > index 4f746f67..7f43e81c 100644 > --- a/include/odp/api/spec/ipsec.h > +++ b/include/odp/api/spec/ipsec.h > @@ -190,6 +190,13 @@ typedef struct odp_ipsec_inbound_config_t { > * Configuration options for IPSEC outbound processing > */ > typedef struct odp_ipsec_outbound_config_t { > + /** Default destination queue for IPSEC events > + * > + * When passed invalid SA in the asynchronous mode, > + * resulting IPSEC events are enqueued into this queue. > + */ > + odp_queue_t default_queue; > > > Is an invalid SA going to be passed for any legitimate reason or is this > always a programming error? If the latter then this seems unnecessary as > this case falls under the "results are undefined" category. If the > former, then why can't the call simply be failed before being accepted > for async processing? The caller is "owed" an odp_ipsec_result_t only if > the async call is successful.
Unfortunately returning an error or 'processing stopped here' does not allow application to determine the cause of that error/processing stop. So, it well might resubmit the packet later. Thus it might be better to accept such packet and return an error through event. -- With best wishes Dmitry