1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright 2019 Mellanox Technologies, Ltd
5 #ifndef RTE_PMD_MLX5_NL_H_
6 #define RTE_PMD_MLX5_NL_H_
8 #include <linux/netlink.h>
10 #include <rte_ether.h>
12 #include "mlx5_common.h"
15 /* VLAN netdev for VLAN workaround. */
16 struct mlx5_nl_vlan_dev {
18 uint32_t ifindex; /**< Own interface index. */
22 * Array of VLAN devices created on the base of VF
23 * used for workaround in virtual environments.
25 struct mlx5_nl_vlan_vmwa_context {
28 struct mlx5_nl_vlan_dev vlan_dev[4096];
32 int mlx5_nl_init(int protocol);
33 int mlx5_nl_mac_addr_add(int nlsk_fd, unsigned int iface_idx, uint64_t *mac_own,
34 struct rte_ether_addr *mac, uint32_t index);
35 int mlx5_nl_mac_addr_remove(int nlsk_fd, unsigned int iface_idx,
36 uint64_t *mac_own, struct rte_ether_addr *mac,
38 void mlx5_nl_mac_addr_sync(int nlsk_fd, unsigned int iface_idx,
39 struct rte_ether_addr *mac_addrs, int n);
40 void mlx5_nl_mac_addr_flush(int nlsk_fd, unsigned int iface_idx,
41 struct rte_ether_addr *mac_addrs, int n,
43 int mlx5_nl_promisc(int nlsk_fd, unsigned int iface_idx, int enable);
44 int mlx5_nl_allmulti(int nlsk_fd, unsigned int iface_idx, int enable);
45 unsigned int mlx5_nl_portnum(int nl, const char *name);
46 unsigned int mlx5_nl_ifindex(int nl, const char *name, uint32_t pindex);
47 int mlx5_nl_vf_mac_addr_modify(int nlsk_fd, unsigned int iface_idx,
48 struct rte_ether_addr *mac, int vf_index);
49 int mlx5_nl_switch_info(int nl, unsigned int ifindex,
50 struct mlx5_switch_info *info);
52 void mlx5_nl_vlan_vmwa_delete(struct mlx5_nl_vlan_vmwa_context *vmwa,
54 uint32_t mlx5_nl_vlan_vmwa_create(struct mlx5_nl_vlan_vmwa_context *vmwa,
55 uint32_t ifindex, uint16_t tag);
56 int mlx5_nl_devlink_family_id_get(int nlsk_fd);
57 int mlx5_nl_enable_roce_get(int nlsk_fd, int family_id, const char *pci_addr,
59 int mlx5_nl_driver_reload(int nlsk_fd, int family_id, const char *pci_addr);
60 int mlx5_nl_enable_roce_set(int nlsk_fd, int family_id, const char *pci_addr,
63 #endif /* RTE_PMD_MLX5_NL_H_ */