tr = vlib_add_trace (vm, node, b0, sizeof (*tr));
tr->next_index = next0;
tr->hw_if_index = ppif->hw_if_index;
- clib_memcpy (&tr->desc, d, sizeof (struct pp2_ppio_desc));
+ clib_memcpy_fast (&tr->desc, d, sizeof (struct pp2_ppio_desc));
}
static_always_inline u16
{
vnet_main_t *vnm = vnet_get_main ();
mrvl_pp2_main_t *ppm = &mrvl_pp2_main;
- u32 thread_index = vlib_get_thread_index ();
+ u32 thread_index = vm->thread_index;
mrvl_pp2_inq_t *inq = vec_elt_at_index (ppif->inqs, qid);
uword n_trace = vlib_get_trace_count (vm, node);
mrvl_pp2_per_thread_data_t *ptd =
next0 = next1 = ppif->per_interface_next_index;
}
- clib_memcpy (vnet_buffer (b0)->sw_if_index, sw_if_index,
- sizeof (sw_if_index));
- clib_memcpy (vnet_buffer (b1)->sw_if_index, sw_if_index,
- sizeof (sw_if_index));
+ clib_memcpy_fast (vnet_buffer (b0)->sw_if_index, sw_if_index,
+ sizeof (sw_if_index));
+ clib_memcpy_fast (vnet_buffer (b1)->sw_if_index, sw_if_index,
+ sizeof (sw_if_index));
VLIB_BUFFER_TRACE_TRAJECTORY_INIT (b0);
VLIB_BUFFER_TRACE_TRAJECTORY_INIT (b1);
next0 = ppif->per_interface_next_index;
}
- clib_memcpy (vnet_buffer (b0)->sw_if_index, sw_if_index,
- sizeof (sw_if_index));
+ clib_memcpy_fast (vnet_buffer (b0)->sw_if_index, sw_if_index,
+ sizeof (sw_if_index));
VLIB_BUFFER_TRACE_TRAJECTORY_INIT (b0);
while (i--)
{
u32 bi = buffers[0];
- e->buff.addr = vlib_get_buffer_data_physical_address (vm, bi) - 64;
+ vlib_buffer_t *b = vlib_get_buffer (vm, bi);
+ e->buff.addr = vlib_buffer_get_pa (vm, b) - 64;
e->buff.cookie = bi;
e->bpool = inq->bpool;
e++;
{
u32 n_rx = 0;
mrvl_pp2_main_t *ppm = &mrvl_pp2_main;
- vnet_device_input_runtime_t *rt = (void *) node->runtime_data;
- vnet_device_and_queue_t *dq;
-
- foreach_device_and_queue (dq, rt->devices_and_queues)
- {
- mrvl_pp2_if_t *ppif;
- ppif = vec_elt_at_index (ppm->interfaces, dq->dev_instance);
- if (ppif->flags & MRVL_PP2_IF_F_ADMIN_UP)
- n_rx += mrvl_pp2_device_input_inline (vm, node, frame, ppif,
- dq->queue_id);
- }
+ vnet_hw_if_rxq_poll_vector_t *pv;
+
+ pv = vnet_hw_if_get_rxq_poll_vector (vm, node);
+
+ for (int i = 0; i < vec_len (pv); i++)
+ {
+ mrvl_pp2_if_t *ppif;
+ ppif = vec_elt_at_index (ppm->interfaces, pv[i].dev_instance);
+ if (ppif->flags & MRVL_PP2_IF_F_ADMIN_UP)
+ n_rx +=
+ mrvl_pp2_device_input_inline (vm, node, frame, ppif, pv[i].queue_id);
+ }
return n_rx;
}
/* *INDENT-OFF* */
VLIB_REGISTER_NODE (mrvl_pp2_input_node) = {
.function = mrvl_pp2_input_fn,
+ .flags = VLIB_NODE_FLAG_TRACE_SUPPORTED,
.name = "mrvl-pp2-input",
.sibling_of = "device-input",
.format_trace = format_mrvl_pp2_input_trace,