FD.io VPP  v20.01-48-g3e0dafb74
Vector Packet Processing
vhost_user_input.c File Reference
+ Include dependency graph for vhost_user_input.c:

Go to the source code of this file.

Macros

#define VHOST_USER_DOWN_DISCARD_COUNT   256
 
#define VHOST_USER_RX_BUFFER_STARVATION   32
 
#define VHOST_USER_RX_COPY_THRESHOLD   64
 
#define foreach_vhost_user_input_func_error
 

Enumerations

enum  vhost_user_input_func_error_t { VHOST_USER_INPUT_FUNC_N_ERROR }
 

Functions

static_always_inline void vhost_user_rx_trace (vhost_trace_t *t, vhost_user_intf_t *vui, u16 qid, vlib_buffer_t *b, vhost_user_vring_t *txvq, u16 last_avail_idx)
 
static_always_inline u32 vhost_user_input_copy (vhost_user_intf_t *vui, vhost_copy_t *cpy, u16 copy_len, u32 *map_hint)
 
static_always_inline u32 vhost_user_rx_discard_packet (vlib_main_t *vm, vhost_user_intf_t *vui, vhost_user_vring_t *txvq, u32 discard_max)
 Try to discard packets from the tx ring (VPP RX path). More...
 
static_always_inline void vhost_user_input_rewind_buffers (vlib_main_t *vm, vhost_cpu_t *cpu, vlib_buffer_t *b_head)
 
static_always_inline void vhost_user_handle_rx_offload (vlib_buffer_t *b0, u8 *b0_data, virtio_net_hdr_t *hdr)
 
static_always_inline u32 vhost_user_if_input (vlib_main_t *vm, vhost_user_main_t *vum, vhost_user_intf_t *vui, u16 qid, vlib_node_runtime_t *node, vnet_hw_interface_rx_mode mode, u8 enable_csum)
 
VLIB_NODE_FN() vhost_user_input_node (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 

Variables

vlib_node_registration_t vhost_user_input_node
 (constructor) VLIB_REGISTER_NODE (vhost_user_input_node) More...
 
static __clib_unused char * vhost_user_input_func_error_strings []
 

Macro Definition Documentation

◆ foreach_vhost_user_input_func_error

#define foreach_vhost_user_input_func_error
Value:
_(NO_ERROR, "no error") \
_(NO_BUFFER, "no available buffer") \
_(MMAP_FAIL, "mmap failure") \
_(INDIRECT_OVERFLOW, "indirect descriptor overflows table") \
_(UNDERSIZED_FRAME, "undersized ethernet frame received (< 14 bytes)") \
_(FULL_RX_QUEUE, "full rx queue (possible driver tx drop)")

Definition at line 71 of file vhost_user_input.c.

◆ VHOST_USER_DOWN_DISCARD_COUNT

#define VHOST_USER_DOWN_DISCARD_COUNT   256

Definition at line 51 of file vhost_user_input.c.

◆ VHOST_USER_RX_BUFFER_STARVATION

#define VHOST_USER_RX_BUFFER_STARVATION   32

Definition at line 57 of file vhost_user_input.c.

◆ VHOST_USER_RX_COPY_THRESHOLD

#define VHOST_USER_RX_COPY_THRESHOLD   64

Definition at line 67 of file vhost_user_input.c.

Enumeration Type Documentation

◆ vhost_user_input_func_error_t

Enumerator
VHOST_USER_INPUT_FUNC_N_ERROR 

Definition at line 79 of file vhost_user_input.c.

Function Documentation

◆ vhost_user_handle_rx_offload()

static_always_inline void vhost_user_handle_rx_offload ( vlib_buffer_t b0,
u8 b0_data,
virtio_net_hdr_t *  hdr 
)

Definition at line 248 of file vhost_user_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vhost_user_if_input()

static_always_inline u32 vhost_user_if_input ( vlib_main_t vm,
vhost_user_main_t vum,
vhost_user_intf_t vui,
u16  qid,
vlib_node_runtime_t node,
vnet_hw_interface_rx_mode  mode,
u8  enable_csum 
)

Definition at line 333 of file vhost_user_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vhost_user_input_copy()

static_always_inline u32 vhost_user_input_copy ( vhost_user_intf_t vui,
vhost_copy_t cpy,
u16  copy_len,
u32 map_hint 
)

Definition at line 140 of file vhost_user_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vhost_user_input_node()

VLIB_NODE_FN() vhost_user_input_node ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t frame 
)

Definition at line 751 of file vhost_user_input.c.

+ Here is the call graph for this function:

◆ vhost_user_input_rewind_buffers()

static_always_inline void vhost_user_input_rewind_buffers ( vlib_main_t vm,
vhost_cpu_t cpu,
vlib_buffer_t b_head 
)

Definition at line 229 of file vhost_user_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vhost_user_rx_discard_packet()

static_always_inline u32 vhost_user_rx_discard_packet ( vlib_main_t vm,
vhost_user_intf_t vui,
vhost_user_vring_t txvq,
u32  discard_max 
)

Try to discard packets from the tx ring (VPP RX path).

Returns the number of discarded packets.

Definition at line 188 of file vhost_user_input.c.

+ Here is the caller graph for this function:

◆ vhost_user_rx_trace()

static_always_inline void vhost_user_rx_trace ( vhost_trace_t t,
vhost_user_intf_t vui,
u16  qid,
vlib_buffer_t b,
vhost_user_vring_t txvq,
u16  last_avail_idx 
)

Definition at line 94 of file vhost_user_input.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ vhost_user_input_func_error_strings

__clib_unused char* vhost_user_input_func_error_strings[]
static
Initial value:
= {
#define _(n,s)
}
#define foreach_vhost_user_input_func_error

Definition at line 87 of file vhost_user_input.c.

◆ vhost_user_input_node

vlib_node_registration_t vhost_user_input_node
Initial value:
= {
.name = "vhost-user-input",
.sibling_of = "device-input",
.state = VLIB_NODE_STATE_DISABLED,
.format_trace = format_vhost_trace,
}
#define VLIB_NODE_FLAG_TRACE_SUPPORTED
Definition: node.h:306
static_always_inline u8 * format_vhost_trace(u8 *s, va_list *va)
u8 * format_ethernet_header_with_length(u8 *s, va_list *args)
Definition: format.c:97
static __clib_unused char * vhost_user_input_func_error_strings[]

(constructor) VLIB_REGISTER_NODE (vhost_user_input_node)

Definition at line 784 of file vhost_user_input.c.