[dpdk-dev,1/2] net/vmxnet3: set the queue shared buffer at start

Message ID 20180117150457.17806-1-3chas3@gmail.com (mailing list archive)
State Accepted, archived
Delegated to: Ferruh Yigit
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation fail Compilation issues

Commit Message

Chas Williams Jan. 17, 2018, 3:04 p.m. UTC
  From: "Charles (Chas) Williams" <ciwillia@mail.eng.vyatta.net>

If a reconfiguration happens, queuedesc is reallocated.  Any queues that
are preserved point to the previous queuedesc since the queues are only
configured during queue setup.  Delay configuration of the shared queue
pointers until device start when queuedesc is no longer changing.

Fixes: 8618d19b52b1 ("net/vmxnet3: reallocate shared memzone on re-config")

Signed-off-by: Chas Williams <chas3@att.com>
---
 drivers/net/vmxnet3/vmxnet3_ethdev.c | 4 ++++
 drivers/net/vmxnet3/vmxnet3_rxtx.c   | 4 ++--
 2 files changed, 6 insertions(+), 2 deletions(-)
  

Comments

Shrikrishna Khare March 12, 2018, 5:45 p.m. UTC | #1
On Wed, 17 Jan 2018, Chas Williams wrote:

> From: "Charles (Chas) Williams" <ciwillia@mail.eng.vyatta.net>
> 
> If a reconfiguration happens, queuedesc is reallocated.  Any queues that
> are preserved point to the previous queuedesc since the queues are only
> configured during queue setup.  Delay configuration of the shared queue
> pointers until device start when queuedesc is no longer changing.
> 
> Fixes: 8618d19b52b1 ("net/vmxnet3: reallocate shared memzone on re-config")
> 
> Signed-off-by: Chas Williams <chas3@att.com>

Acked-by: Shrikrishna Khare <skhare@vmware.com>
  
Ferruh Yigit March 13, 2018, 3:20 p.m. UTC | #2
On 3/12/2018 5:45 PM, Shrikrishna Khare wrote:
> 
> 
> On Wed, 17 Jan 2018, Chas Williams wrote:
> 
>> From: "Charles (Chas) Williams" <ciwillia@mail.eng.vyatta.net>
>>
>> If a reconfiguration happens, queuedesc is reallocated.  Any queues that
>> are preserved point to the previous queuedesc since the queues are only
>> configured during queue setup.  Delay configuration of the shared queue
>> pointers until device start when queuedesc is no longer changing.
>>
>> Fixes: 8618d19b52b1 ("net/vmxnet3: reallocate shared memzone on re-config")
>>
>> Signed-off-by: Chas Williams <chas3@att.com>
> 
> Acked-by: Shrikrishna Khare <skhare@vmware.com>

Series applied to dpdk-next-net/master, thanks.
  

Patch

diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c
index d3b704b..776a0da 100644
--- a/drivers/net/vmxnet3/vmxnet3_ethdev.c
+++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c
@@ -644,6 +644,8 @@  vmxnet3_setup_driver_shared(struct rte_eth_dev *dev)
 		Vmxnet3_TxQueueDesc *tqd = &hw->tqd_start[i];
 		vmxnet3_tx_queue_t *txq  = dev->data->tx_queues[i];
 
+		txq->shared = &hw->tqd_start[i];
+
 		tqd->ctrl.txNumDeferred  = 0;
 		tqd->ctrl.txThreshold    = 1;
 		tqd->conf.txRingBasePA   = txq->cmd_ring.basePA;
@@ -664,6 +666,8 @@  vmxnet3_setup_driver_shared(struct rte_eth_dev *dev)
 		Vmxnet3_RxQueueDesc *rqd  = &hw->rqd_start[i];
 		vmxnet3_rx_queue_t *rxq   = dev->data->rx_queues[i];
 
+		rxq->shared = &hw->rqd_start[i];
+
 		rqd->conf.rxRingBasePA[0] = rxq->cmd_ring[0].basePA;
 		rqd->conf.rxRingBasePA[1] = rxq->cmd_ring[1].basePA;
 		rqd->conf.compRingBasePA  = rxq->comp_ring.basePA;
diff --git a/drivers/net/vmxnet3/vmxnet3_rxtx.c b/drivers/net/vmxnet3/vmxnet3_rxtx.c
index f9416f3..64f24e6 100644
--- a/drivers/net/vmxnet3/vmxnet3_rxtx.c
+++ b/drivers/net/vmxnet3/vmxnet3_rxtx.c
@@ -908,7 +908,7 @@  vmxnet3_dev_tx_queue_setup(struct rte_eth_dev *dev,
 
 	txq->queue_id = queue_idx;
 	txq->port_id = dev->data->port_id;
-	txq->shared = &hw->tqd_start[queue_idx];
+	txq->shared = NULL; /* set in vmxnet3_setup_driver_shared() */
 	txq->hw = hw;
 	txq->qid = queue_idx;
 	txq->stopped = TRUE;
@@ -1011,7 +1011,7 @@  vmxnet3_dev_rx_queue_setup(struct rte_eth_dev *dev,
 	rxq->mp = mp;
 	rxq->queue_id = queue_idx;
 	rxq->port_id = dev->data->port_id;
-	rxq->shared = &hw->rqd_start[queue_idx];
+	rxq->shared = NULL; /* set in vmxnet3_setup_driver_shared() */
 	rxq->hw = hw;
 	rxq->qid1 = queue_idx;
 	rxq->qid2 = queue_idx + hw->num_rx_queues;