X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fmlx5%2Fmlx5_ethdev.c;h=82e2284d9866387807e7f565a3a598d97bbbd3e9;hb=b3bc560bd6bdf3c9851d25bc0a66cb24aa1fd48c;hp=90baee5aa47ba9edce388c21e62d00f9f14e48be;hpb=377b69fb50729625eb4eb91bab907d23111d6bd5;p=dpdk.git diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c index 90baee5aa4..82e2284d98 100644 --- a/drivers/net/mlx5/mlx5_ethdev.c +++ b/drivers/net/mlx5/mlx5_ethdev.c @@ -335,7 +335,7 @@ mlx5_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info) if (priv->representor) { uint16_t port_id; - MLX5_ETH_FOREACH_DEV(port_id, priv->pci_dev) { + MLX5_ETH_FOREACH_DEV(port_id, dev->device) { struct mlx5_priv *opriv = rte_eth_devices[port_id].data->dev_private; @@ -413,9 +413,15 @@ mlx5_representor_info_get(struct rte_eth_dev *dev, int n_type = 4; /* Representor types, VF, HPF@VF, SF and HPF@SF. */ int n_pf = 2; /* Number of PFs. */ int i = 0, pf; + int n_entries; if (info == NULL) goto out; + + n_entries = n_type * n_pf; + if ((uint32_t)n_entries > info->nb_ranges_alloc) + n_entries = info->nb_ranges_alloc; + info->controller = 0; info->pf = priv->pf_bond >= 0 ? priv->pf_bond : 0; for (pf = 0; pf < n_pf; ++pf) { @@ -431,6 +437,8 @@ mlx5_representor_info_get(struct rte_eth_dev *dev, snprintf(info->ranges[i].name, sizeof(info->ranges[i].name), "pf%dvf", pf); i++; + if (i == n_entries) + break; /* HPF range of VF type. */ info->ranges[i].type = RTE_ETH_REPRESENTOR_VF; info->ranges[i].controller = 0; @@ -443,6 +451,8 @@ mlx5_representor_info_get(struct rte_eth_dev *dev, snprintf(info->ranges[i].name, sizeof(info->ranges[i].name), "pf%dvf", pf); i++; + if (i == n_entries) + break; /* SF range. */ info->ranges[i].type = RTE_ETH_REPRESENTOR_SF; info->ranges[i].controller = 0; @@ -455,6 +465,8 @@ mlx5_representor_info_get(struct rte_eth_dev *dev, snprintf(info->ranges[i].name, sizeof(info->ranges[i].name), "pf%dsf", pf); i++; + if (i == n_entries) + break; /* HPF range of SF type. */ info->ranges[i].type = RTE_ETH_REPRESENTOR_SF; info->ranges[i].controller = 0; @@ -467,7 +479,10 @@ mlx5_representor_info_get(struct rte_eth_dev *dev, snprintf(info->ranges[i].name, sizeof(info->ranges[i].name), "pf%dsf", pf); i++; + if (i == n_entries) + break; } + info->nb_ranges = i; out: return n_type * n_pf; }