net/bnxt: add PCI function stats to extended stats
[dpdk.git] / drivers / net / bnxt / rte_pmd_bnxt.c
index 5e3d1bf..2df4865 100644 (file)
@@ -54,7 +54,7 @@ int rte_pmd_bnxt_set_tx_loopback(uint16_t port, uint8_t on)
        if (!is_bnxt_supported(eth_dev))
                return -ENOTSUP;
 
-       bp = (struct bnxt *)eth_dev->data->dev_private;
+       bp = eth_dev->data->dev_private;
 
        if (!BNXT_PF(bp)) {
                PMD_DRV_LOG(ERR,
@@ -96,7 +96,7 @@ int rte_pmd_bnxt_set_all_queues_drop_en(uint16_t port, uint8_t on)
        if (!is_bnxt_supported(eth_dev))
                return -ENOTSUP;
 
-       bp = (struct bnxt *)eth_dev->data->dev_private;
+       bp = eth_dev->data->dev_private;
 
        if (!BNXT_PF(bp)) {
                PMD_DRV_LOG(ERR,
@@ -145,8 +145,16 @@ int rte_pmd_bnxt_set_vf_mac_addr(uint16_t port, uint16_t vf,
        if (!is_bnxt_supported(dev))
                return -ENOTSUP;
 
-       rte_eth_dev_info_get(port, &dev_info);
-       bp = (struct bnxt *)dev->data->dev_private;
+       rc = rte_eth_dev_info_get(port, &dev_info);
+       if (rc != 0) {
+               PMD_DRV_LOG(ERR,
+                       "Error during getting device (port %u) info: %s\n",
+                       port, strerror(-rc));
+
+               return rc;
+       }
+
+       bp = dev->data->dev_private;
 
        if (vf >= dev_info.max_vfs || mac_addr == NULL)
                return -EINVAL;
@@ -179,8 +187,15 @@ int rte_pmd_bnxt_set_vf_rate_limit(uint16_t port, uint16_t vf,
        if (!is_bnxt_supported(eth_dev))
                return -ENOTSUP;
 
-       rte_eth_dev_info_get(port, &dev_info);
-       bp = (struct bnxt *)eth_dev->data->dev_private;
+       rc = rte_eth_dev_info_get(port, &dev_info);
+       if (rc != 0) {
+               PMD_DRV_LOG(ERR,
+                       "Error during getting device (port %u) info: %s\n",
+                       port, strerror(-rc));
+
+               return rc;
+       }
+       bp = eth_dev->data->dev_private;
 
        if (!bp->pf.active_vfs)
                return -EINVAL;
@@ -230,8 +245,15 @@ int rte_pmd_bnxt_set_vf_mac_anti_spoof(uint16_t port, uint16_t vf, uint8_t on)
        if (!is_bnxt_supported(dev))
                return -ENOTSUP;
 
-       rte_eth_dev_info_get(port, &dev_info);
-       bp = (struct bnxt *)dev->data->dev_private;
+       rc = rte_eth_dev_info_get(port, &dev_info);
+       if (rc != 0) {
+               PMD_DRV_LOG(ERR,
+                       "Error during getting device (port %u) info: %s\n",
+                       port, strerror(-rc));
+
+               return rc;
+       }
+       bp = dev->data->dev_private;
 
        if (!BNXT_PF(bp)) {
                PMD_DRV_LOG(ERR,
@@ -282,8 +304,15 @@ int rte_pmd_bnxt_set_vf_vlan_anti_spoof(uint16_t port, uint16_t vf, uint8_t on)
        if (!is_bnxt_supported(dev))
                return -ENOTSUP;
 
-       rte_eth_dev_info_get(port, &dev_info);
-       bp = (struct bnxt *)dev->data->dev_private;
+       rc = rte_eth_dev_info_get(port, &dev_info);
+       if (rc != 0) {
+               PMD_DRV_LOG(ERR,
+                       "Error during getting device (port %u) info: %s\n",
+                       port, strerror(-rc));
+
+               return rc;
+       }
+       bp = dev->data->dev_private;
 
        if (!BNXT_PF(bp)) {
                PMD_DRV_LOG(ERR,
@@ -332,8 +361,15 @@ rte_pmd_bnxt_set_vf_vlan_stripq(uint16_t port, uint16_t vf, uint8_t on)
        if (!is_bnxt_supported(dev))
                return -ENOTSUP;
 
-       rte_eth_dev_info_get(port, &dev_info);
-       bp = (struct bnxt *)dev->data->dev_private;
+       rc = rte_eth_dev_info_get(port, &dev_info);
+       if (rc != 0) {
+               PMD_DRV_LOG(ERR,
+                       "Error during getting device (port %u) info: %s\n",
+                       port, strerror(-rc));
+
+               return rc;
+       }
+       bp = dev->data->dev_private;
 
        if (vf >= dev_info.max_vfs)
                return -EINVAL;
@@ -369,8 +405,15 @@ int rte_pmd_bnxt_set_vf_rxmode(uint16_t port, uint16_t vf,
        if (!is_bnxt_supported(dev))
                return -ENOTSUP;
 
-       rte_eth_dev_info_get(port, &dev_info);
-       bp = (struct bnxt *)dev->data->dev_private;
+       rc = rte_eth_dev_info_get(port, &dev_info);
+       if (rc != 0) {
+               PMD_DRV_LOG(ERR,
+                       "Error during getting device (port %u) info: %s\n",
+                       port, strerror(-rc));
+
+               return rc;
+       }
+       bp = dev->data->dev_private;
 
        if (!bp->pf.vf_info)
                return -EINVAL;
@@ -462,7 +505,7 @@ int rte_pmd_bnxt_set_vf_vlan_filter(uint16_t port, uint16_t vlan,
        if (!is_bnxt_supported(dev))
                return -ENOTSUP;
 
-       bp = (struct bnxt *)dev->data->dev_private;
+       bp = dev->data->dev_private;
        if (!bp->pf.vf_info)
                return -EINVAL;
 
@@ -545,13 +588,21 @@ int rte_pmd_bnxt_get_vf_stats(uint16_t port,
        struct rte_eth_dev *dev;
        struct rte_eth_dev_info dev_info;
        struct bnxt *bp;
+       int rc;
 
        dev = &rte_eth_devices[port];
        if (!is_bnxt_supported(dev))
                return -ENOTSUP;
 
-       rte_eth_dev_info_get(port, &dev_info);
-       bp = (struct bnxt *)dev->data->dev_private;
+       rc = rte_eth_dev_info_get(port, &dev_info);
+       if (rc != 0) {
+               PMD_DRV_LOG(ERR,
+                       "Error during getting device (port %u) info: %s\n",
+                       port, strerror(-rc));
+
+               return rc;
+       }
+       bp = dev->data->dev_private;
 
        if (vf_id >= dev_info.max_vfs)
                return -EINVAL;
@@ -563,7 +614,8 @@ int rte_pmd_bnxt_get_vf_stats(uint16_t port,
                return -ENOTSUP;
        }
 
-       return bnxt_hwrm_func_qstats(bp, bp->pf.first_vf_id + vf_id, stats);
+       return bnxt_hwrm_func_qstats(bp, bp->pf.first_vf_id + vf_id, stats,
+                                    NULL);
 }
 
 int rte_pmd_bnxt_reset_vf_stats(uint16_t port,
@@ -572,13 +624,21 @@ int rte_pmd_bnxt_reset_vf_stats(uint16_t port,
        struct rte_eth_dev *dev;
        struct rte_eth_dev_info dev_info;
        struct bnxt *bp;
+       int rc;
 
        dev = &rte_eth_devices[port];
        if (!is_bnxt_supported(dev))
                return -ENOTSUP;
 
-       rte_eth_dev_info_get(port, &dev_info);
-       bp = (struct bnxt *)dev->data->dev_private;
+       rc = rte_eth_dev_info_get(port, &dev_info);
+       if (rc != 0) {
+               PMD_DRV_LOG(ERR,
+                       "Error during getting device (port %u) info: %s\n",
+                       port, strerror(-rc));
+
+               return rc;
+       }
+       bp = dev->data->dev_private;
 
        if (vf_id >= dev_info.max_vfs)
                return -EINVAL;
@@ -598,13 +658,21 @@ int rte_pmd_bnxt_get_vf_rx_status(uint16_t port, uint16_t vf_id)
        struct rte_eth_dev *dev;
        struct rte_eth_dev_info dev_info;
        struct bnxt *bp;
+       int rc;
 
        dev = &rte_eth_devices[port];
        if (!is_bnxt_supported(dev))
                return -ENOTSUP;
 
-       rte_eth_dev_info_get(port, &dev_info);
-       bp = (struct bnxt *)dev->data->dev_private;
+       rc = rte_eth_dev_info_get(port, &dev_info);
+       if (rc != 0) {
+               PMD_DRV_LOG(ERR,
+                       "Error during getting device (port %u) info: %s\n",
+                       port, strerror(-rc));
+
+               return rc;
+       }
+       bp = dev->data->dev_private;
 
        if (vf_id >= dev_info.max_vfs)
                return -EINVAL;
@@ -625,13 +693,21 @@ int rte_pmd_bnxt_get_vf_tx_drop_count(uint16_t port, uint16_t vf_id,
        struct rte_eth_dev *dev;
        struct rte_eth_dev_info dev_info;
        struct bnxt *bp;
+       int rc;
 
        dev = &rte_eth_devices[port];
        if (!is_bnxt_supported(dev))
                return -ENOTSUP;
 
-       rte_eth_dev_info_get(port, &dev_info);
-       bp = (struct bnxt *)dev->data->dev_private;
+       rc = rte_eth_dev_info_get(port, &dev_info);
+       if (rc != 0) {
+               PMD_DRV_LOG(ERR,
+                       "Error during getting device (port %u) info: %s\n",
+                       port, strerror(-rc));
+
+               return rc;
+       }
+       bp = dev->data->dev_private;
 
        if (vf_id >= dev_info.max_vfs)
                return -EINVAL;
@@ -662,8 +738,15 @@ int rte_pmd_bnxt_mac_addr_add(uint16_t port, struct rte_ether_addr *addr,
        if (!is_bnxt_supported(dev))
                return -ENOTSUP;
 
-       rte_eth_dev_info_get(port, &dev_info);
-       bp = (struct bnxt *)dev->data->dev_private;
+       rc = rte_eth_dev_info_get(port, &dev_info);
+       if (rc != 0) {
+               PMD_DRV_LOG(ERR,
+                       "Error during getting device (port %u) info: %s\n",
+                       port, strerror(-rc));
+
+               return rc;
+       }
+       bp = dev->data->dev_private;
 
        if (vf_id >= dev_info.max_vfs)
                return -EINVAL;
@@ -698,7 +781,7 @@ int rte_pmd_bnxt_mac_addr_add(uint16_t port, struct rte_ether_addr *addr,
                    filter->enables ==
                    (HWRM_CFA_L2_FILTER_ALLOC_INPUT_ENABLES_L2_ADDR |
                     HWRM_CFA_L2_FILTER_ALLOC_INPUT_ENABLES_L2_ADDR_MASK) &&
-                   memcmp(addr, filter->l2_addr, ETHER_ADDR_LEN) == 0) {
+                   memcmp(addr, filter->l2_addr, RTE_ETHER_ADDR_LEN) == 0) {
                        bnxt_hwrm_clear_l2_filter(bp, filter);
                        break;
                }
@@ -711,12 +794,12 @@ int rte_pmd_bnxt_mac_addr_add(uint16_t port, struct rte_ether_addr *addr,
        filter->flags = HWRM_CFA_L2_FILTER_ALLOC_INPUT_FLAGS_PATH_RX;
        filter->enables = HWRM_CFA_L2_FILTER_ALLOC_INPUT_ENABLES_L2_ADDR |
                        HWRM_CFA_L2_FILTER_ALLOC_INPUT_ENABLES_L2_ADDR_MASK;
-       memcpy(filter->l2_addr, addr, ETHER_ADDR_LEN);
-       memset(filter->l2_addr_mask, 0xff, ETHER_ADDR_LEN);
+       memcpy(filter->l2_addr, addr, RTE_ETHER_ADDR_LEN);
+       memset(filter->l2_addr_mask, 0xff, RTE_ETHER_ADDR_LEN);
 
        /* Do not add a filter for the default MAC */
        if (bnxt_hwrm_func_qcfg_vf_default_mac(bp, vf_id, &dflt_mac) ||
-           memcmp(filter->l2_addr, dflt_mac.addr_bytes, ETHER_ADDR_LEN))
+           memcmp(filter->l2_addr, dflt_mac.addr_bytes, RTE_ETHER_ADDR_LEN))
                rc = bnxt_hwrm_set_l2_filter(bp, vnic.fw_vnic_id, filter);
 
 exit:
@@ -738,8 +821,15 @@ rte_pmd_bnxt_set_vf_vlan_insert(uint16_t port, uint16_t vf,
        if (!is_bnxt_supported(dev))
                return -ENOTSUP;
 
-       rte_eth_dev_info_get(port, &dev_info);
-       bp = (struct bnxt *)dev->data->dev_private;
+       rc = rte_eth_dev_info_get(port, &dev_info);
+       if (rc != 0) {
+               PMD_DRV_LOG(ERR,
+                       "Error during getting device (port %u) info: %s\n",
+                       port, strerror(-rc));
+
+               return rc;
+       }
+       bp = dev->data->dev_private;
 
        if (vf >= dev_info.max_vfs)
                return -EINVAL;
@@ -775,8 +865,15 @@ int rte_pmd_bnxt_set_vf_persist_stats(uint16_t port, uint16_t vf, uint8_t on)
                return -EINVAL;
 
        dev = &rte_eth_devices[port];
-       rte_eth_dev_info_get(port, &dev_info);
-       bp = (struct bnxt *)dev->data->dev_private;
+       rc = rte_eth_dev_info_get(port, &dev_info);
+       if (rc != 0) {
+               PMD_DRV_LOG(ERR,
+                       "Error during getting device (port %u) info: %s\n",
+                       port, strerror(-rc));
+
+               return rc;
+       }
+       bp = dev->data->dev_private;
 
        if (!BNXT_PF(bp)) {
                PMD_DRV_LOG(ERR,