[dpdk-dev,1/2] net/vmxnet3: set the queue shared buffer at start
Checks
Commit Message
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
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>
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.
@@ -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;
@@ -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;