[PATCH v4 1/3] event/dlb2: add support for HW delayed token
Jerin Jacob
jerinjacobk at gmail.com
Mon May 27 17:19:51 CEST 2024
On Thu, May 2, 2024 at 1:16 AM Abdullah Sevincer
<abdullah.sevincer at intel.com> wrote:
>
> In DLB 2.5, hardware assist is available, complementing the Delayed
> token POP software implementation. When it is enabled, the feature
> works as follows:
>
> It stops CQ scheduling when the inflight limit associated with the CQ
> is reached. So the feature is activated only if the core is
> congested. If the core can handle multiple atomic flows, DLB will not
> try to switch them. This is an improvement over SW implementation
> which always switches the flows.
>
> The feature will resume CQ scheduling when the number of pending
> completions fall below a configured threshold. To emulate older 2.0
> behavior, this threshold is set to 1 by old APIs. SW sets CQ to
> auto-pop mode for token return, as tokens withholding is not
> necessary now. As HW counts completions and not tokens, events equal
> to HL (History List) entries will be scheduled to DLB before the
> feature activates and stops CQ scheduling.
1) Also tell about adding new PMD API and update the release notes for
PMD section for new feature.
2) Fix CI http://mails.dpdk.org/archives/test-report/2024-May/657681.html
>
> Signed-off-by: Abdullah Sevincer <abdullah.sevincer at intel.com>
+/** Set inflight threshold for flow migration */
> +#define DLB2_FLOW_MIGRATION_THRESHOLD RTE_BIT64(0)
Fix the namespace for public API, RTE_PMD_DLB2_PORT_SET_F_FLOW_MIGRATION_...
> +
> +/** Set port history list */
> +#define DLB2_SET_PORT_HL RTE_BIT64(1)
RTE_PMD_DLB2_PORT_SET_F_PORT_HL
> +
> +struct dlb2_port_param {
fix name space, rte_pmd_dlb2_port_params
> + uint16_t inflight_threshold : 12;
> +};
> +
> +/*!
> + * @warning
> + * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
> + *
> + * Configure various port parameters.
> + * AUTO_POP. This function must be called before calling rte_event_port_setup()
> + * for the port, but after calling rte_event_dev_configure().
> + *
> + * @param dev_id
> + * The identifier of the event device.
> + * @param port_id
> + * The identifier of the event port.
> + * @param flags
> + * Bitmask of the parameters being set.
> + * @param val
> + * Structure coantaining the values of parameters being set.
Why not use struct rte_pmd_dlb2_port_params itself instead of void *.
> + *
> + * @return
> + * - 0: Success
> + * - EINVAL: Invalid dev_id, port_id, or mode
> + * - EINVAL: The DLB2 is not configured, is already running, or the port is
> + * already setup
> + */
> +__rte_experimental
> +int
> +rte_pmd_dlb2_set_port_param(uint8_t dev_id,
> + uint8_t port_id,
> + uint64_t flags,
> + void *val);
More information about the dev
mailing list