git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
net/softnic: fix useless address check
[dpdk.git]
/
drivers
/
net
/
mlx5
/
mlx5_ethdev.c
diff --git
a/drivers/net/mlx5/mlx5_ethdev.c
b/drivers/net/mlx5/mlx5_ethdev.c
index
708e3a3
..
82e2284
100644
(file)
--- a/
drivers/net/mlx5/mlx5_ethdev.c
+++ b/
drivers/net/mlx5/mlx5_ethdev.c
@@
-24,6
+24,7
@@
#include "mlx5_rxtx.h"
#include "mlx5_rx.h"
#include "mlx5_rxtx.h"
#include "mlx5_rx.h"
+#include "mlx5_tx.h"
#include "mlx5_autoconf.h"
/**
#include "mlx5_autoconf.h"
/**
@@
-334,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;
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;
struct mlx5_priv *opriv =
rte_eth_devices[port_id].data->dev_private;
@@
-412,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_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;
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) {
info->controller = 0;
info->pf = priv->pf_bond >= 0 ? priv->pf_bond : 0;
for (pf = 0; pf < n_pf; ++pf) {
@@
-430,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++;
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;
/* HPF range of VF type. */
info->ranges[i].type = RTE_ETH_REPRESENTOR_VF;
info->ranges[i].controller = 0;
@@
-442,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++;
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;
/* SF range. */
info->ranges[i].type = RTE_ETH_REPRESENTOR_SF;
info->ranges[i].controller = 0;
@@
-454,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++;
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;
/* HPF range of SF type. */
info->ranges[i].type = RTE_ETH_REPRESENTOR_SF;
info->ranges[i].controller = 0;
@@
-466,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++;
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;
}
out:
return n_type * n_pf;
}