[dpdk-dev] [PATCH] examples/eventdev_pipeline: add Tx adapter support
Rao, Nikhil
nikhil.rao at intel.com
Thu Sep 20 04:18:45 CEST 2018
On 9/19/2018 4:12 PM, Pavan Nikhilesh wrote:
> On Wed, Sep 19, 2018 at 08:24:01AM +0530, Rao, Nikhil wrote:
>> On 9/5/2018 7:15 PM, Pavan Nikhilesh wrote:
>>> Signed-off-by: Pavan Nikhilesh <pbhagavatula at caviumnetworks.com>
>>> ---
>>> This patch depends on the following series:
>>> http://patches.dpdk.org/project/dpdk/list/?series=1121
>>>
>>> examples/eventdev_pipeline/main.c | 62 ++--
>>> examples/eventdev_pipeline/pipeline_common.h | 31 +-
>>> .../pipeline_worker_generic.c | 273 +++++-------------
>>> .../eventdev_pipeline/pipeline_worker_tx.c | 130 +++++----
>>> 4 files changed, 186 insertions(+), 310 deletions(-)
>>>
>>> diff --git a/examples/eventdev_pipeline/main.c b/examples/eventdev_pipeline/main.c
>>> index 700bc696f..95531150b 100644
>>> --- a/examples/eventdev_pipeline/main.c
>>> +++ b/examples/eventdev_pipeline/main.c
>>>
>>>
>> </snip>
>>
>>> static void
>>> do_capability_setup(uint8_t eventdev_id)
>>> {
>>> + int ret;
>>> uint16_t i;
>>> - uint8_t mt_unsafe = 0;
>>> + uint8_t generic_pipeline = 0;
>>> uint8_t burst = 0;
>>>
>>> RTE_ETH_FOREACH_DEV(i) {
>>> - struct rte_eth_dev_info dev_info;
>>> - memset(&dev_info, 0, sizeof(struct rte_eth_dev_info));
>>> -
>>> - rte_eth_dev_info_get(i, &dev_info);
>>> - /* Check if it is safe ask worker to tx. */
>>> - mt_unsafe |= !(dev_info.tx_offload_capa &
>>> - DEV_TX_OFFLOAD_MT_LOCKFREE);
>>> + uint32_t caps = 0;
>>> +
>>> + ret = rte_event_eth_tx_adapter_caps_get(eventdev_id, i, &caps);
>>> + if (ret)
>>> + rte_exit(EXIT_FAILURE,
>>> + "Invalid capability for Tx adptr port %d\n", i);
>>> + generic_pipeline |= !(caps &
>>> + RTE_EVENT_ETH_TX_ADAPTER_CAP_INTERNAL_PORT);
>>> }
>>>
>>> struct rte_event_dev_info eventdev_info;
>>> @@ -406,10 +386,10 @@ do_capability_setup(uint8_t eventdev_id)
>>> burst = eventdev_info.event_dev_cap & RTE_EVENT_DEV_CAP_BURST_MODE ? 1 :
>>> 0;
>>>
>>> - if (mt_unsafe)
>>> + if (generic_pipeline)
>>> set_worker_generic_setup_data(&fdata->cap, burst);
>>> else
>>> - set_worker_tx_setup_data(&fdata->cap, burst);
>>> + set_worker_tx_enq_setup_data(&fdata->cap, burst);
>>> }
>>
>> The generic_pipeline flag is set here and therefore, aren't the
>> subsequent checks in generic_opt_check() and worker_tx_enq_opt_check()
>> redundant ?
>
> The checks inside generic_opt_check, worker_tx_enq_opt_check are still required
> as different eventdevs opdl, DSW, dpaa, sw, octeontx might have different
> capabilities.
I should have mentioned in the previous reply, the checks was I
referring to were the checks for the
RTE_EVENT_ETH_TX_ADAPTER_CAP_INTERNAL_PORT flag.
Also, on second reading, I noticed these checks had
RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT not
RTE_EVENT_ETH_TX_ADAPTER_CAP_INTERNAL_PORT.
Thanks,
Nikhil
More information about the dev
mailing list