+ mp->rx_count = clib_min (vec_len (vd->rxqs), VMXNET3_RXQ_MAX);
+ vec_foreach_index (qid, vd->rxqs)
+ {
+ vmxnet3_rxq_t *rxq = vec_elt_at_index (vd->rxqs, qid);
+ vl_api_vmxnet3_rx_list_t *rx_list = &mp->rx_list[qid];
+
+ ASSERT (qid < VMXNET3_RXQ_MAX);
+ rx_list->rx_qsize = htons (rxq->size);
+ rx_list->rx_next = htons (rxq->rx_comp_ring.next);
+ for (rid = 0; rid < VMXNET3_RX_RING_SIZE; rid++)
+ {
+ ring = &rxq->rx_ring[rid];
+ rx_list->rx_fill[rid] = htons (ring->fill);
+ rx_list->rx_produce[rid] = htons (ring->produce);
+ rx_list->rx_consume[rid] = htons (ring->consume);
+ }
+ }
+
+ mp->tx_count = clib_min (vec_len (vd->txqs), VMXNET3_TXQ_MAX);
+ vec_foreach_index (qid, vd->txqs)
+ {
+ vmxnet3_txq_t *txq = vec_elt_at_index (vd->txqs, qid);
+ vl_api_vmxnet3_tx_list_t *tx_list = &mp->tx_list[qid];
+
+ ASSERT (qid < VMXNET3_TXQ_MAX);
+ tx_list->tx_qsize = htons (txq->size);
+ tx_list->tx_next = htons (txq->tx_comp_ring.next);
+ tx_list->tx_produce = htons (txq->tx_ring.produce);
+ tx_list->tx_consume = htons (txq->tx_ring.consume);
+ }
+