diff options
Diffstat (limited to 'extras/libmemif/examples/icmp_responder-mt/main.c')
-rw-r--r-- | extras/libmemif/examples/icmp_responder-mt/main.c | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/extras/libmemif/examples/icmp_responder-mt/main.c b/extras/libmemif/examples/icmp_responder-mt/main.c index c47fc53d5b2..4f7733b8072 100644 --- a/extras/libmemif/examples/icmp_responder-mt/main.c +++ b/extras/libmemif/examples/icmp_responder-mt/main.c @@ -299,6 +299,10 @@ memif_rx_poll (void *ptr) data->rx_buf_num += rx; if (rx == 0) { + /* if queue is in polling mode, it's not refilled */ + err = memif_refill_queue (c->conn, data->qid, -1); + if (err != MEMIF_ERR_SUCCESS) + INFO ("memif_buffer_free: %s", memif_strerror (err)); continue; } @@ -309,7 +313,7 @@ memif_rx_poll (void *ptr) err = memif_buffer_alloc (c->conn, data->qid, data->tx_bufs, - data->rx_buf_num, &tx, 0); + data->rx_buf_num, &tx, 128); if (err != MEMIF_ERR_SUCCESS) { INFO ("memif_buffer_alloc: %s", memif_strerror (err)); @@ -324,16 +328,16 @@ memif_rx_poll (void *ptr) for (i = 0; i < rx; i++) { resolve_packet ((void *) (data->rx_bufs + i)->data, - (data->rx_bufs + i)->data_len, + (data->rx_bufs + i)->len, (void *) (data->tx_bufs + i)->data, - &(data->tx_bufs + i)->data_len, c->ip_addr); + &(data->tx_bufs + i)->len, c->ip_addr); } /* mark memif buffers and shared memory buffers as free */ - err = memif_buffer_free (c->conn, data->qid, data->rx_bufs, rx, &fb); + err = memif_refill_queue (c->conn, data->qid, -1); if (err != MEMIF_ERR_SUCCESS) INFO ("memif_buffer_free: %s", memif_strerror (err)); - data->rx_buf_num -= fb; + data->rx_buf_num -= rx; DBG ("freed %d buffers. %u/%u alloc/free buffers", fb, data->rx_buf_num, MAX_MEMIF_BUFS - data->rx_buf_num); @@ -355,10 +359,10 @@ error: goto close; close: - err = memif_buffer_free (c->conn, data->qid, data->rx_bufs, rx, &fb); + err = memif_refill_queue (c->conn, data->qid, -1); if (err != MEMIF_ERR_SUCCESS) INFO ("memif_buffer_free: %s", memif_strerror (err)); - data->rx_buf_num -= fb; + data->rx_buf_num -= rx; DBG ("freed %d buffers. %u/%u alloc/free buffers", fb, data->rx_buf_num, MAX_MEMIF_BUFS - data->rx_buf_num); free (data->rx_bufs); @@ -439,7 +443,7 @@ memif_rx_interrupt (void *ptr) err = memif_buffer_alloc (c->conn, data->qid, data->tx_bufs, - data->rx_buf_num, &tx, 0); + data->rx_buf_num, &tx, 128); if (err != MEMIF_ERR_SUCCESS) { INFO ("memif_buffer_alloc: %s", memif_strerror (err)); @@ -454,17 +458,16 @@ memif_rx_interrupt (void *ptr) for (i = 0; i < rx; i++) { resolve_packet ((void *) (data->rx_bufs + i)->data, - (data->rx_bufs + i)->data_len, + (data->rx_bufs + i)->len, (void *) (data->tx_bufs + i)->data, - &(data->tx_bufs + i)->data_len, c->ip_addr); + &(data->tx_bufs + i)->len, c->ip_addr); } /* mark memif buffers and shared memory buffers as free */ - err = - memif_buffer_free (c->conn, data->qid, data->rx_bufs, rx, &fb); + err = memif_refill_queue (c->conn, data->qid, rx); if (err != MEMIF_ERR_SUCCESS) INFO ("memif_buffer_free: %s", memif_strerror (err)); - data->rx_buf_num -= fb; + data->rx_buf_num -= rx; DBG ("freed %d buffers. %u/%u alloc/free buffers", fb, data->rx_buf_num, MAX_MEMIF_BUFS - data->rx_buf_num); @@ -487,10 +490,10 @@ error: goto close; close: - err = memif_buffer_free (c->conn, data->qid, data->rx_bufs, rx, &fb); + err = memif_refill_queue (c->conn, data->qid, rx); if (err != MEMIF_ERR_SUCCESS) INFO ("memif_buffer_free: %s", memif_strerror (err)); - data->rx_buf_num -= fb; + data->rx_buf_num -= rx; DBG ("freed %d buffers. %u/%u alloc/free buffers", fb, data->rx_buf_num, MAX_MEMIF_BUFS - data->rx_buf_num); free (data->rx_bufs); @@ -611,7 +614,6 @@ icmpr_memif_create (long index) args.num_s2m_rings = 2; args.num_m2s_rings = 2; strncpy ((char *) args.interface_name, IF_NAME, strlen (IF_NAME)); - strncpy ((char *) args.instance_name, APP_NAME, strlen (APP_NAME)); args.mode = 0; /* socket filename is not specified, because this app is supposed to connect to VPP over memif. so default socket filename will be used */ @@ -675,7 +677,7 @@ print_help () printf (" (debug)"); #endif printf ("\n"); - printf ("memif version: %d\n", MEMIF_VERSION); + printf ("memif version: %d\n", memif_get_version ()); printf ("commands:\n"); printf ("\thelp - prints this help\n"); printf ("\texit - exit app\n"); @@ -896,7 +898,7 @@ main () /* if valid callback is passed as argument, fd event polling will be done by user all file descriptors and events will be passed to user in this callback */ /* if callback is set to NULL libmemif will handle fd event polling */ - err = memif_init (control_fd_update, APP_NAME); + err = memif_init (control_fd_update, APP_NAME, NULL, NULL); if (err != MEMIF_ERR_SUCCESS) INFO ("memif_init: %s", memif_strerror (err)); |