xref: /dpdk/drivers/net/ntnic/ntutil/nt_util.h (revision 7917b0d38e92e8b9ec5a870415b791420e10f11a)
1 /*
2  * SPDX-License-Identifier: BSD-3-Clause
3  * Copyright(c) 2023 Napatech A/S
4  */
5 
6 #ifndef NTOSS_SYSTEM_NT_UTIL_H
7 #define NTOSS_SYSTEM_NT_UTIL_H
8 
9 #include <stdint.h>
10 #include "nt4ga_link.h"
11 
12 #ifndef ARRAY_SIZE
13 #define ARRAY_SIZE(arr) RTE_DIM(arr)
14 #endif
15 
16 #define PCIIDENT_TO_DOMAIN(pci_ident) ((uint16_t)(((unsigned int)(pci_ident) >> 16) & 0xFFFFU))
17 #define PCIIDENT_TO_BUSNR(pci_ident) ((uint8_t)(((unsigned int)(pci_ident) >> 8) & 0xFFU))
18 #define PCIIDENT_TO_DEVNR(pci_ident) ((uint8_t)(((unsigned int)(pci_ident) >> 3) & 0x1FU))
19 #define PCIIDENT_TO_FUNCNR(pci_ident) ((uint8_t)(((unsigned int)(pci_ident) >> 0) & 0x7U))
20 #define PCIIDENT_PRINT_STR "%04x:%02x:%02x.%x"
21 #define BDF_TO_PCIIDENT(dom, bus, dev, fnc) (((dom) << 16) | ((bus) << 8) | ((dev) << 3) | (fnc))
22 
23 uint64_t nt_os_get_time_monotonic_counter(void);
24 void nt_os_wait_usec(int val);
25 void nt_os_wait_usec_poll(int val);
26 
27 static inline int min(int a, int b)
28 {
29 	return (a < b) ? a : b;
30 }
31 
32 uint64_t nt_util_align_size(uint64_t size);
33 
34 struct nt_dma_s {
35 	uint64_t iova;
36 	uint64_t addr;
37 	uint64_t size;
38 };
39 
40 struct port_link_speed {
41 	int port_id;
42 	int link_speed;
43 };
44 
45 struct nt_dma_s *nt_dma_alloc(uint64_t size, uint64_t align, int numa);
46 void nt_dma_free(struct nt_dma_s *vfio_addr);
47 
48 struct nt_util_vfio_impl {
49 	int (*vfio_dma_map)(int vf_num, void *virt_addr, uint64_t *iova_addr, uint64_t size);
50 	int (*vfio_dma_unmap)(int vf_num, void *virt_addr, uint64_t iova_addr, uint64_t size);
51 };
52 
53 void nt_util_vfio_init(struct nt_util_vfio_impl *impl);
54 
55 int nt_link_speed_to_eth_speed_num(enum nt_link_speed_e nt_link_speed);
56 uint32_t nt_link_speed_capa_to_eth_speed_capa(int nt_link_speed_capa);
57 nt_link_speed_t convert_link_speed(int link_speed_mbps);
58 int nt_link_duplex_to_eth_duplex(enum nt_link_duplex_e nt_link_duplex);
59 
60 #endif	/* NTOSS_SYSTEM_NT_UTIL_H */
61