#include <rte_rwlock.h>
#include <rte_cycles.h>
+#include <mlx5_malloc.h>
+
#include "mlx5_rxtx.h"
#include "mlx5_autoconf.h"
MLX5_ASSERT(priv);
MLX5_ASSERT(priv->if_index);
- ifindex = priv->if_index;
+ ifindex = priv->bond_ifindex > 0 ? priv->bond_ifindex : priv->if_index;
if (!ifindex)
rte_errno = ENXIO;
return ifindex;
return -rte_errno;
}
priv->rss_conf.rss_key =
- rte_realloc(priv->rss_conf.rss_key,
- MLX5_RSS_HASH_KEY_LEN, 0);
+ mlx5_realloc(priv->rss_conf.rss_key, MLX5_MEM_RTE,
+ MLX5_RSS_HASH_KEY_LEN, 0, SOCKET_ID_ANY);
if (!priv->rss_conf.rss_key) {
DRV_LOG(ERR, "port %u cannot allocate RSS hash key memory (%u)",
dev->data->port_id, rxqs_n);
if (priv->skip_default_rss_reta)
return ret;
- rss_queue_arr = rte_malloc("", rxqs_n * sizeof(unsigned int), 0);
+ rss_queue_arr = mlx5_malloc(0, rxqs_n * sizeof(unsigned int), 0,
+ SOCKET_ID_ANY);
if (!rss_queue_arr) {
DRV_LOG(ERR, "port %u cannot allocate RSS queue list (%u)",
dev->data->port_id, rxqs_n);
DRV_LOG(ERR, "port %u cannot handle this many Rx queues (%u)",
dev->data->port_id, rss_queue_n);
rte_errno = EINVAL;
- rte_free(rss_queue_arr);
+ mlx5_free(rss_queue_arr);
return -rte_errno;
}
DRV_LOG(INFO, "port %u Rx queues number update: %u -> %u",
rss_queue_n));
ret = mlx5_rss_reta_index_resize(dev, reta_idx_n);
if (ret) {
- rte_free(rss_queue_arr);
+ mlx5_free(rss_queue_arr);
return ret;
}
/*
if (++j == rss_queue_n)
j = 0;
}
- rte_free(rss_queue_arr);
+ mlx5_free(rss_queue_arr);
return ret;
}
* 0 on success, a negative errno value otherwise and rte_errno is set.
*/
int
-mlx5_hairpin_cap_get(struct rte_eth_dev *dev,
- struct rte_eth_hairpin_cap *cap)
+mlx5_hairpin_cap_get(struct rte_eth_dev *dev, struct rte_eth_hairpin_cap *cap)
{
struct mlx5_priv *priv = dev->data->dev_private;
+ struct mlx5_dev_config *config = &priv->config;
- if (priv->sh->devx == 0) {
+ if (!priv->sh->devx || !config->dest_tir || !config->dv_flow_en) {
rte_errno = ENOTSUP;
return -rte_errno;
}