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);