Commit bf525bc7 authored by Joanne Hugé's avatar Joanne Hugé

Drop non eCPRI packets

parent a40959d6
...@@ -601,7 +601,7 @@ static void *recv_thread(void *p) { ...@@ -601,7 +601,7 @@ static void *recv_thread(void *p) {
update_counter(&rx_drop_counter, nb_rx); update_counter(&rx_drop_counter, nb_rx);
} }
else { else {
int nc; int nr; int k = 0; int nc; int nr; int k = 0; int drop_total = 0;
nr = nb_rx; nr = nb_rx;
while((nc = rbuf_contiguous_copy(NULL, &rx_rbuf, nr))) { while((nc = rbuf_contiguous_copy(NULL, &rx_rbuf, nr))) {
...@@ -617,6 +617,7 @@ static void *recv_thread(void *p) { ...@@ -617,6 +617,7 @@ static void *recv_thread(void *p) {
buf = ((uint8_t *) rx_rbuf.buffer) + (rx_rbuf.write_index * rx_rbuf.len); buf = ((uint8_t *) rx_rbuf.buffer) + (rx_rbuf.write_index * rx_rbuf.len);
for(int i = 0; i < nc; i++) { for(int i = 0; i < nc; i++) {
int drop = 0;
#ifdef DPDK #ifdef DPDK
rtebuf = (uint8_t *) (pkt[i + k])->buf_addr + (pkt[i + k])->data_off; rtebuf = (uint8_t *) (pkt[i + k])->buf_addr + (pkt[i + k])->data_off;
if(first_seq_id) { if(first_seq_id) {
...@@ -637,21 +638,30 @@ static void *recv_thread(void *p) { ...@@ -637,21 +638,30 @@ static void *recv_thread(void *p) {
} }
} }
if((pkt[i + k])->data_len != rx_rbuf.len) if((pkt[i + k])->data_len != rx_rbuf.len) {
for(int j = 0; j < pkt[i + k]->data_len; j++) {
printf("%02x", rtebuf[j]);
}
printf("\n");
log_error("RECV", "Packet data length (%d) != RX buffer len (%d)", pkt[i + k]->data_len, rx_rbuf.len); log_error("RECV", "Packet data length (%d) != RX buffer len (%d)", pkt[i + k]->data_len, rx_rbuf.len);
}
if(ntohl((uint32_t) rtebuf + 12) != 0xaefe) {
drop++; drop_total++;
continue;
}
memcpy(buf + i * rx_rbuf.len, rtebuf, rx_rbuf.len); memcpy(buf + i * rx_rbuf.len, rtebuf, rx_rbuf.len);
#else #else
//memcpy(buf + i * rx_rbuf.len, pkt_frame_full, rx_rbuf.len); //memcpy(buf + i * rx_rbuf.len, pkt_frame_full, rx_rbuf.len);
#endif #endif
} }
rx_rbuf.write_index = (rx_rbuf.write_index + nc) % rx_rbuf.buf_len; rx_rbuf.write_index = (rx_rbuf.write_index + nc - drop) % rx_rbuf.buf_len;
for(int i = 0; i < nc; i++) for(int i = 0; i < nc; i++)
rte_pktmbuf_free(pkt[i + k]); rte_pktmbuf_free(pkt[i + k]);
nr -= nc; nr -= nc;
k += nc; k += nc;
} }
} }
update_counter(&recv_counter, nb_rx); update_counter(&recv_counter, nb_rx - drop_total);
} }
pthread_exit(EXIT_SUCCESS); 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