Go to the source code of this file.
|  | 
|  | STATIC_ASSERT ((PKT_RX_IP_CKSUM_BAD|PKT_RX_FDIR)< 256, "dpdk flags not un lower byte, fix needed") | 
|  | 
| static_always_inline uword | dpdk_process_subseq_segs (vlib_main_t *vm, vlib_buffer_t *b, struct rte_mbuf *mb, vlib_buffer_t *bt) | 
|  | 
| static_always_inline void | dpdk_prefetch_mbuf_x4 (struct rte_mbuf *mb[]) | 
|  | 
| static_always_inline void | dpdk_prefetch_buffer_x4 (struct rte_mbuf *mb[]) | 
|  | 
| static_always_inline u16 | dpdk_ol_flags_extract (struct rte_mbuf **mb, u16 *flags, int count) | 
|  | Main DPDK input node.  More... 
 | 
|  | 
| static_always_inline uword | dpdk_process_rx_burst (vlib_main_t *vm, dpdk_per_thread_data_t *ptd, uword n_rx_packets, int maybe_multiseg, u16 *or_flagsp) | 
|  | 
| static_always_inline void | dpdk_process_flow_offload (dpdk_device_t *xd, dpdk_per_thread_data_t *ptd, uword n_rx_packets) | 
|  | 
| static_always_inline u32 | dpdk_device_input (vlib_main_t *vm, dpdk_main_t *dm, dpdk_device_t *xd, vlib_node_runtime_t *node, u32 thread_index, u16 queue_id) | 
|  | 
| VLIB_NODE_FN() | dpdk_input_node (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *f) | 
|  | 
◆ dpdk_device_input()
◆ dpdk_input_node()
◆ dpdk_ol_flags_extract()
Main DPDK input node. 
- Node Identifier:
- dpdk-input
This is the main DPDK input node: across each assigned interface, call rte_eth_rx_burst(...) or similar to obtain a vector of packets to process. Derive vlib_buffer_t metadata from struct rte_mbuf metadata, Depending on the resulting metadata: adjust b->current_data, b->current_length  and dispatch directly to ip4-input-no-checksum, or ip6-input. Trace the packet if required.
- Parameters
- 
  
  
- Graph mechanics: buffer metadata, next index usage
Uses: 
- struct rte_mbuf mb->ol_flags
Sets: 
- b->errorif the packet is to be dropped immediately
- b->current_data, b->current_length- 
- adjusted as needed to skip the L2 header in direct-dispatch cases
 
- vnet_buffer(b)->sw_if_index[VLIB_RX]
- vnet_buffer(b)->sw_if_index[VLIB_TX] = ~0
- b->flags- 
- to indicate multi-segment pkts (VLIB_BUFFER_NEXT_PRESENT), etc.
 
Next Nodes:
- Static arcs to: error-drop, ethernet-input, ip4-input-no-checksum, ip6-input, mpls-input
- per-interface redirection, controlled by xd->per_interface_next_index
Definition at line 148 of file node.c.
 
 
◆ dpdk_prefetch_buffer_x4()
◆ dpdk_prefetch_mbuf_x4()
◆ dpdk_process_flow_offload()
◆ dpdk_process_rx_burst()
◆ dpdk_process_subseq_segs()
◆ STATIC_ASSERT()
◆ dpdk_error_strings
  
  | 
        
          | char* dpdk_error_strings[] |  | static | 
 
Initial value:= {
#define _(n,s) 
}
#define foreach_dpdk_error
Definition at line 32 of file node.c.
 
 
◆ dpdk_input_node
Initial value:= {
  .name = "dpdk-input",
  .sibling_of = "device-input",
  
  .state = VLIB_NODE_STATE_DISABLED,
}
#define VLIB_NODE_FLAG_TRACE_SUPPORTED
static char * dpdk_error_strings[]
u8 * format_ethernet_header_with_length(u8 *s, va_list *args)
format_function_t format_dpdk_rx_trace
(constructor) VLIB_REGISTER_NODE (dpdk_input_node) 
Definition at line 477 of file node.c.