X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fraw%2Fdpaa2_qdma%2Frte_pmd_dpaa2_qdma.h;h=4e1268cc55be37000b32c797d0304cbb3700f1f8;hb=2dd4f08540cc32cc1a62579d66d055327638ac92;hp=c9697b4d7dbb2faae19b5f4e7ec4fd509e15b780;hpb=fb1a20331d7006cfac981d98d474d80d49f10475;p=dpdk.git diff --git a/drivers/raw/dpaa2_qdma/rte_pmd_dpaa2_qdma.h b/drivers/raw/dpaa2_qdma/rte_pmd_dpaa2_qdma.h index c9697b4d7d..4e1268cc55 100644 --- a/drivers/raw/dpaa2_qdma/rte_pmd_dpaa2_qdma.h +++ b/drivers/raw/dpaa2_qdma/rte_pmd_dpaa2_qdma.h @@ -12,6 +12,9 @@ * */ +/** Maximum qdma burst size */ +#define RTE_QDMA_BURST_NB_MAX 256 + /** Determines the mode of operation */ enum { /** @@ -30,8 +33,14 @@ enum { RTE_QDMA_MODE_VIRTUAL }; +/** Determines the format of FD */ +enum { + RTE_QDMA_LONG_FORMAT, + RTE_QDMA_ULTRASHORT_FORMAT, +}; + /** - * If user has configued a Virtual Queue mode, but for some particular VQ + * If user has configured a Virtual Queue mode, but for some particular VQ * user needs an exclusive H/W queue associated (for better performance * on that particular VQ), then user can pass this flag while creating the * Virtual Queue. A H/W queue will be allocated corresponding to @@ -59,6 +68,8 @@ struct rte_qdma_config { uint16_t max_vqs; /** mode of operation - physical(h/w) or virtual */ uint8_t mode; + /** FD format */ + uint8_t format; /** * User provides this as input to the driver as a size of the FLE pool. * FLE's (and corresponding source/destination descriptors) are @@ -70,6 +81,40 @@ struct rte_qdma_config { int fle_pool_count; }; +struct rte_qdma_rbp { + uint32_t use_ultrashort:1; + uint32_t enable:1; + /** + * dportid: + * 0000 PCI-Express 1 + * 0001 PCI-Express 2 + * 0010 PCI-Express 3 + * 0011 PCI-Express 4 + * 0100 PCI-Express 5 + * 0101 PCI-Express 6 + */ + uint32_t dportid:4; + uint32_t dpfid:2; + uint32_t dvfid:6; + /*using route by port for destination */ + uint32_t drbp:1; + /** + * sportid: + * 0000 PCI-Express 1 + * 0001 PCI-Express 2 + * 0010 PCI-Express 3 + * 0011 PCI-Express 4 + * 0100 PCI-Express 5 + * 0101 PCI-Express 6 + */ + uint32_t sportid:4; + uint32_t spfid:2; + uint32_t svfid:6; + /* using route by port for source */ + uint32_t srbp:1; + uint32_t rsv:4; +}; + /** Provides QDMA device statistics */ struct rte_qdma_vq_stats { /** States if this vq has exclusively associated hw queue */ @@ -102,8 +147,11 @@ struct rte_qdma_job { /** * Status of the transaction. * This is filled in the dequeue operation by the driver. + * upper 8bits acc_err for route by port. + * lower 8bits fd error */ - uint8_t status; + uint16_t status; + uint16_t vq_id; }; /** @@ -174,6 +222,11 @@ rte_qdma_start(void); int rte_qdma_vq_create(uint32_t lcore_id, uint32_t flags); +/*create vq for route-by-port*/ +int +rte_qdma_vq_create_rbp(uint32_t lcore_id, uint32_t flags, + struct rte_qdma_rbp *rbp); + /** * Enqueue multiple jobs to a Virtual Queue. * If the enqueue is successful, the H/W will perform DMA operations @@ -225,7 +278,8 @@ rte_qdma_vq_enqueue(uint16_t vq_id, * Number of QDMA jobs requested for dequeue by the user. * * @returns - * Number of jobs actually dequeued. + * - >=0: Number of jobs successfully received + * - <0: Error code. */ int rte_qdma_vq_dequeue_multi(uint16_t vq_id, @@ -241,7 +295,7 @@ rte_qdma_vq_dequeue_multi(uint16_t vq_id, * @returns * - A completed job or NULL if no job is there. */ -struct rte_qdma_job * __rte_experimental +struct rte_qdma_job * rte_qdma_vq_dequeue(uint16_t vq_id); /** @@ -262,7 +316,7 @@ rte_qdma_vq_stats(uint16_t vq_id, * VQ's at runtime. * * @param vq_id - * Virtual Queue ID which needs to be deinialized. + * Virtual Queue ID which needs to be uninitialized. * * @returns * - 0: Success. @@ -271,6 +325,21 @@ rte_qdma_vq_stats(uint16_t vq_id, int rte_qdma_vq_destroy(uint16_t vq_id); +/** + * Destroy the RBP specific Virtual Queue specified by vq_id. + * This API can be called from any thread/core. User can create/destroy + * VQ's at runtime. + * + * @param vq_id + * RBP based Virtual Queue ID which needs to be uninitialized. + * + * @returns + * - 0: Success. + * - <0: Error code. + */ + +int +rte_qdma_vq_destroy_rbp(uint16_t vq_id); /** * Stop QDMA device. */