On Thu, May 2, 2024 at 1:16 AM Abdullah Sevincer
<abdullah.sevin...@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.sevin...@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);

Reply via email to