[dpdk-dev] [PATCH 6/8] net/virtio: move queue configure code to proper place

2016-11-04 Thread Maxime Coquelin


On 11/03/2016 05:09 PM, Yuanhan Liu wrote:
> The only piece of code of virtio_dev_rxtx_start() is actually doing
> queue configure/setup work. So, move it to corresponding queue_setup
> callback.
>
> Once that is done, virtio_dev_rxtx_start() becomes an empty function,
> thus it's being removed.
>
> Signed-off-by: Yuanhan Liu 
> ---
>  drivers/net/virtio/virtio_ethdev.c |   2 -
>  drivers/net/virtio/virtio_ethdev.h |   2 -
>  drivers/net/virtio/virtio_rxtx.c   | 187 
> -
>  3 files changed, 79 insertions(+), 112 deletions(-)

Reviewed-by: Maxime Coquelin 

Thanks,
Maxime


[dpdk-dev] [PATCH 6/8] net/virtio: move queue configure code to proper place

2016-11-04 Thread Yuanhan Liu
The only piece of code of virtio_dev_rxtx_start() is actually doing
queue configure/setup work. So, move it to corresponding queue_setup
callback.

Once that is done, virtio_dev_rxtx_start() becomes an empty function,
thus it's being removed.

Signed-off-by: Yuanhan Liu 
---
 drivers/net/virtio/virtio_ethdev.c |   2 -
 drivers/net/virtio/virtio_ethdev.h |   2 -
 drivers/net/virtio/virtio_rxtx.c   | 187 -
 3 files changed, 79 insertions(+), 112 deletions(-)

diff --git a/drivers/net/virtio/virtio_ethdev.c 
b/drivers/net/virtio/virtio_ethdev.c
index b80b6f5..37459e7 100644
--- a/drivers/net/virtio/virtio_ethdev.c
+++ b/drivers/net/virtio/virtio_ethdev.c
@@ -1502,8 +1502,6 @@ virtio_dev_start(struct rte_eth_dev *dev)
if (hw->started)
return 0;

-   /* Do final configuration before rx/tx engine starts */
-   virtio_dev_rxtx_start(dev);
vtpci_reinit_complete(hw);

hw->started = 1;
diff --git a/drivers/net/virtio/virtio_ethdev.h 
b/drivers/net/virtio/virtio_ethdev.h
index 5db8632..1396c6e 100644
--- a/drivers/net/virtio/virtio_ethdev.h
+++ b/drivers/net/virtio/virtio_ethdev.h
@@ -78,8 +78,6 @@ void virtio_dev_cq_start(struct rte_eth_dev *dev);
 /*
  * RX/TX function prototypes
  */
-void virtio_dev_rxtx_start(struct rte_eth_dev *dev);
-
 void virtio_dev_queue_release(struct virtqueue *vq);

 int  virtio_dev_rx_queue_setup(struct rte_eth_dev *dev, uint16_t rx_queue_id,
diff --git a/drivers/net/virtio/virtio_rxtx.c b/drivers/net/virtio/virtio_rxtx.c
index bce0663..4cb2ce7 100644
--- a/drivers/net/virtio/virtio_rxtx.c
+++ b/drivers/net/virtio/virtio_rxtx.c
@@ -388,112 +388,6 @@ virtio_dev_cq_start(struct rte_eth_dev *dev)
}
 }

-void
-virtio_dev_rxtx_start(struct rte_eth_dev *dev)
-{
-   /*
-* Start receive and transmit vrings
-* -Setup vring structure for all queues
-* -Initialize descriptor for the rx vring
-* -Allocate blank mbufs for the each rx descriptor
-*
-*/
-   uint16_t i;
-   uint16_t desc_idx;
-   struct virtio_hw *hw = dev->data->dev_private;
-
-   PMD_INIT_FUNC_TRACE();
-
-   /* Start rx vring. */
-   for (i = 0; i < dev->data->nb_rx_queues; i++) {
-   struct virtnet_rx *rxvq = dev->data->rx_queues[i];
-   struct virtqueue *vq = rxvq->vq;
-   int error, nbufs;
-   struct rte_mbuf *m;
-
-   if (rxvq->mpool == NULL) {
-   rte_exit(EXIT_FAILURE,
-   "Cannot allocate mbufs for rx virtqueue");
-   }
-
-   /* Allocate blank mbufs for the each rx descriptor */
-   nbufs = 0;
-   error = ENOSPC;
-
-   if (hw->use_simple_rxtx) {
-   for (desc_idx = 0; desc_idx < vq->vq_nentries;
-desc_idx++) {
-   vq->vq_ring.avail->ring[desc_idx] = desc_idx;
-   vq->vq_ring.desc[desc_idx].flags =
-   VRING_DESC_F_WRITE;
-   }
-   }
-
-   memset(>fake_mbuf, 0, sizeof(rxvq->fake_mbuf));
-   for (desc_idx = 0; desc_idx < RTE_PMD_VIRTIO_RX_MAX_BURST;
-desc_idx++) {
-   vq->sw_ring[vq->vq_nentries + desc_idx] =
-   >fake_mbuf;
-   }
-
-   while (!virtqueue_full(vq)) {
-   m = rte_mbuf_raw_alloc(rxvq->mpool);
-   if (m == NULL)
-   break;
-
-   /**
-   * Enqueue allocated buffers*
-   ***/
-   if (hw->use_simple_rxtx)
-   error = 
virtqueue_enqueue_recv_refill_simple(vq, m);
-   else
-   error = virtqueue_enqueue_recv_refill(vq, m);
-
-   if (error) {
-   rte_pktmbuf_free(m);
-   break;
-   }
-   nbufs++;
-   }
-
-   vq_update_avail_idx(vq);
-
-   PMD_INIT_LOG(DEBUG, "Allocated %d bufs", nbufs);
-
-   VIRTQUEUE_DUMP(vq);
-   }
-
-   /* Start tx vring. */
-   for (i = 0; i < dev->data->nb_tx_queues; i++) {
-   struct virtnet_tx *txvq = dev->data->tx_queues[i];
-   struct virtqueue *vq = txvq->vq;
-
-   if (hw->use_simple_rxtx) {
-   uint16_t mid_idx  = vq->vq_nentries >> 1;
-
-   for (desc_idx = 0; desc_idx < mid_idx; desc_idx++) {
-   vq->vq_ring.avail->ring[desc_idx] =
-   desc_idx