FD.io VPP
v19.08-27-gf4dcae4
Vector Packet Processing
Main Page
Related Pages
Modules
Namespaces
Data Structures
Source
Files
Symbols
rdma.h
Go to the documentation of this file.
1
/*
2
*------------------------------------------------------------------
3
* Copyright (c) 2018 Cisco and/or its affiliates.
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at:
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
*------------------------------------------------------------------
16
*/
17
18
#ifndef _RDMA_H_
19
#define _RDMA_H_
20
21
#include <infiniband/verbs.h>
22
#include <
vlib/log.h
>
23
24
#define foreach_rdma_device_flags \
25
_(0, ERROR, "error") \
26
_(1, ADMIN_UP, "admin-up") \
27
_(2, LINK_UP, "link-up") \
28
_(3, PROMISC, "promiscuous")
29
30
enum
31
{
32
#define _(a, b, c) RDMA_DEVICE_F_##b = (1 << a),
33
foreach_rdma_device_flags
34
#undef _
35
};
36
37
typedef
struct
38
{
39
CLIB_CACHE_LINE_ALIGN_MARK
(cacheline0);
40
u32
size
;
41
u32
n_enq
;
42
struct
ibv_cq *
cq
;
43
struct
ibv_wq *
wq
;
44
}
rdma_rxq_t
;
45
46
typedef
struct
47
{
48
CLIB_CACHE_LINE_ALIGN_MARK
(cacheline0);
49
u32
size
;
50
u32
n_enq
;
51
struct
ibv_cq *
cq
;
52
struct
ibv_qp *
qp
;
53
clib_spinlock_t
lock
;
54
}
rdma_txq_t
;
55
56
typedef
struct
57
{
58
CLIB_CACHE_LINE_ALIGN_MARK
(cacheline0);
59
u32
flags
;
60
u32
per_interface_next_index
;
61
62
u32
dev_instance
;
63
u32
sw_if_index
;
64
u32
hw_if_index
;
65
66
u32
async_event_clib_file_index
;
67
68
rdma_rxq_t
*
rxqs
;
69
rdma_txq_t
*
txqs
;
70
71
u8
*
name
;
72
mac_address_t
hwaddr
;
73
vlib_pci_addr_t
pci_addr
;
74
75
struct
ibv_context *
ctx
;
76
struct
ibv_pd *
pd
;
77
struct
ibv_mr *
mr
;
78
struct
ibv_qp *
rx_qp
;
79
struct
ibv_rwq_ind_table *
rx_rwq_ind_tbl
;
80
struct
ibv_flow *
flow_ucast
;
81
struct
ibv_flow *
flow_mcast
;
82
83
/* error */
84
clib_error_t
*
error
;
85
}
rdma_device_t
;
86
87
typedef
struct
88
{
89
rdma_device_t
*
devices
;
90
vlib_log_class_t
log_class
;
91
}
rdma_main_t
;
92
93
extern
rdma_main_t
rdma_main
;
94
95
typedef
struct
96
{
97
u8
*
ifname
;
98
u8
*
name
;
99
u32
rxq_size
;
100
u32
txq_size
;
101
u32
rxq_num
;
102
103
/* return */
104
int
rv
;
105
u32
sw_if_index
;
106
clib_error_t
*
error
;
107
}
rdma_create_if_args_t
;
108
109
void
rdma_create_if
(
vlib_main_t
*
vm
,
rdma_create_if_args_t
* args);
110
void
rdma_delete_if
(
vlib_main_t
*
vm
,
rdma_device_t
* rd);
111
112
extern
vlib_node_registration_t
rdma_input_node
;
113
extern
vnet_device_class_t
rdma_device_class
;
114
115
/* format.c */
116
format_function_t
format_rdma_device
;
117
format_function_t
format_rdma_device_name
;
118
format_function_t
format_rdma_input_trace
;
119
120
typedef
struct
121
{
122
u32
next_index
;
123
u32
hw_if_index
;
124
}
rdma_input_trace_t
;
125
126
#define foreach_rdma_tx_func_error \
127
_(NO_FREE_SLOTS, "no free tx slots")
128
129
typedef
enum
130
{
131
#define _(f,s) RDMA_TX_ERROR_##f,
132
foreach_rdma_tx_func_error
133
#undef _
134
RDMA_TX_N_ERROR
,
135
}
rdma_tx_func_error_t
;
136
137
#endif
/* AVF_H */
138
139
/*
140
* fd.io coding-style-patch-verification: ON
141
*
142
* Local Variables:
143
* eval: (c-set-style "gnu")
144
* End:
145
*/
rdma_device_t::mr
struct ibv_mr * mr
Definition:
rdma.h:77
CLIB_CACHE_LINE_ALIGN_MARK
#define CLIB_CACHE_LINE_ALIGN_MARK(mark)
Definition:
cache.h:60
rdma_delete_if
void rdma_delete_if(vlib_main_t *vm, rdma_device_t *rd)
Definition:
device.c:680
format_rdma_device
format_function_t format_rdma_device
Definition:
rdma.h:116
rdma_create_if
void rdma_create_if(vlib_main_t *vm, rdma_create_if_args_t *args)
Definition:
device.c:558
rdma_rxq_t::size
u32 size
Definition:
rdma.h:40
rdma_device_t::dev_instance
u32 dev_instance
Definition:
rdma.h:62
rdma_rxq_t::wq
struct ibv_wq * wq
Definition:
rdma.h:43
rdma_txq_t::size
u32 size
Definition:
rdma.h:49
rdma_input_trace_t::hw_if_index
u32 hw_if_index
Definition:
rdma.h:123
rdma_device_t::per_interface_next_index
u32 per_interface_next_index
Definition:
rdma.h:60
format_rdma_input_trace
format_function_t format_rdma_input_trace
Definition:
rdma.h:118
rdma_create_if_args_t::sw_if_index
u32 sw_if_index
Definition:
rdma.h:105
format_function_t
u8 *( format_function_t)(u8 *s, va_list *args)
Definition:
format.h:48
rdma_main
rdma_main_t rdma_main
Definition:
device.c:46
rdma_device_t
Definition:
rdma.h:56
rdma_input_trace_t::next_index
u32 next_index
Definition:
rdma.h:122
vnet_device_class_t
struct _vnet_device_class vnet_device_class_t
rdma_device_t::hwaddr
mac_address_t hwaddr
Definition:
rdma.h:72
u8
unsigned char u8
Definition:
types.h:56
rdma_txq_t::lock
clib_spinlock_t lock
Definition:
rdma.h:53
rdma_device_t::pci_addr
vlib_pci_addr_t pci_addr
Definition:
rdma.h:73
rdma_main_t::log_class
vlib_log_class_t log_class
Definition:
rdma.h:90
rdma_create_if_args_t::rxq_num
u32 rxq_num
Definition:
rdma.h:101
vlib_log_class_t
u32 vlib_log_class_t
Definition:
vlib.h:51
rdma_device_t::pd
struct ibv_pd * pd
Definition:
rdma.h:76
rdma_main_t::devices
rdma_device_t * devices
Definition:
rdma.h:89
rdma_txq_t::cq
struct ibv_cq * cq
Definition:
rdma.h:51
RDMA_TX_N_ERROR
Definition:
rdma.h:134
rdma_create_if_args_t::rxq_size
u32 rxq_size
Definition:
rdma.h:99
u32
unsigned int u32
Definition:
types.h:88
rdma_device_t::flags
u32 flags
Definition:
rdma.h:59
rdma_create_if_args_t::txq_size
u32 txq_size
Definition:
rdma.h:100
rdma_txq_t::n_enq
u32 n_enq
Definition:
rdma.h:50
rdma_rxq_t::cq
struct ibv_cq * cq
Definition:
rdma.h:42
rdma_main_t
Definition:
rdma.h:87
rdma_txq_t::qp
struct ibv_qp * qp
Definition:
rdma.h:52
mac_address_t_
Definition:
mac_address.h:21
rdma_input_trace_t
Definition:
rdma.h:120
rdma_device_t::hw_if_index
u32 hw_if_index
Definition:
rdma.h:64
rdma_device_t::rx_rwq_ind_tbl
struct ibv_rwq_ind_table * rx_rwq_ind_tbl
Definition:
rdma.h:79
rdma_device_t::error
clib_error_t * error
Definition:
rdma.h:84
vm
vlib_main_t * vm
Definition:
buffer.c:312
rdma_create_if_args_t::error
clib_error_t * error
Definition:
rdma.h:106
rdma_create_if_args_t::ifname
u8 * ifname
Definition:
rdma.h:97
rdma_create_if_args_t
Definition:
rdma.h:95
clib_spinlock_t
Definition:
lock.h:49
rdma_input_node
vlib_node_registration_t rdma_input_node
(constructor) VLIB_REGISTER_NODE (rdma_input_node)
Definition:
input.c:358
rdma_device_t::sw_if_index
u32 sw_if_index
Definition:
rdma.h:63
format_rdma_device_name
format_function_t format_rdma_device_name
Definition:
rdma.h:117
rdma_txq_t
Definition:
rdma.h:46
rdma_device_t::name
u8 * name
Definition:
rdma.h:71
rdma_device_t::txqs
rdma_txq_t * txqs
Definition:
rdma.h:69
rdma_create_if_args_t::name
u8 * name
Definition:
rdma.h:98
rdma_device_t::rxqs
rdma_rxq_t * rxqs
Definition:
rdma.h:68
rdma_device_class
vnet_device_class_t rdma_device_class
rdma_tx_func_error_t
rdma_tx_func_error_t
Definition:
rdma.h:129
clib_error_t
Definition:
clib_error.h:21
vlib_node_registration_t
struct _vlib_node_registration vlib_node_registration_t
rdma_rxq_t
Definition:
rdma.h:37
rdma_device_t::async_event_clib_file_index
u32 async_event_clib_file_index
Definition:
rdma.h:66
vlib_main_t
Definition:
main.h:68
rdma_create_if_args_t::rv
int rv
Definition:
rdma.h:104
foreach_rdma_tx_func_error
#define foreach_rdma_tx_func_error
Definition:
rdma.h:126
foreach_rdma_device_flags
#define foreach_rdma_device_flags
Definition:
rdma.h:24
rdma_device_t::flow_ucast
struct ibv_flow * flow_ucast
Definition:
rdma.h:80
log.h
rdma_device_t::flow_mcast
struct ibv_flow * flow_mcast
Definition:
rdma.h:81
rdma_device_t::ctx
struct ibv_context * ctx
Definition:
rdma.h:75
rdma_device_t::rx_qp
struct ibv_qp * rx_qp
Definition:
rdma.h:78
rdma_rxq_t::n_enq
u32 n_enq
Definition:
rdma.h:41
src
plugins
rdma
rdma.h
Generated on Wed Sep 18 2019 17:43:56 for FD.io VPP by
1.8.11