FD.io VPP  v21.06-3-gbb25fbf28
Vector Packet Processing
avf.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 _AVF_H_
19 #define _AVF_H_
20 
21 #include <avf/virtchnl.h>
22 
23 #include <vppinfra/types.h>
25 #include <vppinfra/lock.h>
26 
27 #include <vlib/log.h>
28 #include <vlib/pci/pci.h>
29 
30 #include <vnet/interface.h>
31 
32 #include <vnet/devices/devices.h>
33 #include <vnet/flow/flow.h>
34 
35 #define AVF_QUEUE_SZ_MAX 4096
36 #define AVF_QUEUE_SZ_MIN 64
37 
38 #define AVF_AQ_ENQ_SUSPEND_TIME 50e-6
39 #define AVF_AQ_ENQ_MAX_WAIT_TIME 250e-3
40 
41 #define AVF_RESET_SUSPEND_TIME 20e-3
42 #define AVF_RESET_MAX_WAIT_TIME 1
43 
44 #define AVF_SEND_TO_PF_SUSPEND_TIME 10e-3
45 #define AVF_SEND_TO_PF_MAX_WAIT_TIME 1
46 
47 #define AVF_RXD_STATUS(x) (1ULL << x)
48 #define AVF_RXD_STATUS_DD AVF_RXD_STATUS(0)
49 #define AVF_RXD_STATUS_EOP AVF_RXD_STATUS(1)
50 #define AVF_RXD_STATUS_FLM AVF_RXD_STATUS (11)
51 #define AVF_RXD_ERROR_SHIFT 19
52 #define AVF_RXD_PTYPE_SHIFT 30
53 #define AVF_RXD_LEN_SHIFT 38
54 #define AVF_RX_MAX_DESC_IN_CHAIN 5
55 
56 #define AVF_RXD_ERROR_IPE (1ULL << (AVF_RXD_ERROR_SHIFT + 3))
57 #define AVF_RXD_ERROR_L4E (1ULL << (AVF_RXD_ERROR_SHIFT + 4))
58 
59 #define AVF_TXD_CMD(x) (1 << (x + 4))
60 #define AVF_TXD_CMD_EXT(x, val) ((u64)val << (x + 4))
61 #define AVF_TXD_CMD_EOP AVF_TXD_CMD(0)
62 #define AVF_TXD_CMD_RS AVF_TXD_CMD(1)
63 #define AVF_TXD_CMD_RSV AVF_TXD_CMD(2)
64 
65 #define AVF_TXD_CMD_IIPT_NONE AVF_TXD_CMD_EXT(5, 0)
66 #define AVF_TXD_CMD_IIPT_IPV6 AVF_TXD_CMD_EXT(5, 1)
67 #define AVF_TXD_CMD_IIPT_IPV4_NO_CSUM AVF_TXD_CMD_EXT(5, 2)
68 #define AVF_TXD_CMD_IIPT_IPV4 AVF_TXD_CMD_EXT(5, 3)
69 
70 #define AVF_TXD_CMD_L4T_UNKNOWN AVF_TXD_CMD_EXT(8, 0)
71 #define AVF_TXD_CMD_L4T_TCP AVF_TXD_CMD_EXT(8, 1)
72 #define AVF_TXD_CMD_L4T_SCTP AVF_TXD_CMD_EXT(8, 2)
73 #define AVF_TXD_CMD_L4T_UDP AVF_TXD_CMD_EXT(8, 3)
74 
75 #define AVF_TXD_OFFSET(x,factor,val) (((u64)val/(u64)factor) << (16 + x))
76 #define AVF_TXD_OFFSET_MACLEN(val) AVF_TXD_OFFSET( 0, 2, val)
77 #define AVF_TXD_OFFSET_IPLEN(val) AVF_TXD_OFFSET( 7, 4, val)
78 #define AVF_TXD_OFFSET_L4LEN(val) AVF_TXD_OFFSET(14, 4, val)
79 
80 #define AVF_TXD_DTYP_CTX 0x1ULL
81 #define AVF_TXD_CTX_CMD_TSO AVF_TXD_CMD(0)
82 #define AVF_TXD_CTX_SEG(val,x) (((u64)val) << (30 + x))
83 #define AVF_TXD_CTX_SEG_TLEN(val) AVF_TXD_CTX_SEG(val,0)
84 #define AVF_TXD_CTX_SEG_MSS(val) AVF_TXD_CTX_SEG(val,20)
85 
86 
89 
90 #define avf_log_err(dev, f, ...) \
91  vlib_log (VLIB_LOG_LEVEL_ERR, avf_log.class, "%U: " f, \
92  format_vlib_pci_addr, &dev->pci_addr, \
93  ## __VA_ARGS__)
94 
95 #define avf_log_warn(dev, f, ...) \
96  vlib_log (VLIB_LOG_LEVEL_WARNING, avf_log.class, "%U: " f, \
97  format_vlib_pci_addr, &dev->pci_addr, \
98  ## __VA_ARGS__)
99 
100 #define avf_log_debug(dev, f, ...) \
101  vlib_log (VLIB_LOG_LEVEL_DEBUG, avf_log.class, "%U: " f, \
102  format_vlib_pci_addr, &dev->pci_addr, \
103  ## __VA_ARGS__)
104 
105 #define avf_stats_log_debug(dev, f, ...) \
106  vlib_log (VLIB_LOG_LEVEL_DEBUG, avf_stats_log.class, "%U: " f, \
107  format_vlib_pci_addr, &dev->pci_addr, ##__VA_ARGS__)
108 
109 #define foreach_avf_device_flags \
110  _ (0, INITIALIZED, "initialized") \
111  _ (1, ERROR, "error") \
112  _ (2, ADMIN_UP, "admin-up") \
113  _ (3, VA_DMA, "vaddr-dma") \
114  _ (4, LINK_UP, "link-up") \
115  _ (6, ELOG, "elog") \
116  _ (7, PROMISC, "promisc") \
117  _ (8, RX_INT, "rx-interrupts") \
118  _ (9, RX_FLOW_OFFLOAD, "rx-flow-offload")
119 
120 enum
121 {
122 #define _(a, b, c) AVF_DEVICE_F_##b = (1 << a),
124 #undef _
125 };
126 
127 typedef volatile struct
128 {
129  union
130  {
131  struct
132  {
133  u64 mirr:13;
142 
143  u64 rsv3 : 64;
146  };
147  u64 qword[4];
148 #ifdef CLIB_HAVE_VEC256
149  u64x4 as_u64x4;
150 #endif
151  };
152 } avf_rx_desc_t;
153 
155 
156 typedef struct
157 {
158  union
159  {
160  u64 qword[2];
161 #ifdef CLIB_HAVE_VEC128
162  u64x2 as_u64x2;
163 #endif
164  };
165 } avf_tx_desc_t;
166 
168 
169 typedef struct
170 {
171  CLIB_CACHE_LINE_ALIGN_MARK (cacheline0);
172  volatile u32 *qrx_tail;
181 } avf_rxq_t;
182 
183 typedef struct
184 {
185  CLIB_CACHE_LINE_ALIGN_MARK (cacheline0);
186  volatile u32 *qtx_tail;
195 
199 } avf_txq_t;
200 
201 typedef struct
202 {
207 
208 typedef struct
209 {
214 
215 typedef struct
216 {
217  CLIB_CACHE_LINE_ALIGN_MARK (cacheline0);
220 
226  void *bar0;
228 
229  /* queues */
234 
235  /* Admin queues */
238  void *atq_bufs;
239  void *arq_bufs;
245 
248  u8 hwaddr[6];
256  vlib_pci_addr_t pci_addr;
257 
258  /* flow */
261 
262  /* stats */
265 
266  /* error */
268 } avf_device_t;
269 
270 #define AVF_RX_VECTOR_SZ VLIB_FRAME_SIZE
271 
272 typedef enum
273 {
279 
280 typedef enum
281 {
286 
287 typedef struct
288 {
292  u8 eth_addr[6];
293  int is_add, is_enable;
294 
295  /* below parameters are used for 'program flow' event */
300 
303 
304 typedef struct
305 {
308 } avf_rx_tail_t;
309 
310 typedef struct
311 {
312  CLIB_CACHE_LINE_ALIGN_MARK (cacheline0);
320 
321 typedef struct
322 {
324 
327 } avf_main_t;
328 
329 extern avf_main_t avf_main;
330 
331 typedef struct
332 {
333  vlib_pci_addr_t addr;
340  /* return */
341  int rv;
345 
347 
351 
352 clib_error_t *avf_program_flow (u32 dev_instance, int is_add, u8 *rule,
353  u32 rule_len, u8 *program_status,
354  u32 status_len);
355 
356 /* format.c */
366 
368 avf_get_device (u32 dev_instance)
369 {
370  return pool_elt_at_index (avf_main.devices, dev_instance)[0];
371 }
372 
373 /* elog.c */
374 void avf_elog_init ();
375 void avf_elog_reg (avf_device_t *ad, u32 addr, u32 val, int is_read);
379 
380 static inline u32
381 avf_get_u32 (void *start, int offset)
382 {
383  return *(u32 *) (((u8 *) start) + offset);
384 }
385 
386 static inline u64
387 avf_get_u64 (void *start, int offset)
388 {
389  return *(u64 *) (((u8 *) start) + offset);
390 }
391 
392 static inline u32
393 avf_get_u32_bits (void *start, int offset, int first, int last)
394 {
395  u32 value = avf_get_u32 (start, offset);
396  if ((last == 0) && (first == 31))
397  return value;
398  value >>= last;
399  value &= (1 << (first - last + 1)) - 1;
400  return value;
401 }
402 
403 static inline u64
404 avf_get_u64_bits (void *start, int offset, int first, int last)
405 {
406  u64 value = avf_get_u64 (start, offset);
407  if ((last == 0) && (first == 63))
408  return value;
409  value >>= last;
410  value &= (1 << (first - last + 1)) - 1;
411  return value;
412 }
413 
414 static inline void
415 avf_set_u32 (void *start, int offset, u32 value)
416 {
417  (*(u32 *) (((u8 *) start) + offset)) = value;
418 }
419 
420 static inline void
422 {
423  if (ad->flags & AVF_DEVICE_F_ELOG)
424  avf_elog_reg (ad, addr, val, 0);
425  *(volatile u32 *) ((u8 *) ad->bar0 + addr) = val;
426 }
427 
428 static inline u32
430 {
431  u32 val = *(volatile u32 *) (ad->bar0 + addr);
432 
433  if (ad->flags & AVF_DEVICE_F_ELOG)
434  avf_elog_reg (ad, addr, val, 1);
435 
436  return val;
437 }
438 
439 static inline void
441 {
443  asm volatile ("":::"memory");
444 }
445 
446 static inline void
447 avf_tail_write (volatile u32 *addr, u32 val)
448 {
449 #ifdef __MOVDIRI__
450  _mm_sfence ();
451  _directstoreu_u32 ((void *) addr, val);
452 #else
454 #endif
455 }
456 
459 {
460  return (d->qword[1] & AVF_RXD_STATUS_EOP) == 0;
461 }
462 
465 {
466  return (d->qword[1] & AVF_RXD_STATUS_DD) == 0;
467 }
468 
469 typedef struct
470 {
477 
478 #define foreach_avf_tx_func_error \
479  _(SEGMENT_SIZE_EXCEEDED, "segment size exceeded") \
480  _(NO_FREE_SLOTS, "no free tx slots")
481 
482 typedef enum
483 {
484 #define _(f,s) AVF_TX_ERROR_##f,
486 #undef _
489 
490 #endif /* AVF_H */
491 
492 /*
493  * fd.io coding-style-patch-verification: ON
494  *
495  * Local Variables:
496  * eval: (c-set-style "gnu")
497  * End:
498  */
avf_create_if_args_t::sw_if_index
u32 sw_if_index
Definition: avf.h:342
avf_input_trace_t::hw_if_index
u32 hw_if_index
Definition: avf.h:473
avf_create_if_args_t::error
clib_error_t * error
Definition: avf.h:343
format_avf_input_trace
format_function_t format_avf_input_trace
Definition: avf.h:359
format_avf_vlan_support
format_function_t format_avf_vlan_support
Definition: avf.h:363
avf_aq_desc_t
Definition: virtchnl.h:262
avf_device_t::arq_bufs_pa
u64 arq_bufs_pa
Definition: avf.h:241
avf_rx_desc_t::mirr
u64 mirr
Definition: avf.h:133
avf_main_t::devices
avf_device_t ** devices
Definition: avf.h:325
avf_rx_desc_t::fdid_flex_hi
u32 fdid_flex_hi
Definition: avf.h:145
avf_main_t::msg_id_base
u16 msg_id_base
Definition: avf.h:323
bufs
vlib_buffer_t * bufs[VLIB_FRAME_SIZE]
Definition: nat44_ei_out2in.c:717
avf_device_t::vsi_id
u16 vsi_id
Definition: avf.h:246
avf_device_t::pci_dev_handle
vlib_pci_dev_handle_t pci_dev_handle
Definition: avf.h:224
avf_txq_t
Definition: avf.h:183
avf_rxq_t::descs
avf_rx_desc_t * descs
Definition: avf.h:175
avf_input_trace_t::next_index
u16 next_index
Definition: avf.h:472
vnet_device_class_t
struct _vnet_device_class vnet_device_class_t
avf_txq_t::qtx_tail
volatile u32 * qtx_tail
Definition: avf.h:186
avf_elog_init
void avf_elog_init()
Definition: elog.c:176
avf_txq_t::ph_bufs
u32 * ph_bufs
Definition: avf.h:189
types.h
avf_rxq_t::next
u16 next
Definition: avf.h:173
avf_per_thread_data_t
Definition: avf.h:310
avf_get_u32_bits
static u32 avf_get_u32_bits(void *start, int offset, int first, int last)
Definition: avf.h:393
avf_main
avf_main_t avf_main
Definition: device.c:48
pool_elt_at_index
#define pool_elt_at_index(p, i)
Returns pointer to element at given index.
Definition: pool.h:553
CLIB_CACHE_LINE_ALIGN_MARK
#define CLIB_CACHE_LINE_ALIGN_MARK(mark)
Definition: cache.h:60
avf_process_req_t::is_enable
int is_enable
Definition: avf.h:293
STATIC_ASSERT_SIZEOF
STATIC_ASSERT_SIZEOF(avf_rx_desc_t, 32)
avf_device_t::txqs
avf_txq_t * txqs
Definition: avf.h:231
avf_device_t::n_rx_queues
u16 n_rx_queues
Definition: avf.h:233
avf_device_t::n_rx_irqs
u16 n_rx_irqs
Definition: avf.h:251
next
u16 * next
Definition: nat44_ei_out2in.c:718
format_avf_vlan_supported_caps
format_function_t format_avf_vlan_supported_caps
Definition: avf.h:361
avf_device_t::hw_if_index
u32 hw_if_index
Definition: avf.h:223
avf_txq_t::queue_index
u32 queue_index
Definition: avf.h:198
avf_rx_desc_t::rsv3
u64 rsv3
Definition: avf.h:143
avf_rxq_t
Definition: avf.h:169
avf_device_t::rss_lut_size
u32 rss_lut_size
Definition: avf.h:254
avf_main_t
Definition: avf.h:321
avf_device_t::num_queue_pairs
u16 num_queue_pairs
Definition: avf.h:249
avf_program_flow
clib_error_t * avf_program_flow(u32 dev_instance, int is_add, u8 *rule, u32 rule_len, u8 *program_status, u32 status_len)
Definition: device.c:1886
virtchnl_pf_event_t
Definition: virtchnl.h:235
vlib_pci_dev_handle_t
u32 vlib_pci_dev_handle_t
Definition: pci.h:97
avf_flow_entry_t
Definition: avf.h:201
avf_device_t::n_tx_queues
u16 n_tx_queues
Definition: avf.h:232
avf_create_if_args_t::rxq_size
u16 rxq_size
Definition: avf.h:338
u16
unsigned short u16
Definition: types.h:57
avf_input_node
vlib_node_registration_t avf_input_node
(constructor) VLIB_REGISTER_NODE (avf_input_node)
Definition: input.c:575
first
static heap_elt_t * first(heap_header_t *h)
Definition: heap.c:59
virtchnl_eth_stats_t
Definition: virtchnl.h:393
avf_process_req_type_t
avf_process_req_type_t
Definition: avf.h:280
avf_process_req_t::rule_len
u32 rule_len
Definition: avf.h:297
u64x2
epu8_epi32 epu16_epi32 u64x2
Definition: vector_sse42.h:641
error_bootstrap.h
vm
vlib_main_t * vm
X-connect all packets from the HOST to the PHY.
Definition: nat44_ei.c:3047
avf_flow_entry_t::rcfg
struct avf_fdir_conf * rcfg
Definition: avf.h:205
avf_rxq_t::bufs
u32 * bufs
Definition: avf.h:176
avf_txq_t::rs_slots
u16 * rs_slots
Definition: avf.h:194
avf_process_event_t
avf_process_event_t
Definition: avf.h:272
avf_device_t::name
u8 * name
Definition: avf.h:227
avf_create_if_args_t::enable_elog
int enable_elog
Definition: avf.h:335
addr
vhost_vring_addr_t addr
Definition: vhost_user.h:130
format_avf_device
format_function_t format_avf_device
Definition: avf.h:357
avf_create_if_args_t
Definition: avf.h:331
avf_device_t
Definition: avf.h:215
avf_device_class
vnet_device_class_t avf_device_class
avf_device_t::rxqs
avf_rxq_t * rxqs
Definition: avf.h:230
format_avf_vlan_caps
format_function_t format_avf_vlan_caps
Definition: avf.h:362
avf_elog_arq_desc
void avf_elog_arq_desc(avf_device_t *ad, avf_aq_desc_t *d)
Definition: elog.c:90
i16
signed short i16
Definition: types.h:46
avf_txq_t::tmp_descs
avf_tx_desc_t * tmp_descs
Definition: avf.h:196
avf_txq_t::next
u16 next
Definition: avf.h:187
avf_device_t::error
clib_error_t * error
Definition: avf.h:267
avf_txq_t::tmp_bufs
u32 * tmp_bufs
Definition: avf.h:197
avf_device_t::dev_instance
u32 dev_instance
Definition: avf.h:221
avf_txq_t::size
u16 size
Definition: avf.h:188
avf_process_req_t::calling_process_index
u32 calling_process_index
Definition: avf.h:291
avf_create_if_args_t::addr
vlib_pci_addr_t addr
Definition: avf.h:333
avf_device_t::max_vectors
u16 max_vectors
Definition: avf.h:250
avf_txq_t::descs
avf_tx_desc_t * descs
Definition: avf.h:191
lock.h
offset
struct clib_bihash_value offset
template key/value backing page structure
AVF_TX_N_ERROR
@ AVF_TX_N_ERROR
Definition: avf.h:487
avf_rx_desc_t::l2tag1
u64 l2tag1
Definition: avf.h:135
avf_flow_lookup_entry_t::buffer_advance
i16 buffer_advance
Definition: avf.h:212
AVF_RX_MAX_DESC_IN_CHAIN
#define AVF_RX_MAX_DESC_IN_CHAIN
Definition: avf.h:54
avf_process_req_t::type
avf_process_req_type_t type
Definition: avf.h:289
log.h
static_always_inline
#define static_always_inline
Definition: clib.h:112
clib_spinlock_s
Definition: lock.h:51
avf_device_t::link_speed
virtchnl_link_speed_t link_speed
Definition: avf.h:255
avf_create_if_args_t::txq_num
u16 txq_num
Definition: avf.h:337
avf_rx_tail_t
Definition: avf.h:304
avf_get_u64
static u64 avf_get_u64(void *start, int offset)
Definition: avf.h:387
last
static heap_elt_t * last(heap_header_t *h)
Definition: heap.c:53
avf_elog_aq_enq_resp
void avf_elog_aq_enq_resp(avf_device_t *ad, avf_aq_desc_t *d)
Definition: elog.c:70
interface.h
avf_create_if_args_t::rxq_num
u16 rxq_num
Definition: avf.h:336
avf_fdir_conf
Definition: avf_advanced_flow.h:770
avf_create_if_args_t::rv
int rv
Definition: avf.h:341
avf_process_req_t::rule
u8 * rule
Definition: avf.h:296
AVF_RXD_STATUS_DD
#define AVF_RXD_STATUS_DD
Definition: avf.h:48
avf_flow_lookup_entry_t
Definition: avf.h:208
avf_device_t::atq_next_slot
u16 atq_next_slot
Definition: avf.h:242
avf_create_if
void avf_create_if(vlib_main_t *vm, avf_create_if_args_t *args)
Definition: device.c:1582
avf_flow_lookup_entry_t::next_index
u16 next_index
Definition: avf.h:211
avf_rx_desc_t::length
u64 length
Definition: avf.h:141
avf_txq_t::bufs
u32 * bufs
Definition: avf.h:192
avf_input_trace_t::flow_id
u32 flow_id
Definition: avf.h:474
avf_rx_desc_t::status
u64 status
Definition: avf.h:137
vlib_node_registration_t
struct _vlib_node_registration vlib_node_registration_t
avf_rxq_t::size
u16 size
Definition: avf.h:174
avf_rxq_t::n_enqueued
u16 n_enqueued
Definition: avf.h:177
avf_device_t::flow_entries
avf_flow_entry_t * flow_entries
Definition: avf.h:259
avf_device_t::rss_key_size
u32 rss_key_size
Definition: avf.h:253
avf_device_t::max_mtu
u16 max_mtu
Definition: avf.h:252
avf_device_t::last_cleared_eth_stats
virtchnl_eth_stats_t last_cleared_eth_stats
Definition: avf.h:264
avf_rx_desc_t::filter_status
u64 filter_status
Definition: avf.h:136
avf_rx_desc_t::qword
u64 qword[4]
Definition: avf.h:147
format_function_t
u8 *() format_function_t(u8 *s, va_list *args)
Definition: format.h:48
avf_txq_t::n_enqueued
u16 n_enqueued
Definition: avf.h:193
avf_flow_entry_t::flow_index
u32 flow_index
Definition: avf.h:203
avf_device_t::sw_if_index
u32 sw_if_index
Definition: avf.h:222
avf_tx_desc_t
Definition: avf.h:156
avf_tail_write
static void avf_tail_write(volatile u32 *addr, u32 val)
Definition: avf.h:447
clib_bihash_value
template key/value backing page structure
Definition: bihash_doc.h:44
avf_flow_lookup_entry_t::flow_id
u32 flow_id
Definition: avf.h:210
avf_reg_write
static void avf_reg_write(avf_device_t *ad, u32 addr, u32 val)
Definition: avf.h:421
foreach_avf_device_flags
#define foreach_avf_device_flags
Definition: avf.h:109
avf_flow_ops_fn
vnet_flow_dev_ops_function_t avf_flow_ops_fn
Definition: avf.h:365
vnet_flow_dev_ops_function_t
int() vnet_flow_dev_ops_function_t(struct vnet_main_t *vnm, vnet_flow_dev_op_t op, u32 hw_if_index, u32 index, uword *private_data)
Definition: interface.h:105
avf_device_t::arq
avf_aq_desc_t * arq
Definition: avf.h:237
avf_reg_read
static u32 avf_reg_read(avf_device_t *ad, u32 addr)
Definition: avf.h:429
avf_device_t::cap_flags
u32 cap_flags
Definition: avf.h:247
avf_rxq_t::int_mode
u8 int_mode
Definition: avf.h:178
u64
unsigned long u64
Definition: types.h:89
AVF_PROCESS_REQ_CONFIG_PROMISC_MDDE
@ AVF_PROCESS_REQ_CONFIG_PROMISC_MDDE
Definition: avf.h:283
virtchnl_link_speed_t
virtchnl_link_speed_t
Definition: virtchnl.h:227
avf_process_req_t::dev_instance
u32 dev_instance
Definition: avf.h:290
avf_log
vlib_log_class_registration_t avf_log
avf_per_thread_data_t::buffer_template
vlib_buffer_t buffer_template
Definition: avf.h:318
avf_process_node
vlib_node_registration_t avf_process_node
(constructor) VLIB_REGISTER_NODE (avf_process_node)
Definition: device.c:1394
u32
unsigned int u32
Definition: types.h:88
format_avf_device_name
format_function_t format_avf_device_name
Definition: avf.h:358
avf_rxd_is_not_eop
static_always_inline int avf_rxd_is_not_eop(avf_rx_desc_t *d)
Definition: avf.h:458
avf_stats_log
vlib_log_class_registration_t avf_stats_log
AVF_RXD_STATUS_EOP
#define AVF_RXD_STATUS_EOP
Definition: avf.h:49
avf_rxq_t::buffer_pool_index
u8 buffer_pool_index
Definition: avf.h:179
avf_elog_aq_enq_req
void avf_elog_aq_enq_req(avf_device_t *ad, avf_aq_desc_t *d)
Definition: elog.c:15
pci.h
avf_device_t::atq_bufs
void * atq_bufs
Definition: avf.h:238
avf_tx_func_error_t
avf_tx_func_error_t
Definition: avf.h:482
avf_process_req_t::status_len
u32 status_len
Definition: avf.h:299
value
u8 value
Definition: qos.api:54
avf_device_t::pci_addr
vlib_pci_addr_t pci_addr
Definition: avf.h:256
avf_device_t::per_interface_next_index
u32 per_interface_next_index
Definition: avf.h:219
avf_flow_entry_t::mark
u32 mark
Definition: avf.h:204
AVF_RX_VECTOR_SZ
#define AVF_RX_VECTOR_SZ
Definition: avf.h:270
format_avf_eth_stats
format_function_t format_avf_eth_stats
Definition: avf.h:364
avf_get_u32
static u32 avf_get_u32(void *start, int offset)
Definition: avf.h:381
avf_device_t::eth_stats
virtchnl_eth_stats_t eth_stats
Definition: avf.h:263
avf_main_t::per_thread_data
avf_per_thread_data_t * per_thread_data
Definition: avf.h:326
avf_device_t::flow_lookup_entries
avf_flow_lookup_entry_t * flow_lookup_entries
Definition: avf.h:260
vlib_main_t
Definition: main.h:102
avf_process_req_t
Definition: avf.h:287
avf_device_t::atq_bufs_pa
u64 atq_bufs_pa
Definition: avf.h:240
avf_elog_reg
void avf_elog_reg(avf_device_t *ad, u32 addr, u32 val, int is_read)
Definition: elog.c:146
avf_rx_desc_t::rsv1
u64 rsv1
Definition: avf.h:134
avf_device_t::flags
u32 flags
Definition: avf.h:218
u8
unsigned char u8
Definition: types.h:56
avf_process_req_t::error
clib_error_t * error
Definition: avf.h:301
clib_error_t
Definition: clib_error.h:21
avf_rxq_t::queue_index
u32 queue_index
Definition: avf.h:180
avf_rx_desc_t
Definition: avf.h:127
avf_device_t::bar0
void * bar0
Definition: avf.h:226
avf_rx_desc_t::rsv2
u64 rsv2
Definition: avf.h:139
avf_set_u32
static void avf_set_u32(void *start, int offset, u32 value)
Definition: avf.h:415
avf_input_trace_t::qid
u16 qid
Definition: avf.h:471
AVF_PROCESS_EVENT_DELETE_IF
@ AVF_PROCESS_EVENT_DELETE_IF
Definition: avf.h:275
vlib_log_registration
Definition: log.h:81
avf_rx_desc_t::ptype
u64 ptype
Definition: avf.h:140
avf_device_t::events
virtchnl_pf_event_t * events
Definition: avf.h:244
devices.h
avf_device_t::atq
avf_aq_desc_t * atq
Definition: avf.h:236
avf_device_t::arq_next_slot
u16 arq_next_slot
Definition: avf.h:243
avf_process_req_t::program_status
u8 * program_status
Definition: avf.h:298
AVF_PROCESS_EVENT_AQ_INT
@ AVF_PROCESS_EVENT_AQ_INT
Definition: avf.h:276
foreach_avf_tx_func_error
#define foreach_avf_tx_func_error
Definition: avf.h:478
avf_rxq_t::qrx_tail
volatile u32 * qrx_tail
Definition: avf.h:172
avf_device_t::numa_node
u32 numa_node
Definition: avf.h:225
avf_txq_t::lock
clib_spinlock_t lock
Definition: avf.h:190
AVF_PROCESS_REQ_PROGRAM_FLOW
@ AVF_PROCESS_REQ_PROGRAM_FLOW
Definition: avf.h:284
avf_rx_desc_t::flex_lo
u32 flex_lo
Definition: avf.h:144
avf_input_trace_t
Definition: avf.h:469
avf_rxd_is_not_dd
static_always_inline int avf_rxd_is_not_dd(avf_rx_desc_t *d)
Definition: avf.h:464
format_avf_vf_cap_flags
format_function_t format_avf_vf_cap_flags
Definition: avf.h:360
clib_atomic_store_rel_n
#define clib_atomic_store_rel_n(a, b)
Definition: atomics.h:52
flow.h
avf_rx_desc_t::error
u64 error
Definition: avf.h:138
AVF_PROCESS_REQ_ADD_DEL_ETH_ADDR
@ AVF_PROCESS_REQ_ADD_DEL_ETH_ADDR
Definition: avf.h:282
virtchnl.h
avf_create_if_args_t::name
u8 * name
Definition: avf.h:334
AVF_PROCESS_EVENT_REQ
@ AVF_PROCESS_EVENT_REQ
Definition: avf.h:277
avf_get_u64_bits
static u64 avf_get_u64_bits(void *start, int offset, int first, int last)
Definition: avf.h:404
AVFGEN_RSTAT
#define AVFGEN_RSTAT
Definition: virtchnl.h:49
AVF_PROCESS_EVENT_START
@ AVF_PROCESS_EVENT_START
Definition: avf.h:274
avf_create_if_args_t::txq_size
u16 txq_size
Definition: avf.h:339
avf_get_device
static_always_inline avf_device_t * avf_get_device(u32 dev_instance)
Definition: avf.h:368
u64x4
u64x4
Definition: vector_avx2.h:142
avf_device_t::arq_bufs
void * arq_bufs
Definition: avf.h:239
vlib_buffer_t
VLIB buffer representation.
Definition: buffer.h:111
avf_reg_flush
static void avf_reg_flush(avf_device_t *ad)
Definition: avf.h:440