X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fice%2Fice_ethdev.h;h=222fc081fee83184f8905b1443e9b42a17c606e1;hb=84dc7a95a2d3cc6279c20d4fcde55f6ad05ef28f;hp=f569da833973b74c266f8deae19ff015a74e6bbd;hpb=603beeb970b5d87fa740fb66c25de6e5dbd0aaf1;p=dpdk.git diff --git a/drivers/net/ice/ice_ethdev.h b/drivers/net/ice/ice_ethdev.h index f569da8339..222fc081fe 100644 --- a/drivers/net/ice/ice_ethdev.h +++ b/drivers/net/ice/ice_ethdev.h @@ -124,6 +124,13 @@ #define ICE_ETH_OVERHEAD \ (RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN + ICE_VLAN_TAG_SIZE * 2) +/* DDP package type */ +enum ice_pkg_type { + ICE_PKG_TYPE_UNKNOWN, + ICE_PKG_TYPE_OS_DEFAULT, + ICE_PKG_TYPE_COMMS, +}; + struct ice_adapter; /** @@ -234,15 +241,22 @@ struct ice_vsi { bool offset_loaded; }; -extern const struct rte_flow_ops ice_flow_ops; +struct rte_flow; +TAILQ_HEAD(ice_flow_list, rte_flow); -/* Struct to store flow created. */ -struct rte_flow { - TAILQ_ENTRY(rte_flow) node; - void *rule; -}; +struct ice_flow_parser_node; +TAILQ_HEAD(ice_parser_list, ice_flow_parser_node); -TAILQ_HEAD(ice_flow_list, rte_flow); +/** + * A structure used to define fields of a FDIR related info. + */ +struct ice_fdir_info { + struct ice_vsi *fdir_vsi; /* pointer to fdir VSI structure */ + struct ice_tx_queue *txq; + struct ice_rx_queue *rxq; + void *prg_pkt; /* memory for fdir program packet */ + uint64_t dma_addr; /* physic address of packet memory*/ +}; struct ice_pf { struct ice_adapter *adapter; /* The adapter this PF associate to */ @@ -263,6 +277,10 @@ struct ice_pf { uint16_t lan_nb_qp_max; uint16_t lan_nb_qps; /* The number of queue pairs of LAN */ uint16_t base_queue; /* The base queue pairs index in the device */ + uint8_t *proto_xtr; /* Protocol extraction type for all queues */ + uint16_t fdir_nb_qps; /* The number of queue pairs of Flow Director */ + uint16_t fdir_qp_offset; + struct ice_fdir_info fdir; /* flow director info */ struct ice_hw_port_stats stats_offset; struct ice_hw_port_stats stats; /* internal packet statistics, it should be excluded from the total */ @@ -271,13 +289,21 @@ struct ice_pf { bool offset_loaded; bool adapter_stopped; struct ice_flow_list flow_list; + struct ice_parser_list rss_parser_list; + struct ice_parser_list perm_parser_list; + struct ice_parser_list dist_parser_list; }; +#define ICE_MAX_QUEUE_NUM 2048 + /** * Cache devargs parse result. */ struct ice_devargs { int safe_mode_support; + uint8_t proto_xtr_dflt; + int pipe_mode_support; + uint8_t proto_xtr[ICE_MAX_QUEUE_NUM]; }; /** @@ -289,11 +315,14 @@ struct ice_adapter { struct rte_eth_dev *eth_dev; struct ice_pf pf; bool rx_bulk_alloc_allowed; + bool rx_vec_allowed; + bool tx_vec_allowed; bool tx_simple_allowed; /* ptype mapping table */ uint32_t ptype_tbl[ICE_MAX_PKT_TYPE] __rte_cache_min_aligned; bool is_safe_mode; struct ice_devargs devargs; + enum ice_pkg_type active_pkg_type; /* loaded ddp package type */ }; struct ice_vsi_vlan_pvid_info { @@ -338,6 +367,11 @@ struct ice_vsi_vlan_pvid_info { #define ICE_PF_TO_ETH_DEV(pf) \ (((struct ice_pf *)pf)->adapter->eth_dev) +struct ice_vsi * +ice_setup_vsi(struct ice_pf *pf, enum ice_vsi_type type); +int +ice_release_vsi(struct ice_vsi *vsi); + static inline int ice_align_floor(int n) {