bus/fslmc: add function to prefetch next DQRR entry
authorNipun Gupta <nipun.gupta@nxp.com>
Tue, 23 Jan 2018 14:17:51 +0000 (19:47 +0530)
committerJerin Jacob <jerin.jacob@caviumnetworks.com>
Wed, 31 Jan 2018 06:19:05 +0000 (07:19 +0100)
Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
drivers/bus/fslmc/qbman/include/fsl_qbman_portal.h
drivers/bus/fslmc/qbman/qbman_portal.c
drivers/bus/fslmc/rte_bus_fslmc_version.map

index 95d785f..3e63db3 100644 (file)
@@ -380,6 +380,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().
index 2d324f7..e221733 100644 (file)
@@ -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.
index 09ec05f..3f1ba13 100644 (file)
@@ -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;