Set the VFA (Virtual Function Active) bit in struct qdma_sdd -> rbpcmd_simple in order to use the route-by-port functionality with PCIe virtual functions.
At the moment, a user wanting to enable route-by-port will call rte_dpaa2_qdma_vchan_rbp_enable with a rte_dpaa2_qdma_rbp struct. The struct includes the PCIe Physical and Virtual functions among other things, which are then copied to qdma_sdd -> rbpcmd_simple, but the vfa bit is never touched (the bit does exists in rbpcmd_simple), so route-by-port with virtual functions won't work.. In order to fix this, a vfa bit is added to struct rte_dpaa2_qdma_rbp, then is copied to qdma_sdd -> rbpcmd_simple. Fixes: 8caf8427f85a ("dma/dpaa2: introduce driver skeleton") Signed-off-by: Alvaro Karsz <alvaro.ka...@solid-run.com> --- drivers/dma/dpaa2/dpaa2_qdma.c | 2 ++ drivers/dma/dpaa2/rte_pmd_dpaa2_qdma.h | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/dma/dpaa2/dpaa2_qdma.c b/drivers/dma/dpaa2/dpaa2_qdma.c index d5a5f08ecc..8968bb853b 100644 --- a/drivers/dma/dpaa2/dpaa2_qdma.c +++ b/drivers/dma/dpaa2/dpaa2_qdma.c @@ -117,6 +117,7 @@ dpaa2_qdma_populate_fle(struct qbman_fle *fle, /* source */ sdd->read_cmd.portid = rbp->sportid; sdd->rbpcmd_simple.pfid = rbp->spfid; + sdd->rbpcmd_simple.vfa = rbp->vfa; sdd->rbpcmd_simple.vfid = rbp->svfid; if (rbp->srbp) { @@ -129,6 +130,7 @@ dpaa2_qdma_populate_fle(struct qbman_fle *fle, /* destination */ sdd->write_cmd.portid = rbp->dportid; sdd->rbpcmd_simple.pfid = rbp->dpfid; + sdd->rbpcmd_simple.vfa = rbp->vfa; sdd->rbpcmd_simple.vfid = rbp->dvfid; if (rbp->drbp) { diff --git a/drivers/dma/dpaa2/rte_pmd_dpaa2_qdma.h b/drivers/dma/dpaa2/rte_pmd_dpaa2_qdma.h index dc8acb4aec..5a8da46d12 100644 --- a/drivers/dma/dpaa2/rte_pmd_dpaa2_qdma.h +++ b/drivers/dma/dpaa2/rte_pmd_dpaa2_qdma.h @@ -44,7 +44,9 @@ struct rte_dpaa2_qdma_rbp { uint32_t svfid:6; /* using route by port for source */ uint32_t srbp:1; - uint32_t rsv:4; + /* Virtual Function Active */ + uint32_t vfa:1; + uint32_t rsv:3; }; /** Determines a QDMA job */ -- 2.34.1