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/virtio: allocate vrings on device NUMA node
[dpdk.git]
/
drivers
/
net
/
mlx5
/
mlx5_rxmode.c
diff --git
a/drivers/net/mlx5/mlx5_rxmode.c
b/drivers/net/mlx5/mlx5_rxmode.c
index
80824bc
..
e74fdef
100644
(file)
--- a/
drivers/net/mlx5/mlx5_rxmode.c
+++ b/
drivers/net/mlx5/mlx5_rxmode.c
@@
-32,10
+32,18
@@
void
mlx5_promiscuous_enable(struct rte_eth_dev *dev)
{
void
mlx5_promiscuous_enable(struct rte_eth_dev *dev)
{
+ struct priv *priv = dev->data->dev_private;
int ret;
dev->data->promiscuous = 1;
int ret;
dev->data->promiscuous = 1;
- if (((struct priv *)dev->data->dev_private)->config.vf)
+ if (priv->isolated) {
+ DRV_LOG(WARNING,
+ "port %u cannot enable promiscuous mode"
+ " in flow isolation mode",
+ dev->data->port_id);
+ return;
+ }
+ if (priv->config.vf)
mlx5_nl_promisc(dev, 1);
ret = mlx5_traffic_restart(dev);
if (ret)
mlx5_nl_promisc(dev, 1);
ret = mlx5_traffic_restart(dev);
if (ret)
@@
-52,10
+60,11
@@
mlx5_promiscuous_enable(struct rte_eth_dev *dev)
void
mlx5_promiscuous_disable(struct rte_eth_dev *dev)
{
void
mlx5_promiscuous_disable(struct rte_eth_dev *dev)
{
+ struct priv *priv = dev->data->dev_private;
int ret;
dev->data->promiscuous = 0;
int ret;
dev->data->promiscuous = 0;
- if (
((struct priv *)dev->data->dev_private)
->config.vf)
+ if (
priv
->config.vf)
mlx5_nl_promisc(dev, 0);
ret = mlx5_traffic_restart(dev);
if (ret)
mlx5_nl_promisc(dev, 0);
ret = mlx5_traffic_restart(dev);
if (ret)
@@
-72,10
+81,18
@@
mlx5_promiscuous_disable(struct rte_eth_dev *dev)
void
mlx5_allmulticast_enable(struct rte_eth_dev *dev)
{
void
mlx5_allmulticast_enable(struct rte_eth_dev *dev)
{
+ struct priv *priv = dev->data->dev_private;
int ret;
dev->data->all_multicast = 1;
int ret;
dev->data->all_multicast = 1;
- if (((struct priv *)dev->data->dev_private)->config.vf)
+ if (priv->isolated) {
+ DRV_LOG(WARNING,
+ "port %u cannot enable allmulticast mode"
+ " in flow isolation mode",
+ dev->data->port_id);
+ return;
+ }
+ if (priv->config.vf)
mlx5_nl_allmulti(dev, 1);
ret = mlx5_traffic_restart(dev);
if (ret)
mlx5_nl_allmulti(dev, 1);
ret = mlx5_traffic_restart(dev);
if (ret)
@@
-92,10
+109,11
@@
mlx5_allmulticast_enable(struct rte_eth_dev *dev)
void
mlx5_allmulticast_disable(struct rte_eth_dev *dev)
{
void
mlx5_allmulticast_disable(struct rte_eth_dev *dev)
{
+ struct priv *priv = dev->data->dev_private;
int ret;
dev->data->all_multicast = 0;
int ret;
dev->data->all_multicast = 0;
- if (
((struct priv *)dev->data->dev_private)
->config.vf)
+ if (
priv
->config.vf)
mlx5_nl_allmulti(dev, 0);
ret = mlx5_traffic_restart(dev);
if (ret)
mlx5_nl_allmulti(dev, 0);
ret = mlx5_traffic_restart(dev);
if (ret)