> >>>
> >>> + /** Classifier destination CoS for IPSEC result events
> >>> + *
> >>> + * Result events for successfully decapsulated packets are
> sent to
> >>> + * classification through this CoS. Other result events are
> sent to
> >>> + * 'dest_queue'. This field is considered only when
> 'pipeline' is
> >>> + * ODP_IPSEC_PIPELINE_CLS. The CoS must not be shared between
> any pktio
> >>> + * interface default CoS.
> >>> + */
> >>> + odp_cos_t dest_cos;
> >>
> >> Having multiple pieces of information needed for the same config
> >> suggests opportunities for simplification. Perhaps a scheme along the
> >> following lines:
> >>
> > enum odp_ipsec_next_t {
> > ODP_IPSEC_NEXT_QUEUE = 0,
> > ODP_IPSEC_NEXT_COS,
> > ODP_IPSEC_NEXT_PKTIO,
> > ODP_IPSEC_NEXT_TM,
> > } odp_ipsec_next_t;
> >
> >> typedef struct odp_ipsec_next_config_t {
> > odp_ipsec_next_t next;
> > union {
> > odp_queue_t queue;
> > odp_cos_t cos;
> > odp_pktio_t pktio;
> > odp_tm_queue_t tm_q;
> > };
> >>
> >> } odp_ipsec_next_config_t;
>
> Maybe this form will make it clearer:
> union {
> struct {
> odp_ipsec_dest_in_type_t dest_type;
>
> union {
> odp_queue_t queue;
> odp_cos_t cos;
> } dest_val;
> } inbound;
>
> struct {
> odp_ipsec_dest_out_type_t dest_type;
>
> union {
> odp_queue_t queue;
> odp_pktio_t pktio;
> odp_tm_queue_t tm_q;
> } dest_val;
> } outbound;
> } dest;
>
> Yet, I still believe this model is limiting flexibility... maybe we
> need a framework with a generic way to connect different HW modules.
>
See my answer for Bill about handle usage.
Actually, limiting flexibility is good for the spec. We can dictate in each
step which other accelerators are possible next steps of a pipeline and how
exceptions are handled.
E.g. today IPSEC spec specifies
* pktin -> IPSEC -> CLS -> queue
maybe tomorrow CLS would allow pipeline with DPI, and we'd extend to (with
proper event format)
* pktin -> IPSEC -> CLS -> queue
|
+---> DPI -> queue
Even with a generic accelerator pipeline, only a few combinations would be
actually useful or even possible to implement (with all the exception handling).
-Petri