1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright 2015 6WIND S.A.
3 * Copyright 2015 Mellanox Technologies, Ltd
11 /* ISO C doesn't support unnamed structs/unions, disabling -pedantic. */
13 #pragma GCC diagnostic ignored "-Wpedantic"
15 #include <infiniband/verbs.h>
17 #pragma GCC diagnostic error "-Wpedantic"
20 #include <rte_ethdev_driver.h>
23 #include "mlx5_rxtx.h"
24 #include "mlx5_utils.h"
27 * DPDK callback to enable promiscuous mode.
30 * Pointer to Ethernet device structure.
33 mlx5_promiscuous_enable(struct rte_eth_dev *dev)
37 dev->data->promiscuous = 1;
38 if (((struct priv *)dev->data->dev_private)->config.vf)
39 mlx5_nl_promisc(dev, 1);
40 ret = mlx5_traffic_restart(dev);
42 DRV_LOG(ERR, "port %u cannot enable promiscuous mode: %s",
43 dev->data->port_id, strerror(rte_errno));
47 * DPDK callback to disable promiscuous mode.
50 * Pointer to Ethernet device structure.
53 mlx5_promiscuous_disable(struct rte_eth_dev *dev)
57 dev->data->promiscuous = 0;
58 if (((struct priv *)dev->data->dev_private)->config.vf)
59 mlx5_nl_promisc(dev, 0);
60 ret = mlx5_traffic_restart(dev);
62 DRV_LOG(ERR, "port %u cannot disable promiscuous mode: %s",
63 dev->data->port_id, strerror(rte_errno));
67 * DPDK callback to enable allmulti mode.
70 * Pointer to Ethernet device structure.
73 mlx5_allmulticast_enable(struct rte_eth_dev *dev)
77 dev->data->all_multicast = 1;
78 if (((struct priv *)dev->data->dev_private)->config.vf)
79 mlx5_nl_allmulti(dev, 1);
80 ret = mlx5_traffic_restart(dev);
82 DRV_LOG(ERR, "port %u cannot enable allmulicast mode: %s",
83 dev->data->port_id, strerror(rte_errno));
87 * DPDK callback to disable allmulti mode.
90 * Pointer to Ethernet device structure.
93 mlx5_allmulticast_disable(struct rte_eth_dev *dev)
97 dev->data->all_multicast = 0;
98 if (((struct priv *)dev->data->dev_private)->config.vf)
99 mlx5_nl_allmulti(dev, 0);
100 ret = mlx5_traffic_restart(dev);
102 DRV_LOG(ERR, "port %u cannot disable allmulicast mode: %s",
103 dev->data->port_id, strerror(rte_errno));