diff options
Diffstat (limited to 'src/plugins/odp/node.c')
-rwxr-xr-x | src/plugins/odp/node.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/plugins/odp/node.c b/src/plugins/odp/node.c index e0b468a2..322aeb7d 100755 --- a/src/plugins/odp/node.c +++ b/src/plugins/odp/node.c @@ -177,6 +177,8 @@ odp_adjust_buffer (vlib_buffer_t * buf, odp_packet_t pkt, { buf->current_length = odp_packet_len (pkt); buf->current_data = 0; + buf->current_data = (int) ((intptr_t) odp_packet_data (pkt) - + (intptr_t) buf->data); buf->total_length_not_including_first_buffer = 0; buf->flags = VLIB_BUFFER_TOTAL_LENGTH_VALID; buf->free_list_index = VLIB_BUFFER_DEFAULT_FREE_LIST_INDEX; @@ -355,8 +357,9 @@ odp_packet_device_input_fn (vlib_main_t * vm, vlib_node_runtime_t * node, else next0 = odp_rx_next_from_etype (pkt, b0); - if (next0 != VNET_DEVICE_INPUT_NEXT_ETHERNET_INPUT) - vlib_buffer_advance (b0, sizeof (ethernet_header_t)); + b0->current_data = (int) ((intptr_t) odp_packet_data (pkt) - + (intptr_t) b0->data); + vlib_buffer_advance (b0, sizeof (ethernet_header_t)); /* trace */ ODP_TRACE_BUFFER (n_trace, b0, next0, vm, node, oif); |