net/hns3: support flow director
[dpdk.git] / drivers / net / dpaa2 / dpaa2_ethdev.c
index d668f3e..d43aa35 100644 (file)
@@ -102,7 +102,7 @@ static int dpaa2_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu);
 
 int dpaa2_logtype_pmd;
 
-__rte_experimental void
+void
 rte_pmd_dpaa2_set_timestamp(enum pmd_dpaa2_ts enable)
 {
        dpaa2_enable_ts = enable;
@@ -243,7 +243,7 @@ dpaa2_fw_version_get(struct rte_eth_dev *dev,
                return 0;
 }
 
-static void
+static int
 dpaa2_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 {
        struct dpaa2_dev_priv *priv = dev->data->dev_private;
@@ -269,6 +269,8 @@ dpaa2_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
        dev_info->max_vfs = 0;
        dev_info->max_vmdq_pools = ETH_16_POOLS;
        dev_info->flow_type_rss_offloads = DPAA2_RSS_OFFLOAD_ALL;
+
+       return 0;
 }
 
 static int
@@ -985,7 +987,7 @@ dpaa2_dev_close(struct rte_eth_dev *dev)
        rte_eth_linkstatus_set(dev, &link);
 }
 
-static void
+static int
 dpaa2_dev_promiscuous_enable(
                struct rte_eth_dev *dev)
 {
@@ -997,7 +999,7 @@ dpaa2_dev_promiscuous_enable(
 
        if (dpni == NULL) {
                DPAA2_PMD_ERR("dpni is NULL");
-               return;
+               return -ENODEV;
        }
 
        ret = dpni_set_unicast_promisc(dpni, CMD_PRI_LOW, priv->token, true);
@@ -1007,9 +1009,11 @@ dpaa2_dev_promiscuous_enable(
        ret = dpni_set_multicast_promisc(dpni, CMD_PRI_LOW, priv->token, true);
        if (ret < 0)
                DPAA2_PMD_ERR("Unable to enable M promisc mode %d", ret);
+
+       return ret;
 }
 
-static void
+static int
 dpaa2_dev_promiscuous_disable(
                struct rte_eth_dev *dev)
 {
@@ -1021,7 +1025,7 @@ dpaa2_dev_promiscuous_disable(
 
        if (dpni == NULL) {
                DPAA2_PMD_ERR("dpni is NULL");
-               return;
+               return -ENODEV;
        }
 
        ret = dpni_set_unicast_promisc(dpni, CMD_PRI_LOW, priv->token, false);
@@ -1035,9 +1039,11 @@ dpaa2_dev_promiscuous_disable(
                        DPAA2_PMD_ERR("Unable to disable M promisc mode %d",
                                      ret);
        }
+
+       return ret;
 }
 
-static void
+static int
 dpaa2_dev_allmulticast_enable(
                struct rte_eth_dev *dev)
 {
@@ -1049,15 +1055,17 @@ dpaa2_dev_allmulticast_enable(
 
        if (dpni == NULL) {
                DPAA2_PMD_ERR("dpni is NULL");
-               return;
+               return -ENODEV;
        }
 
        ret = dpni_set_multicast_promisc(dpni, CMD_PRI_LOW, priv->token, true);
        if (ret < 0)
                DPAA2_PMD_ERR("Unable to enable multicast mode %d", ret);
+
+       return ret;
 }
 
-static void
+static int
 dpaa2_dev_allmulticast_disable(struct rte_eth_dev *dev)
 {
        int ret;
@@ -1068,16 +1076,18 @@ dpaa2_dev_allmulticast_disable(struct rte_eth_dev *dev)
 
        if (dpni == NULL) {
                DPAA2_PMD_ERR("dpni is NULL");
-               return;
+               return -ENODEV;
        }
 
        /* must remain on for all promiscuous */
        if (dev->data->promiscuous == 1)
-               return;
+               return 0;
 
        ret = dpni_set_multicast_promisc(dpni, CMD_PRI_LOW, priv->token, false);
        if (ret < 0)
                DPAA2_PMD_ERR("Unable to disable multicast mode %d", ret);
+
+       return ret;
 }
 
 static int
@@ -1423,12 +1433,12 @@ dpaa2_xstats_get_names_by_id(
        return limit;
 }
 
-static void
+static int
 dpaa2_dev_stats_reset(struct rte_eth_dev *dev)
 {
        struct dpaa2_dev_priv *priv = dev->data->dev_private;
        struct fsl_mc_io *dpni = (struct fsl_mc_io *)priv->hw;
-       int32_t  retcode;
+       int retcode;
        int i;
        struct dpaa2_queue *dpaa2_q;
 
@@ -1436,7 +1446,7 @@ dpaa2_dev_stats_reset(struct rte_eth_dev *dev)
 
        if (dpni == NULL) {
                DPAA2_PMD_ERR("dpni is NULL");
-               return;
+               return -EINVAL;
        }
 
        retcode =  dpni_reset_statistics(dpni, CMD_PRI_LOW, priv->token);
@@ -1456,11 +1466,11 @@ dpaa2_dev_stats_reset(struct rte_eth_dev *dev)
                        dpaa2_q->tx_pkts = 0;
        }
 
-       return;
+       return 0;
 
 error:
        DPAA2_PMD_ERR("Operation not completed:Error Code = %d", retcode);
-       return;
+       return retcode;
 };
 
 /* return 0 means link status changed, -1 means not changed */
@@ -2319,6 +2329,16 @@ rte_dpaa2_probe(struct rte_dpaa2_driver *dpaa2_drv,
        struct rte_eth_dev *eth_dev;
        int diag;
 
+       if ((DPAA2_MBUF_HW_ANNOTATION + DPAA2_FD_PTA_SIZE) >
+               RTE_PKTMBUF_HEADROOM) {
+               DPAA2_PMD_ERR(
+               "RTE_PKTMBUF_HEADROOM(%d) shall be > DPAA2 Annotation req(%d)",
+               RTE_PKTMBUF_HEADROOM,
+               DPAA2_MBUF_HW_ANNOTATION + DPAA2_FD_PTA_SIZE);
+
+               return -1;
+       }
+
        if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
                eth_dev = rte_eth_dev_allocate(dpaa2_dev->device.name);
                if (!eth_dev)