summaryrefslogtreecommitdiff
path: root/drivers/bus/fslmc
diff options
context:
space:
mode:
authorNipun Gupta <nipun.gupta@nxp.com>2018-01-23 19:47:51 +0530
committerJerin Jacob <jerin.jacob@caviumnetworks.com>2018-01-31 07:19:05 +0100
commit8a7833e19b7bdd78b45cb322c809ed7e10d7b18d (patch)
treeca66836c0890c2c5b5493b43ded247e985fc2ef9 /drivers/bus/fslmc
parent535c630c2d58f16da8f04ccce309d7b4c564ec8d (diff)
downloaddpdk-8a7833e19b7bdd78b45cb322c809ed7e10d7b18d.zip
dpdk-8a7833e19b7bdd78b45cb322c809ed7e10d7b18d.tar.gz
dpdk-8a7833e19b7bdd78b45cb322c809ed7e10d7b18d.tar.xz
bus/fslmc: add function to prefetch next DQRR entry
Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com> Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Diffstat (limited to 'drivers/bus/fslmc')
-rw-r--r--drivers/bus/fslmc/qbman/include/fsl_qbman_portal.h6
-rw-r--r--drivers/bus/fslmc/qbman/qbman_portal.c11
-rw-r--r--drivers/bus/fslmc/rte_bus_fslmc_version.map1
3 files changed, 18 insertions, 0 deletions
diff --git a/drivers/bus/fslmc/qbman/include/fsl_qbman_portal.h b/drivers/bus/fslmc/qbman/include/fsl_qbman_portal.h
index 95d785f..3e63db3 100644
--- a/drivers/bus/fslmc/qbman/include/fsl_qbman_portal.h
+++ b/drivers/bus/fslmc/qbman/include/fsl_qbman_portal.h
@@ -381,6 +381,12 @@ int qbman_swp_pull(struct qbman_swp *s, struct qbman_pull_desc *d);
const struct qbman_result *qbman_swp_dqrr_next(struct qbman_swp *p);
/**
+ * qbman_swp_prefetch_dqrr_next() - prefetch the next DQRR entry.
+ * @s: the software portal object.
+ */
+void qbman_swp_prefetch_dqrr_next(struct qbman_swp *s);
+
+/**
* qbman_swp_dqrr_consume() - Consume DQRR entries previously returned from
* qbman_swp_dqrr_next().
* @s: the software portal object.
diff --git a/drivers/bus/fslmc/qbman/qbman_portal.c b/drivers/bus/fslmc/qbman/qbman_portal.c
index 2d324f7..e221733 100644
--- a/drivers/bus/fslmc/qbman/qbman_portal.c
+++ b/drivers/bus/fslmc/qbman/qbman_portal.c
@@ -779,6 +779,17 @@ int qbman_swp_pull(struct qbman_swp *s, struct qbman_pull_desc *d)
#define QBMAN_RESULT_BPSCN 0x29
#define QBMAN_RESULT_CSCN_WQ 0x2a
+#include <rte_prefetch.h>
+
+void qbman_swp_prefetch_dqrr_next(struct qbman_swp *s)
+{
+ const struct qbman_result *p;
+
+ p = qbman_cena_read_wo_shadow(&s->sys,
+ QBMAN_CENA_SWP_DQRR(s->dqrr.next_idx));
+ rte_prefetch0(p);
+}
+
/* NULL return if there are no unconsumed DQRR entries. Returns a DQRR entry
* only once, so repeated calls can return a sequence of DQRR entries, without
* requiring they be consumed immediately or in any particular order.
diff --git a/drivers/bus/fslmc/rte_bus_fslmc_version.map b/drivers/bus/fslmc/rte_bus_fslmc_version.map
index 09ec05f..3f1ba13 100644
--- a/drivers/bus/fslmc/rte_bus_fslmc_version.map
+++ b/drivers/bus/fslmc/rte_bus_fslmc_version.map
@@ -99,6 +99,7 @@ DPDK_18.02 {
qbman_fq_query_state;
qbman_fq_state_frame_count;
qbman_swp_dqrr_idx_consume;
+ qbman_swp_prefetch_dqrr_next;
rte_fslmc_get_device_count;
} DPDK_17.11;