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
app/eventdev: add ethernet device setup helpers
[dpdk.git]
/
drivers
/
net
/
mlx5
/
mlx5_rss.c
diff --git
a/drivers/net/mlx5/mlx5_rss.c
b/drivers/net/mlx5/mlx5_rss.c
index
ad6d9ab
..
f47bda6
100644
(file)
--- a/
drivers/net/mlx5/mlx5_rss.c
+++ b/
drivers/net/mlx5/mlx5_rss.c
@@
-51,6
+51,7
@@
#include <rte_ethdev.h>
#include "mlx5.h"
#include <rte_ethdev.h>
#include "mlx5.h"
+#include "mlx5_defs.h"
#include "mlx5_rxtx.h"
/**
#include "mlx5_rxtx.h"
/**
@@
-72,14
+73,18
@@
mlx5_rss_hash_update(struct rte_eth_dev *dev,
int ret = 0;
priv_lock(priv);
int ret = 0;
priv_lock(priv);
- if (rss_conf->rss_key_len) {
+ if (rss_conf->rss_hf & MLX5_RSS_HF_MASK) {
+ ret = -EINVAL;
+ goto out;
+ }
+ if (rss_conf->rss_key && rss_conf->rss_key_len) {
priv->rss_conf.rss_key = rte_realloc(priv->rss_conf.rss_key,
rss_conf->rss_key_len, 0);
if (!priv->rss_conf.rss_key) {
ret = -ENOMEM;
goto out;
}
priv->rss_conf.rss_key = rte_realloc(priv->rss_conf.rss_key,
rss_conf->rss_key_len, 0);
if (!priv->rss_conf.rss_key) {
ret = -ENOMEM;
goto out;
}
- memcpy(
&
priv->rss_conf.rss_key, rss_conf->rss_key,
+ memcpy(priv->rss_conf.rss_key, rss_conf->rss_key,
rss_conf->rss_key_len);
priv->rss_conf.rss_key_len = rss_conf->rss_key_len;
}
rss_conf->rss_key_len);
priv->rss_conf.rss_key_len = rss_conf->rss_key_len;
}
@@
-105,22
+110,19
@@
mlx5_rss_hash_conf_get(struct rte_eth_dev *dev,
struct rte_eth_rss_conf *rss_conf)
{
struct priv *priv = dev->data->dev_private;
struct rte_eth_rss_conf *rss_conf)
{
struct priv *priv = dev->data->dev_private;
- int ret = 0;
+ if (!rss_conf)
+ return -EINVAL;
priv_lock(priv);
priv_lock(priv);
- if (!rss_conf->rss_key) {
- ret = -ENOMEM;
- goto out;
+ if (rss_conf->rss_key &&
+ (rss_conf->rss_key_len >= priv->rss_conf.rss_key_len)) {
+ memcpy(rss_conf->rss_key, priv->rss_conf.rss_key,
+ priv->rss_conf.rss_key_len);
}
}
- if (rss_conf->rss_key_len < priv->rss_conf.rss_key_len) {
- ret = -EINVAL;
- goto out;
- }
- memcpy(rss_conf->rss_key, priv->rss_conf.rss_key,
- priv->rss_conf.rss_key_len);
-out:
+ rss_conf->rss_key_len = priv->rss_conf.rss_key_len;
+ rss_conf->rss_hf = priv->rss_conf.rss_hf;
priv_unlock(priv);
priv_unlock(priv);
- return
ret
;
+ return
0
;
}
/**
}
/**
@@
-277,7
+279,6
@@
mlx5_dev_rss_reta_update(struct rte_eth_dev *dev,
int ret;
struct priv *priv = dev->data->dev_private;
int ret;
struct priv *priv = dev->data->dev_private;
- assert(!mlx5_is_secondary());
priv_lock(priv);
ret = priv_dev_rss_reta_update(priv, reta_conf, reta_size);
priv_unlock(priv);
priv_lock(priv);
ret = priv_dev_rss_reta_update(priv, reta_conf, reta_size);
priv_unlock(priv);