]>
Commit | Line | Data |
---|---|---|
dcbf469a YS |
1 | /* |
2 | * RDMA device: Debug utilities | |
3 | * | |
4 | * Copyright (C) 2018 Oracle | |
5 | * Copyright (C) 2018 Red Hat Inc | |
6 | * | |
7 | * | |
8 | * Authors: | |
9 | * Yuval Shaia <yuval.shaia@oracle.com> | |
10 | * Marcel Apfelbaum <marcel@redhat.com> | |
11 | * | |
12 | * This work is licensed under the terms of the GNU GPL, version 2 or later. | |
13 | * See the COPYING file in the top-level directory. | |
14 | * | |
15 | */ | |
16 | ||
17 | #ifndef RDMA_UTILS_H | |
18 | #define RDMA_UTILS_H | |
19 | ||
4d71b38a | 20 | #include "qemu/error-report.h" |
0efc9511 MT |
21 | #include "hw/pci/pci.h" |
22 | #include "sysemu/dma.h" | |
dcbf469a | 23 | |
4d71b38a YS |
24 | #define rdma_error_report(fmt, ...) \ |
25 | error_report("%s: " fmt, "rdma", ## __VA_ARGS__) | |
26 | #define rdma_warn_report(fmt, ...) \ | |
27 | warn_report("%s: " fmt, "rdma", ## __VA_ARGS__) | |
28 | #define rdma_info_report(fmt, ...) \ | |
29 | info_report("%s: " fmt, "rdma", ## __VA_ARGS__) | |
dcbf469a | 30 | |
b20fc795 YS |
31 | typedef struct RdmaProtectedQList { |
32 | QemuMutex lock; | |
33 | QList *list; | |
34 | } RdmaProtectedQList; | |
35 | ||
bf441451 YS |
36 | typedef struct RdmaProtectedGSList { |
37 | QemuMutex lock; | |
38 | GSList *list; | |
39 | } RdmaProtectedGSList; | |
40 | ||
dcbf469a YS |
41 | void *rdma_pci_dma_map(PCIDevice *dev, dma_addr_t addr, dma_addr_t plen); |
42 | void rdma_pci_dma_unmap(PCIDevice *dev, void *buffer, dma_addr_t len); | |
b20fc795 YS |
43 | void rdma_protected_qlist_init(RdmaProtectedQList *list); |
44 | void rdma_protected_qlist_destroy(RdmaProtectedQList *list); | |
45 | void rdma_protected_qlist_append_int64(RdmaProtectedQList *list, int64_t value); | |
46 | int64_t rdma_protected_qlist_pop_int64(RdmaProtectedQList *list); | |
bf441451 YS |
47 | void rdma_protected_gslist_init(RdmaProtectedGSList *list); |
48 | void rdma_protected_gslist_destroy(RdmaProtectedGSList *list); | |
49 | void rdma_protected_gslist_append_int32(RdmaProtectedGSList *list, | |
50 | int32_t value); | |
51 | void rdma_protected_gslist_remove_int32(RdmaProtectedGSList *list, | |
52 | int32_t value); | |
dcbf469a | 53 | |
028c3f93 YS |
54 | static inline void addrconf_addr_eui48(uint8_t *eui, const char *addr) |
55 | { | |
56 | memcpy(eui, addr, 3); | |
57 | eui[3] = 0xFF; | |
58 | eui[4] = 0xFE; | |
59 | memcpy(eui + 5, addr + 3, 3); | |
60 | eui[0] ^= 2; | |
61 | } | |
62 | ||
dcbf469a | 63 | #endif |