FD.io VPP
v19.08-27-gf4dcae4
Vector Packet Processing
Main Page
Related Pages
Modules
Namespaces
Data Structures
Source
Files
Symbols
FD.io VPP
Vector Packet Processing
Release Notes
Debug CLI
Startup Configuration
Node Identifiers
Modules
Namespaces
Data Structures
Source
Files
Symbols
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Modules
Pages
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