On 5/29/2023 3:26 AM, Jie Hai wrote:
>
> Each stream has a read-only "disabled" field that control if this
> stream should be used to forward. This field depends on states
> of Rx/Tx queues, please see
> commit 3c4426db54fc ("app/testpmd: do not poll stopped queues").
>
> Currently, the testpmd and DPDK frameworks maintain queue state
> separately. That of the primary process of testpmd are set by
> deferred_start in the queue configuration. And that of the
> framework(dev->data->rx_queue_state or dev->data->tx_queue_state)
> is set when the driver enables/disables the queue, and it is
> shared between the primary/secondary process.
>
> If the deferred_start is set, the queue is disabled and the
> corresponding queue state in the framework changes to stopped.
> However, the queue state in the framework does not only come from
> this. If the primary/secondary process stops a queue, the related
> queue state will change, too. However, the primary process of
> testpmd does not know the change brought by this operation.
> Therefore, setting the queue state in the primary testpmd by only
> the deferred_start is unsafe.
>
> For example, Rx/Tx queues who are stopped before the operations of
> stopping and starting port cannot forward packets after these
> operations on primary process.
>
> Therefore, the primary process should getting the queue state from
> of the framework as the secondary process does, please see commit
> e065c9aa3e05 ("app/testpmd: fix secondary process packet forwarding").
>
> Fixes: 3c4426db54fc ("app/testpmd: do not poll stopped queues")
> Cc: [email protected]
>
> Signed-off-by: Jie Hai <[email protected]>
> ---
> v1->v2:
> 1. Fix misspelled word 'deferred'.
> 2. Fix incorrect format of reference to commits.
>
> v2->v3
> 1. Fix incorrect format of reference to commits.
Hi Jie,
Problem is not clear for me.
Can you please describe more what is not working?