1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright 2019 Mellanox Technologies, Ltd 3 */ 4 5 #ifndef RTE_PMD_MLX5_NL_H_ 6 #define RTE_PMD_MLX5_NL_H_ 7 8 #include <linux/netlink.h> 9 10 #include <rte_ether.h> 11 12 #include "mlx5_common.h" 13 14 15 /* VLAN netdev for VLAN workaround. */ 16 struct mlx5_nl_vlan_dev { 17 uint32_t refcnt; 18 uint32_t ifindex; /**< Own interface index. */ 19 }; 20 21 /* 22 * Array of VLAN devices created on the base of VF 23 * used for workaround in virtual environments. 24 */ 25 struct mlx5_nl_vlan_vmwa_context { 26 int nl_socket; 27 uint32_t vf_ifindex; 28 struct mlx5_nl_vlan_dev vlan_dev[4096]; 29 }; 30 31 __rte_internal 32 int mlx5_nl_init(int protocol); 33 __rte_internal 34 int mlx5_nl_mac_addr_add(int nlsk_fd, unsigned int iface_idx, uint64_t *mac_own, 35 struct rte_ether_addr *mac, uint32_t index); 36 __rte_internal 37 int mlx5_nl_mac_addr_remove(int nlsk_fd, unsigned int iface_idx, 38 uint64_t *mac_own, struct rte_ether_addr *mac, 39 uint32_t index); 40 __rte_internal 41 void mlx5_nl_mac_addr_sync(int nlsk_fd, unsigned int iface_idx, 42 struct rte_ether_addr *mac_addrs, int n); 43 __rte_internal 44 void mlx5_nl_mac_addr_flush(int nlsk_fd, unsigned int iface_idx, 45 struct rte_ether_addr *mac_addrs, int n, 46 uint64_t *mac_own); 47 __rte_internal 48 int mlx5_nl_promisc(int nlsk_fd, unsigned int iface_idx, int enable); 49 __rte_internal 50 int mlx5_nl_allmulti(int nlsk_fd, unsigned int iface_idx, int enable); 51 __rte_internal 52 unsigned int mlx5_nl_portnum(int nl, const char *name); 53 __rte_internal 54 unsigned int mlx5_nl_ifindex(int nl, const char *name, uint32_t pindex); 55 __rte_internal 56 int mlx5_nl_vf_mac_addr_modify(int nlsk_fd, unsigned int iface_idx, 57 struct rte_ether_addr *mac, int vf_index); 58 __rte_internal 59 int mlx5_nl_switch_info(int nl, unsigned int ifindex, 60 struct mlx5_switch_info *info); 61 62 __rte_internal 63 void mlx5_nl_vlan_vmwa_delete(struct mlx5_nl_vlan_vmwa_context *vmwa, 64 uint32_t ifindex); 65 __rte_internal 66 uint32_t mlx5_nl_vlan_vmwa_create(struct mlx5_nl_vlan_vmwa_context *vmwa, 67 uint32_t ifindex, uint16_t tag); 68 __rte_internal 69 int mlx5_nl_devlink_family_id_get(int nlsk_fd); 70 __rte_internal 71 int mlx5_nl_enable_roce_get(int nlsk_fd, int family_id, const char *pci_addr, 72 int *enable); 73 __rte_internal 74 int mlx5_nl_driver_reload(int nlsk_fd, int family_id, const char *pci_addr); 75 __rte_internal 76 int mlx5_nl_enable_roce_set(int nlsk_fd, int family_id, const char *pci_addr, 77 int enable); 78 79 #endif /* RTE_PMD_MLX5_NL_H_ */ 80