FD.io VPP  v21.06-3-gbb25fbf28
Vector Packet Processing
pp2.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 #define MVCONF_DBG_LEVEL 0
19 #define MVCONF_PP2_BPOOL_COOKIE_SIZE 32
20 #define MVCONF_PP2_BPOOL_DMA_ADDR_SIZE 64
21 #define MVCONF_DMA_PHYS_ADDR_T_SIZE 64
22 #define MVCONF_SYS_DMA_UIO
23 #define MVCONF_TYPES_PUBLIC
24 #define MVCONF_DMA_PHYS_ADDR_T_PUBLIC
25 
26 #include <vlib/vlib.h>
27 
28 #include "mv_std.h"
29 #include "env/mv_sys_dma.h"
30 #include "drivers/mv_pp2.h"
31 #include <drivers/mv_pp2_bpool.h>
32 #include <drivers/mv_pp2_ppio.h>
33 
34 typedef struct
35 {
36  CLIB_CACHE_LINE_ALIGN_MARK (cacheline0);
39  struct pp2_bpool *bpool;
41 
42 typedef struct
43 {
44  CLIB_CACHE_LINE_ALIGN_MARK (cacheline0);
50 
51 typedef struct
52 {
53  CLIB_CACHE_LINE_ALIGN_MARK (cacheline0);
55 #define MRVL_PP2_IF_F_ADMIN_UP (1 << 0)
56  struct pp2_ppio *ppio;
58 
61 
66 
67 #define MRVL_PP2_BUFF_BATCH_SZ VLIB_FRAME_SIZE
68 
69 typedef struct
70 {
71  CLIB_CACHE_LINE_ALIGN_MARK (cacheline0);
72  struct pp2_hif *hif;
73  struct pp2_ppio_desc *descs;
74  struct buff_release_entry bre[MRVL_PP2_BUFF_BATCH_SZ];
75  u32 buffers[VLIB_FRAME_SIZE];
77 
78 typedef struct
79 {
82 
83  /* API message ID base */
86 
89 
90 typedef struct
91 {
92  u8 *name;
95 
96  /* return */
101 
103 void mrvl_pp2_delete_if (mrvl_pp2_if_t * dfif);
105 
106 /* output.c */
107 
108 #define foreach_mrvl_pp2_tx_func_error \
109  _(NO_FREE_SLOTS, "no free tx slots") \
110  _(PPIO_SEND, "pp2_ppio_send errors") \
111  _(PPIO_GET_NUM_OUTQ_DONE, "pp2_ppio_get_num_outq_done errors")
112 
113 typedef enum
114 {
115 #define _(f,s) MRVL_PP2_TX_ERROR_##f,
117 #undef _
120 
122  vlib_frame_t * frame);
123 
124 /* input.c */
125 
126 typedef struct
127 {
130  struct pp2_ppio_desc desc;
132 
134 
135 /* format.c */
139 
140 
141 /*
142  * fd.io coding-style-patch-verification: ON
143  *
144  * Local Variables:
145  * eval: (c-set-style "gnu")
146  * End:
147  */
mrvl_pp2_if_t::dev_instance
u32 dev_instance
Definition: pp2.h:62
mrvl_pp2_create_if
void mrvl_pp2_create_if(mrvl_pp2_create_if_args_t *args)
Definition: pp2.c:176
mrvl_pp2_main
mrvl_pp2_main_t mrvl_pp2_main
Definition: pp2.c:37
mrvl_pp2_inq_t
Definition: pp2.h:34
vlib.h
mrvl_pp2_outq_t::tail
u16 tail
Definition: pp2.h:48
mrvl_pp2_plugin_api_hookup
clib_error_t * mrvl_pp2_plugin_api_hookup(vlib_main_t *vm)
Definition: pp2_api.c:87
mrvl_pp2_outq_t
Definition: pp2.h:42
mrvl_pp2_if_t::outqs
mrvl_pp2_outq_t * outqs
Definition: pp2.h:60
frame
vlib_main_t vlib_node_runtime_t vlib_frame_t * frame
Definition: nat44_ei.c:3048
vnet_device_class_t
struct _vnet_device_class vnet_device_class_t
mrvl_pp2_inq_t::bpool
struct pp2_bpool * bpool
Definition: pp2.h:39
CLIB_CACHE_LINE_ALIGN_MARK
#define CLIB_CACHE_LINE_ALIGN_MARK(mark)
Definition: cache.h:60
mrvl_pp2_interface_tx
uword mrvl_pp2_interface_tx(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
Definition: output.c:31
mrvl_pp2_create_if_args_t::rv
i32 rv
Definition: pp2.h:97
VLIB_FRAME_SIZE
#define VLIB_FRAME_SIZE
Definition: node.h:368
mrvl_pp2_if_t::ppio
struct pp2_ppio * ppio
Definition: pp2.h:56
node
vlib_main_t vlib_node_runtime_t * node
Definition: nat44_ei.c:3047
u16
unsigned short u16
Definition: types.h:57
mrvl_pp2_input_node
vlib_node_registration_t mrvl_pp2_input_node
(constructor) VLIB_REGISTER_NODE (mrvl_pp2_input_node)
Definition: input.c:374
vm
vlib_main_t * vm
X-connect all packets from the HOST to the PHY.
Definition: nat44_ei.c:3047
mrvl_pp2_if_t::per_interface_next_index
u32 per_interface_next_index
Definition: pp2.h:57
mrvl_pp2_input_trace_t::next_index
u32 next_index
Definition: pp2.h:128
mrvl_pp2_input_trace_t
Definition: pp2.h:126
vlib_frame_t
Definition: node.h:372
mrvl_pp2_create_if_args_t::error
clib_error_t * error
Definition: pp2.h:99
format_mrvl_pp2_interface
format_function_t format_mrvl_pp2_interface
Definition: pp2.h:137
format_mrvl_pp2_interface_name
format_function_t format_mrvl_pp2_interface_name
Definition: pp2.h:138
i32
signed int i32
Definition: types.h:77
mrvl_pp2_create_if_args_t::rx_q_sz
u16 rx_q_sz
Definition: pp2.h:93
mrvl_pp2_create_if_args_t::name
u8 * name
Definition: pp2.h:92
mrvl_pp2_if_t::sw_if_index
u32 sw_if_index
Definition: pp2.h:63
MRVL_PP2_BUFF_BATCH_SZ
#define MRVL_PP2_BUFF_BATCH_SZ
Definition: pp2.h:67
mrvl_pp2_per_thread_data_t
Definition: pp2.h:69
MRVL_PP2_TX_N_ERROR
@ MRVL_PP2_TX_N_ERROR
Definition: pp2.h:118
mrvl_pp2_if_t::hw_if_index
u32 hw_if_index
Definition: pp2.h:64
mrvl_pp2_per_thread_data_t::hif
struct pp2_hif * hif
Definition: pp2.h:72
mrvl_pp2_if_t::flags
u32 flags
Definition: pp2.h:54
uword
u64 uword
Definition: types.h:112
mrvl_pp2_per_thread_data_t::descs
struct pp2_ppio_desc * descs
Definition: pp2.h:73
mrvl_pp2_main_t::msg_id_base
u16 msg_id_base
Definition: pp2.h:84
vlib_node_registration_t
struct _vlib_node_registration vlib_node_registration_t
mrvl_pp2_inq_t::queue_index
u32 queue_index
Definition: pp2.h:38
format_function_t
u8 *() format_function_t(u8 *s, va_list *args)
Definition: format.h:48
mrvl_pp2_device_class
vnet_device_class_t mrvl_pp2_device_class
mrvl_pp2_input_trace_t::hw_if_index
u32 hw_if_index
Definition: pp2.h:129
mrvl_pp2_create_if_args_t::tx_q_sz
u16 tx_q_sz
Definition: pp2.h:94
mrvl_pp2_main_t::interfaces
mrvl_pp2_if_t * interfaces
Definition: pp2.h:80
mrvl_pp2_outq_t::size
u16 size
Definition: pp2.h:45
u32
unsigned int u32
Definition: types.h:88
foreach_mrvl_pp2_tx_func_error
#define foreach_mrvl_pp2_tx_func_error
Definition: pp2.h:108
mrvl_pp2_inq_t::size
u16 size
Definition: pp2.h:37
mrvl_pp2_outq_t::buffers
u32 * buffers
Definition: pp2.h:46
mrvl_pp2_main_t::per_thread_data
mrvl_pp2_per_thread_data_t * per_thread_data
Definition: pp2.h:81
mrvl_pp2_outq_t::head
u16 head
Definition: pp2.h:47
vlib_main_t
Definition: main.h:102
mrvl_pp2_create_if_args_t
Definition: pp2.h:90
u8
unsigned char u8
Definition: types.h:56
clib_error_t
Definition: clib_error.h:21
mrvl_pp2_if_t
Definition: pp2.h:51
format_mrvl_pp2_input_trace
format_function_t format_mrvl_pp2_input_trace
Definition: pp2.h:136
mrvl_pp2_create_if_args_t::sw_if_index
u32 sw_if_index
Definition: pp2.h:98
vlib_node_runtime_t
Definition: node.h:454
mrvl_pp2_if_t::inqs
mrvl_pp2_inq_t * inqs
Definition: pp2.h:59
mrvl_pp2_tx_func_error_t
mrvl_pp2_tx_func_error_t
Definition: pp2.h:113
mrvl_pp2_main_t
Definition: pp2.h:78
mrvl_pp2_delete_if
void mrvl_pp2_delete_if(mrvl_pp2_if_t *dfif)
Definition: pp2.c:116