common/iavf: support advanced RSS input set change
[dpdk.git] / drivers / bus / dpaa / dpaa_bus.c
index b0e68c4..f27820d 100644 (file)
@@ -32,6 +32,7 @@
 #include <rte_bus.h>
 #include <rte_mbuf_pool_ops.h>
 
+#include <dpaa_of.h>
 #include <rte_dpaa_bus.h>
 #include <rte_dpaa_logs.h>
 #include <dpaax_iova_table.h>
@@ -39,7 +40,6 @@
 #include <fsl_usd.h>
 #include <fsl_qman.h>
 #include <fsl_bman.h>
-#include <of.h>
 #include <netcfg.h>
 
 int dpaa_logtype_bus;
@@ -321,7 +321,6 @@ rte_dpaa_portal_fq_init(void *arg, struct qman_fq *fq)
 {
        /* Affine above created portal with channel*/
        u32 sdqcr;
-       struct qman_portal *qp;
        int ret;
 
        if (unlikely(!RTE_PER_LCORE(dpaa_io))) {
@@ -333,21 +332,21 @@ rte_dpaa_portal_fq_init(void *arg, struct qman_fq *fq)
        }
 
        /* Initialise qman specific portals */
-       qp = fsl_qman_portal_create();
-       if (!qp) {
-               DPAA_BUS_LOG(ERR, "Unable to alloc fq portal");
+       ret = fsl_qman_fq_portal_init(fq->qp);
+       if (ret) {
+               DPAA_BUS_LOG(ERR, "Unable to init fq portal");
                return -1;
        }
-       fq->qp = qp;
+
        sdqcr = QM_SDQCR_CHANNELS_POOL_CONV(fq->ch_id);
-       qman_static_dequeue_add(sdqcr, qp);
+       qman_static_dequeue_add(sdqcr, fq->qp);
 
        return 0;
 }
 
 int rte_dpaa_portal_fq_close(struct qman_fq *fq)
 {
-       return fsl_qman_portal_destroy(fq->qp);
+       return fsl_qman_fq_portal_destroy(fq->qp);
 }
 
 void
@@ -562,8 +561,24 @@ rte_dpaa_bus_probe(void)
                return 0;
 
        /* Device list creation is only done once */
-       if (!process_once)
+       if (!process_once) {
                rte_dpaa_bus_dev_build();
+               if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
+                       /* One time load of Qman/Bman drivers */
+                       ret = qman_global_init();
+                       if (ret) {
+                               DPAA_PMD_ERR("QMAN initialization failed: %d",
+                                            ret);
+                               return ret;
+                       }
+                       ret = bman_global_init();
+                       if (ret) {
+                               DPAA_PMD_ERR("BMAN initialization failed: %d",
+                                            ret);
+                               return ret;
+                       }
+               }
+       }
        process_once = 1;
 
        /* If no device present on DPAA bus nothing needs to be done */
@@ -601,7 +616,8 @@ rte_dpaa_bus_probe(void)
                            RTE_DEV_WHITELISTED)) {
                                ret = drv->probe(drv, dev);
                                if (ret) {
-                                       DPAA_BUS_ERR("Unable to probe.\n");
+                                       DPAA_BUS_ERR("unable to probe:%s",
+                                                    dev->name);
                                } else {
                                        dev->driver = drv;
                                        dev->device.driver = &drv->driver;