net/i40e: fix Rx packet statistics
[dpdk.git] / drivers / net / dpaa / dpaa_ethdev.c
index c59873d..59f4a93 100644 (file)
@@ -486,9 +486,6 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev)
        if (dpaa_intf->cgr_rx) {
                for (loop = 0; loop < dpaa_intf->nb_rx_queues; loop++)
                        qman_delete_cgr(&dpaa_intf->cgr_rx[loop]);
-
-               qman_release_cgrid_range(dpaa_intf->cgr_rx[loop].cgrid,
-                                        dpaa_intf->nb_rx_queues);
        }
 
        rte_free(dpaa_intf->cgr_rx);
@@ -497,9 +494,6 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev)
        if (dpaa_intf->cgr_tx) {
                for (loop = 0; loop < MAX_DPAA_CORES; loop++)
                        qman_delete_cgr(&dpaa_intf->cgr_tx[loop]);
-
-               qman_release_cgrid_range(dpaa_intf->cgr_tx[loop].cgrid,
-                                        MAX_DPAA_CORES);
                rte_free(dpaa_intf->cgr_tx);
                dpaa_intf->cgr_tx = NULL;
        }
@@ -538,9 +532,11 @@ dpaa_fw_version_get(struct rte_eth_dev *dev __rte_unused,
 
        ret = snprintf(fw_version, fw_size, "SVR:%x-fman-v%x",
                       svr_ver, fman_ip_rev);
-       ret += 1; /* add the size of '\0' */
+       if (ret < 0)
+               return -EINVAL;
 
-       if (fw_size < (uint32_t)ret)
+       ret += 1; /* add the size of '\0' */
+       if (fw_size < (size_t)ret)
                return ret;
        else
                return 0;
@@ -819,8 +815,8 @@ dpaa_xstats_get_by_id(struct rte_eth_dev *dev, const uint64_t *ids,
 static int
 dpaa_xstats_get_names_by_id(
        struct rte_eth_dev *dev,
-       struct rte_eth_xstat_name *xstats_names,
        const uint64_t *ids,
+       struct rte_eth_xstat_name *xstats_names,
        unsigned int limit)
 {
        unsigned int i, stat_cnt = RTE_DIM(dpaa_xstats_strings);
@@ -975,6 +971,12 @@ int dpaa_eth_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
                }
        }
 
+       if (dpaa_intf->bp_info && dpaa_intf->bp_info->bp &&
+           dpaa_intf->bp_info->mp != mp) {
+               DPAA_PMD_WARN("Multiple pools on same interface not supported");
+               return -EINVAL;
+       }
+
        /* Max packet can fit in single buffer */
        if (dev->data->dev_conf.rxmode.max_rx_pkt_len <= buffsz) {
                ;
@@ -1231,12 +1233,6 @@ dpaa_eth_eventq_detach(const struct rte_eth_dev *dev,
        return 0;
 }
 
-static
-void dpaa_eth_rx_queue_release(void *rxq __rte_unused)
-{
-       PMD_INIT_FUNC_TRACE();
-}
-
 static
 int dpaa_eth_tx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
                            uint16_t nb_desc __rte_unused,
@@ -1270,11 +1266,6 @@ int dpaa_eth_tx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
        return 0;
 }
 
-static void dpaa_eth_tx_queue_release(void *txq __rte_unused)
-{
-       PMD_INIT_FUNC_TRACE();
-}
-
 static uint32_t
 dpaa_dev_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id)
 {
@@ -1521,12 +1512,19 @@ dpaa_rxq_info_get(struct rte_eth_dev *dev, uint16_t queue_id,
 {
        struct dpaa_if *dpaa_intf = dev->data->dev_private;
        struct qman_fq *rxq;
+       int ret;
 
        rxq = dev->data->rx_queues[queue_id];
 
        qinfo->mp = dpaa_intf->bp_info->mp;
        qinfo->scattered_rx = dev->data->scattered_rx;
        qinfo->nb_desc = rxq->nb_desc;
+
+       /* Report the HW Rx buffer length to user */
+       ret = fman_if_get_maxfrm(dev->process_private);
+       if (ret > 0)
+               qinfo->rx_buf_size = ret;
+
        qinfo->conf.rx_free_thresh = 1;
        qinfo->conf.rx_drop_en = 1;
        qinfo->conf.rx_deferred_start = 0;
@@ -1562,8 +1560,6 @@ static struct eth_dev_ops dpaa_devops = {
 
        .rx_queue_setup           = dpaa_eth_rx_queue_setup,
        .tx_queue_setup           = dpaa_eth_tx_queue_setup,
-       .rx_queue_release         = dpaa_eth_rx_queue_release,
-       .tx_queue_release         = dpaa_eth_tx_queue_release,
        .rx_burst_mode_get        = dpaa_dev_rx_burst_mode_get,
        .tx_burst_mode_get        = dpaa_dev_tx_burst_mode_get,
        .rxq_info_get             = dpaa_rxq_info_get,
@@ -2085,14 +2081,8 @@ dpaa_dev_init(struct rte_eth_dev *eth_dev)
        /* copy the primary mac address */
        rte_ether_addr_copy(&fman_intf->mac_addr, &eth_dev->data->mac_addrs[0]);
 
-       RTE_LOG(INFO, PMD, "net: dpaa: %s: %02x:%02x:%02x:%02x:%02x:%02x\n",
-               dpaa_device->name,
-               fman_intf->mac_addr.addr_bytes[0],
-               fman_intf->mac_addr.addr_bytes[1],
-               fman_intf->mac_addr.addr_bytes[2],
-               fman_intf->mac_addr.addr_bytes[3],
-               fman_intf->mac_addr.addr_bytes[4],
-               fman_intf->mac_addr.addr_bytes[5]);
+       RTE_LOG(INFO, PMD, "net: dpaa: %s: " RTE_ETHER_ADDR_PRT_FMT "\n",
+               dpaa_device->name, RTE_ETHER_ADDR_BYTES(&fman_intf->mac_addr));
 
        if (!fman_intf->is_shared_mac) {
                /* Configure error packet handling */
@@ -2302,4 +2292,4 @@ static struct rte_dpaa_driver rte_dpaa_pmd = {
 };
 
 RTE_PMD_REGISTER_DPAA(net_dpaa, rte_dpaa_pmd);
-RTE_LOG_REGISTER(dpaa_logtype_pmd, pmd.net.dpaa, NOTICE);
+RTE_LOG_REGISTER_DEFAULT(dpaa_logtype_pmd, NOTICE);