/* * Function receives messages from the daemon. */ static void receive_request_from_vswitchd(void) { int j = 0; uint16_t dq_pkt = PKT_BURST_SIZE; struct client *vswd = NULL; struct statistics *vswd_stat = NULL; struct rte_mbuf *buf[PKT_BURST_SIZE] = {0}; vswd = &clients[VSWITCHD]; vswd_stat = &vport_stats[VSWITCHD]; /* Attempt to dequeue maximum available number of mbufs from ring */ while (dq_pkt > 0 && unlikely(rte_ring_sc_dequeue_bulk( vswd->tx_q, (void **)buf, dq_pkt) != 0)) dq_pkt = (uint16_t)RTE_MIN( rte_ring_count(vswd->tx_q), PKT_BURST_SIZE); /* Update number of packets transmitted by daemon */ vswd_stat->rx += dq_pkt; for (j = 0; j < dq_pkt; j++) { handle_vswitchd_cmd(buf[j]); } }
/* * Function handles messages from the daemon. */ void handle_request_from_vswitchd(void) { int j = 0; uint16_t dq_pkt = PKT_BURST_SIZE; struct rte_mbuf *buf[PKT_BURST_SIZE] = {0}; /* Attempt to dequeue maximum available number of mbufs from ring */ while (dq_pkt > 0 && unlikely(rte_ring_sc_dequeue_bulk( vswitchd_message_ring, (void **)buf, dq_pkt) != 0)) dq_pkt = (uint16_t)RTE_MIN( rte_ring_count(vswitchd_message_ring), PKT_BURST_SIZE); /* Update number of packets transmitted by daemon */ stats_vport_rx_increment(VSWITCHD, dq_pkt); for (j = 0; j < dq_pkt; j++) { handle_vswitchd_cmd(buf[j]); } }