X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=vnet%2Fvnet%2Fdevices%2Fdpdk%2Fnode.c;h=770af2a04ac90ea7110a06a8b7fd66b058c9ec94;hb=refs%2Fchanges%2F35%2F135%2F1;hp=f05c37fed52b986f00ad3ead7cf9a44c5f3b0338;hpb=bfdedbd5a3ba7e6fdc036d212253aa55c9062211;p=vpp.git diff --git a/vnet/vnet/devices/dpdk/node.c b/vnet/vnet/devices/dpdk/node.c index f05c37fed52..770af2a04ac 100644 --- a/vnet/vnet/devices/dpdk/node.c +++ b/vnet/vnet/devices/dpdk/node.c @@ -541,6 +541,7 @@ static inline u32 dpdk_device_input ( dpdk_main_t * dm, u32 n_trace, trace_cnt __attribute__((unused)); vlib_buffer_free_list_t * fl; u8 efd_discard_burst = 0; + u16 ip_align_offset = 0; if (xd->admin_up == 0) return 0; @@ -559,6 +560,9 @@ static inline u32 dpdk_device_input ( dpdk_main_t * dm, return 0; } + if (xd->pmd == VNET_DPDK_PMD_THUNDERX) + ip_align_offset = 6; + vec_reset_length (xd->d_trace_buffers); trace_cnt = n_trace = vlib_get_trace_count (vm, node); @@ -706,6 +710,14 @@ static inline u32 dpdk_device_input ( dpdk_main_t * dm, b0->current_data = l3_offset0; b0->current_length = mb->data_len - l3_offset0; + + if (PREDICT_FALSE (ip_align_offset != 0)) + { + if (next0 == DPDK_RX_NEXT_IP4_INPUT || + next0 == DPDK_RX_NEXT_IP6_INPUT) + b0->current_data += ip_align_offset; + } + b0->flags = VLIB_BUFFER_TOTAL_LENGTH_VALID; if (VMWARE_LENGTH_BUG_WORKAROUND)