Commit 10656cd6 authored by Joanne Hugé's avatar Joanne Hugé

recv works but not decode (recv crashes when no more space, normal)

parent 23936a2b
......@@ -35,8 +35,8 @@
#define DEBUG
//#define DISABLE_SEND
//#define DISABLE_ENCODE
#define DISABLE_RECV
#define DISABLE_DECODE
//#define DISABLE_RECV
//#define DISABLE_DECODE
#include "utils.c"
#include "ring_buffer.c"
......@@ -366,7 +366,6 @@ static void *recv_thread(void *p) {
cpu_set_t mask;
TRXEcpriState * s = (TRXEcpriState *) p;
int ret;
log_info("RECV_THREAD", "Thread init");
// Set thread CPU affinity
......@@ -389,21 +388,21 @@ static void *recv_thread(void *p) {
"Not enough space in RX buffer (%d < %d)\n",
rbuf_write_amount(&rx_rbuf), RX_BURST_SIZE * PACKET_SIZE);
for(int j = 0; j < RX_BURST_SIZE; j++) {
msgv[j].iov_base = rbuf_write(&rx_rbuf) + j * rx_rbuf.block_len;
msgv[j].iov_len = rx_rbuf.block_len;
msgv[j].iov_base = rbuf_write(&rx_rbuf) + j * PACKET_SIZE;
msgv[j].iov_len = PACKET_SIZE;
msgh[j].msg_hdr.msg_iov = &msgv[j];
msgh[j].msg_hdr.msg_iovlen = 1;
}
ret = recvmmsg(recv_sockfd, msgh, RX_BURST_SIZE, 0, NULL);
if(ret == -1)
error(EXIT_FAILURE, errno, "recvmmsg error");
if(ret != RX_BURST_SIZE)
log_error("RECV_THREAD",
"recvmmsg received %d messages instead of %d\n", ret, RX_BURST_SIZE);
for(int j = 0; j < RX_BURST_SIZE;) {
int ret = recvmmsg(recv_sockfd, msgh + j, RX_BURST_SIZE - j, 0, NULL);
if(ret <= -1)
error(EXIT_FAILURE, errno, "recvmmsg error");
j += ret;
update_counter(&recv_counter, ret);
}
rbuf_increment_write(&rx_rbuf, RX_BURST_SIZE * PACKET_SIZE);
update_counter(&recv_counter, RX_BURST_SIZE);
check_rbuf_write(&rx_rbuf, log_exit);
}
pthread_exit(EXIT_SUCCESS);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment