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/mlx5: fix RSS hash update
[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
..
f3de46d
100644
(file)
--- a/
drivers/net/mlx5/mlx5_rss.c
+++ b/
drivers/net/mlx5/mlx5_rss.c
@@
-72,14
+72,14
@@
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_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
+105,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_len < priv->rss_conf.rss_key_len) {
- ret = -EINVAL;
- 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);
}
}
- 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
;
}
/**
}
/**