u16 nexts[VLIB_FRAME_SIZE], *next;
n_left_from = frame->n_vectors;
- from = vlib_frame_args (frame);
+ from = vlib_frame_vector_args (frame);
/*
* Convert up to VLIB_FRAME_SIZE indices in "from" to
format_my_node_frame (u8 * s, va_list * va)
{
vlib_frame_t *f = va_arg (*va, vlib_frame_t *);
- my_frame_t *g = vlib_frame_args (f);
+ my_frame_t *g = vlib_frame_scalar_args (f);
int i;
s = format (s, "scalar %d, vector { ", g->scalar);
{
vlib_frame_t *next = vlib_get_next_frame (vm, rt, /* next index */ 0);
n_left = VLIB_FRAME_SIZE - next->n_vectors;
- y = vlib_frame_args (next);
+ y = vlib_frame_scalar_args (next);
y->scalar = serial++;
}
else
u8 qid = thread_index;
avf_txq_t *txq = vec_elt_at_index (ad->txqs, qid % ad->num_queue_pairs);
avf_tx_desc_t *d0, *d1, *d2, *d3;
- u32 *buffers = vlib_frame_args (frame);
+ u32 *buffers = vlib_frame_vector_args (frame);
u32 bi0, bi1, bi2, bi3;
u16 n_left, n_left_to_send, n_in_batch;
vlib_buffer_t *b0, *b1, *b2, *b3;
vec_elt_at_index (ppm->per_thread_data, thread_index);
u8 qid = thread_index;
mrvl_pp2_outq_t *outq = vec_elt_at_index (ppif->outqs, qid);
- u32 *buffers = vlib_frame_args (frame);
+ u32 *buffers = vlib_frame_vector_args (frame);
u16 n_desc = frame->n_vectors, n_left = n_desc, n_sent = n_desc, n_done;
struct pp2_ppio_desc *d;
u16 mask = outq->size - 1;
/* free unsent buffers */
if (PREDICT_FALSE (n_sent != n_desc))
{
- vlib_buffer_free (vm, vlib_frame_args (frame) + n_sent,
+ vlib_buffer_free (vm, vlib_frame_vector_args (frame) + n_sent,
frame->n_vectors - n_sent);
vlib_error_count (vm, node->node_index, MRVL_PP2_TX_ERROR_NO_FREE_SLOTS,
frame->n_vectors - n_sent);
if (n_sent)
{
u16 slot = outq->head & mask;
- buffers = vlib_frame_args (frame);
+ buffers = vlib_frame_vector_args (frame);
u16 n_copy = clib_min (outq->size - slot, n_sent);
clib_memcpy (outq->buffers + slot, buffers, n_copy * sizeof (u32));
memif_per_thread_data_t * ptd)
{
memif_ring_t *ring;
- u32 *buffers = vlib_frame_args (frame);
+ u32 *buffers = vlib_frame_vector_args (frame);
u32 n_left = frame->n_vectors;
u32 n_copy_op;
u16 ring_size, mask, slot, free_slots;
mq->int_count++;
}
- vlib_buffer_free (vm, vlib_frame_args (frame), frame->n_vectors);
+ vlib_buffer_free (vm, vlib_frame_vector_args (frame), frame->n_vectors);
return frame->n_vectors;
}
memif_per_thread_data_t * ptd)
{
memif_ring_t *ring = mq->ring;
- u32 *buffers = vlib_frame_args (frame);
+ u32 *buffers = vlib_frame_vector_args (frame);
u32 n_left = frame->n_vectors;
u16 slot, free_slots, n_free;
u16 ring_size = 1 << mq->log2_ring_size;
vmxnet3_main_t *vmxm = &vmxnet3_main;
vnet_interface_output_runtime_t *rd = (void *) node->runtime_data;
vmxnet3_device_t *vd = pool_elt_at_index (vmxm->devices, rd->dev_instance);
- u32 *buffers = vlib_frame_args (frame);
+ u32 *buffers = vlib_frame_vector_args (frame);
u32 bi0;
vlib_buffer_t *b0;
vmxnet3_tx_desc *txd = 0;
misc_drop_buffers (vlib_main_t * vm,
vlib_node_runtime_t * node, vlib_frame_t * frame)
{
- return vlib_error_drop_buffers (vm, node, vlib_frame_args (frame),
+ return vlib_error_drop_buffers (vm, node, vlib_frame_vector_args (frame),
/* buffer stride */ 1,
frame->n_vectors,
/* next */ 0,
f->n_vectors = 0;
f->scalar_size = scalar_size;
f->vector_size = vector_size;
+ f->flags = 0;
fs->n_alloc_frames += 1;
u16 n_vectors = frame->n_vectors;
vlib_node_increment_counter (vm, node->node_index, 0, n_vectors);
- vlib_buffer_free (vm, vlib_frame_args (frame), n_vectors);
+ vlib_buffer_free (vm, vlib_frame_vector_args (frame), n_vectors);
vlib_frame_free (vm, node, frame);
return n_vectors;
/** \brief Get pointer to frame scalar data.
- @warning This is almost certainly not the function you wish to call.
- See @ref vlib_frame_vector_args instead.
-
@param f vlib_frame_t pointer
@return arbitrary node scalar data
@sa vlib_frame_vector_args
*/
always_inline void *
-vlib_frame_args (vlib_frame_t * f)
+vlib_frame_scalar_args (vlib_frame_t * f)
{
return vlib_frame_vector_args (f) - f->scalar_size;
}
vec_validate (long_msg, 4095);
n_left_from = frame->n_vectors;
- from = vlib_frame_args (frame);
+ from = vlib_frame_vector_args (frame);
while (n_left_from > 0)
{
}
/* Free what we've been given. */
- vlib_buffer_free (vm, vlib_frame_args (frame), n_packets);
+ vlib_buffer_free (vm, vlib_frame_vector_args (frame), n_packets);
return n_packets;
}
if (PREDICT_FALSE (bif->admin_up == 0))
{
- vlib_buffer_free (vm, vlib_frame_args (frame), frame->n_vectors);
+ vlib_buffer_free (vm, vlib_frame_vector_args (frame), frame->n_vectors);
vlib_increment_simple_counter (vnet_main.interface_main.sw_if_counters +
VNET_INTERFACE_COUNTER_DROP,
thread_index, bif->sw_if_index,
n_slaves = vec_len (bif->active_slaves);
if (PREDICT_FALSE (n_slaves == 0))
{
- vlib_buffer_free (vm, vlib_frame_args (frame), frame->n_vectors);
+ vlib_buffer_free (vm, vlib_frame_vector_args (frame), frame->n_vectors);
vlib_increment_simple_counter (vnet_main.interface_main.sw_if_counters +
VNET_INTERFACE_COUNTER_DROP,
thread_index, bif->sw_if_index,
vlib_node_runtime_t * node, vlib_frame_t * frame)
{
af_packet_main_t *apm = &af_packet_main;
- u32 *buffers = vlib_frame_args (frame);
+ u32 *buffers = vlib_frame_vector_args (frame);
u32 n_left = frame->n_vectors;
u32 n_sent = 0;
vnet_interface_output_runtime_t *rd = (void *) node->runtime_data;
vlib_error_count (vm, node->node_index, AF_PACKET_TX_ERROR_TXRING_OVERRUN,
n_left);
- vlib_buffer_free (vm, vlib_frame_args (frame), frame->n_vectors);
+ vlib_buffer_free (vm, vlib_frame_vector_args (frame), frame->n_vectors);
return frame->n_vectors;
}
vlib_node_runtime_t * node, vlib_frame_t * frame)
{
netmap_main_t *nm = &netmap_main;
- u32 *buffers = vlib_frame_args (frame);
+ u32 *buffers = vlib_frame_vector_args (frame);
u32 n_left = frame->n_vectors;
f64 const time_constant = 1e3;
vnet_interface_output_runtime_t *rd = (void *) node->runtime_data;
frame->n_vectors ? NETMAP_TX_ERROR_PENDING_MSGS :
NETMAP_TX_ERROR_NO_FREE_SLOTS), n_left);
- vlib_buffer_free (vm, vlib_frame_args (frame), frame->n_vectors);
+ vlib_buffer_free (vm, vlib_frame_vector_args (frame), frame->n_vectors);
return frame->n_vectors;
}
pipe_t *pipe;
n_left_from = frame->n_vectors;
- from = vlib_frame_args (frame);
+ from = vlib_frame_vector_args (frame);
while (n_left_from > 0)
{
u16 used, next, avail;
u16 sz = vring->size;
u16 mask = sz - 1;
- u32 *buffers = vlib_frame_args (frame);
+ u32 *buffers = vlib_frame_vector_args (frame);
clib_spinlock_lock_if_init (&vif->lockp);
vlib_node_runtime_t *
node, vlib_frame_t * frame)
{
- u32 *buffers = vlib_frame_args (frame);
+ u32 *buffers = vlib_frame_vector_args (frame);
u32 n_left = frame->n_vectors;
vhost_user_main_t *vum = &vhost_user_main;
vnet_interface_output_runtime_t *rd = (void *) node->runtime_data;
thread_index, vui->sw_if_index, n_left);
}
- vlib_buffer_free (vm, vlib_frame_args (frame), frame->n_vectors);
+ vlib_buffer_free (vm, vlib_frame_vector_args (frame), frame->n_vectors);
return frame->n_vectors;
}
u32 new_tx_sw_if_index = ~0;
n_left_from = frame->n_vectors;
- from = vlib_frame_args (frame);
+ from = vlib_frame_vector_args (frame);
vlib_get_buffers (vm, from, bufs, n_left_from);
b = bufs;
u32 n_left, *from;
n_left = n_buffers;
- from = vlib_frame_args (frame);
+ from = vlib_frame_vector_args (frame);
while (n_left >= 4)
{
if (node->flags & VLIB_NODE_FLAG_TRACE)
vnet_interface_output_trace (vm, node, frame, n_buffers);
- from = vlib_frame_args (frame);
+ from = vlib_frame_vector_args (frame);
if (rt->is_deleted)
return vlib_error_drop_buffers (vm, node, from,
n_left_from = frame->n_vectors;
- from = vlib_frame_args (frame);
+ from = vlib_frame_vector_args (frame);
next_index = node->cached_next_index;
while (n_left_from > 0)
validate_error_frame (vlib_main_t * vm,
vlib_node_runtime_t * node, vlib_frame_t * f)
{
- u32 *buffers = vlib_frame_args (f);
+ u32 *buffers = vlib_frame_vector_args (f);
vlib_buffer_t *b;
u8 *msg = 0;
uword i;
static vlib_error_t memory[VNET_ERROR_N_DISPOSITION];
static char memory_init[VNET_ERROR_N_DISPOSITION];
- buffers = vlib_frame_args (frame);
+ buffers = vlib_frame_vector_args (frame);
first_buffer = buffers;
{
vlib_node_runtime_t * node,
vlib_frame_t * frame, bool is_ip4)
{
- u32 *buffers = vlib_frame_args (frame);
+ u32 *buffers = vlib_frame_vector_args (frame);
uword n_packets = frame->n_vectors;
struct iovec *iovecs = 0;
punt_main_t *pm = &punt_main;
pg_output (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame)
{
pg_main_t *pg = &pg_main;
- u32 *buffers = vlib_frame_args (frame);
+ u32 *buffers = vlib_frame_vector_args (frame);
uword n_buffers = frame->n_vectors;
uword n_left = n_buffers;
vnet_interface_output_runtime_t *rd = (void *) node->runtime_data;
pcap_write (&pif->pcap_main);
- vlib_buffer_free (vm, vlib_frame_args (frame), n_buffers);
+ vlib_buffer_free (vm, vlib_frame_vector_args (frame), n_buffers);
if (PREDICT_FALSE (pif->lockp != 0))
clib_atomic_release (pif->lockp);
AUX_DATA_DECL;
n_left_from = frame->n_vectors;
- from = vlib_frame_args (frame);
+ from = vlib_frame_vector_args (frame);
vlib_get_buffers (vm, from, bufs, n_left_from);
for (pi = 0; pi < NSTAGES - 1; pi++)
AUX_DATA_DECL;
n_left_from = frame->n_vectors;
- from = vlib_frame_args (frame);
+ from = vlib_frame_vector_args (frame);
vlib_get_buffers (vm, from, bufs, n_left_from);
for (pi = 0; pi < NSTAGES - 1; pi++)
AUX_DATA_DECL;
n_left_from = frame->n_vectors;
- from = vlib_frame_args (frame);
+ from = vlib_frame_vector_args (frame);
vlib_get_buffers (vm, from, bufs, n_left_from);
for (pi = 0; pi < NSTAGES - 1; pi++)
AUX_DATA_DECL;
n_left_from = frame->n_vectors;
- from = vlib_frame_args (frame);
+ from = vlib_frame_vector_args (frame);
vlib_get_buffers (vm, from, bufs, n_left_from);
for (pi = 0; pi < NSTAGES - 1; pi++)
AUX_DATA_DECL;
n_left_from = frame->n_vectors;
- from = vlib_frame_args (frame);
+ from = vlib_frame_vector_args (frame);
vlib_get_buffers (vm, from, bufs, n_left_from);
for (pi = 0; pi < NSTAGES - 1; pi++)
vlib_buffer_t * b;
n_left_from = frame->n_vectors;
- from = vlib_frame_args (frame);
+ from = vlib_frame_vector_args (frame);
while (n_left_from > 0)
{
static uword
tapcli_tx (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame)
{
- u32 *buffers = vlib_frame_args (frame);
+ u32 *buffers = vlib_frame_vector_args (frame);
uword n_packets = frame->n_vectors;
tapcli_main_t *tm = &tapcli_main;
tapcli_interface_t *ti;
tapcli_nopunt_frame (vlib_main_t * vm,
vlib_node_runtime_t * node, vlib_frame_t * frame)
{
- u32 *buffers = vlib_frame_args (frame);
+ u32 *buffers = vlib_frame_vector_args (frame);
uword n_packets = frame->n_vectors;
vlib_buffer_free (vm, buffers, n_packets);
vlib_frame_free (vm, node, frame);
static uword
tuntap_tx (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame)
{
- u32 *buffers = vlib_frame_args (frame);
+ u32 *buffers = vlib_frame_vector_args (frame);
uword n_packets = frame->n_vectors;
tuntap_main_t *tm = &tuntap_main;
vnet_main_t *vnm = vnet_get_main ();
tuntap_nopunt_frame (vlib_main_t * vm,
vlib_node_runtime_t * node, vlib_frame_t * frame)
{
- u32 *buffers = vlib_frame_args (frame);
+ u32 *buffers = vlib_frame_vector_args (frame);
uword n_packets = frame->n_vectors;
vlib_buffer_free (vm, buffers, n_packets);
vlib_frame_free (vm, node, frame);
vlib_node_runtime_t * node, vlib_frame_t * frame)
{
tuntap_main_t *tm = &tuntap_main;
- u32 *buffers = vlib_frame_args (frame);
+ u32 *buffers = vlib_frame_vector_args (frame);
uword n_buffers = frame->n_vectors;
/* Normal interface transmit happens only on the normal interface... */