X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fsfc%2Fsfc_flow.h;h=19db8fce50e60e84e009e3f1c69a74d7586ce32a;hb=5b2b9236aacc5d4fcc4e950177ce5f4d32780c46;hp=14a6b5d1486f1959a7b43445d70e90e25abf9b20;hpb=7571c08d9fb039e82f9bbbbe3b1cf8e4f2e72a99;p=dpdk.git diff --git a/drivers/net/sfc/sfc_flow.h b/drivers/net/sfc/sfc_flow.h index 14a6b5d148..19db8fce50 100644 --- a/drivers/net/sfc/sfc_flow.h +++ b/drivers/net/sfc/sfc_flow.h @@ -35,8 +35,15 @@ struct sfc_flow_rss { unsigned int rss_tbl[EFX_RSS_TBL_SIZE]; }; -/* Filter specification storage */ -struct sfc_flow_spec { +/* Flow engines supported by the implementation */ +enum sfc_flow_spec_type { + SFC_FLOW_SPEC_FILTER = 0, + + SFC_FLOW_SPEC_NTYPES +}; + +/* VNIC-specific flow specification */ +struct sfc_flow_spec_filter { /* partial specification from flow rule */ efx_filter_spec_t template; /* fully elaborated hardware filters specifications */ @@ -49,9 +56,21 @@ struct sfc_flow_spec { struct sfc_flow_rss rss_conf; }; +/* Flow specification */ +struct sfc_flow_spec { + /* Flow specification type (engine-based) */ + enum sfc_flow_spec_type type; + + RTE_STD_C11 + union { + /* Filter-based (VNIC level flows) specification */ + struct sfc_flow_spec_filter filter; + }; +}; + /* PMD-specific definition of the opaque type from rte_flow.h */ struct rte_flow { - struct sfc_flow_spec spec; /* flow spec for hardware filter(s) */ + struct sfc_flow_spec spec; /* flow specification */ TAILQ_ENTRY(rte_flow) entries; /* flow list entries */ }; @@ -66,6 +85,12 @@ void sfc_flow_fini(struct sfc_adapter *sa); int sfc_flow_start(struct sfc_adapter *sa); void sfc_flow_stop(struct sfc_adapter *sa); +typedef int (sfc_flow_parse_cb_t)(struct rte_eth_dev *dev, + const struct rte_flow_item items[], + const struct rte_flow_action actions[], + struct rte_flow *flow, + struct rte_flow_error *error); + #ifdef __cplusplus } #endif