X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fmlx5%2Fmlx5_ethdev.c;h=82e2284d9866387807e7f565a3a598d97bbbd3e9;hb=675a6c18746694a8e19a0256b16bd6b3e8dcbfd2;hp=564d7132e088c3a18f18b12566bc03217fd1d109;hpb=91766fae2b7c76530ac0a52f5992db25edbeb92f;p=dpdk.git diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c index 564d7132e0..82e2284d98 100644 --- a/drivers/net/mlx5/mlx5_ethdev.c +++ b/drivers/net/mlx5/mlx5_ethdev.c @@ -23,6 +23,8 @@ #include #include "mlx5_rxtx.h" +#include "mlx5_rx.h" +#include "mlx5_tx.h" #include "mlx5_autoconf.h" /** @@ -333,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; @@ -411,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) { @@ -429,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; @@ -441,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; @@ -453,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; @@ -465,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; }