On Thu, Jun 20, 2024 at 2:37 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. > > Signed-off-by: Abdullah Sevincer <abdullah.sevin...@intel.com>
> > +/** Set inflight threshold for flow migration */ > +#define RTE_PMD_DLB2_FLOW_MIGRATION_THRESHOLD RTE_BIT64(0) > + > +/** Set port history list */ > +#define RTE_PMD_DLB2_SET_PORT_HL RTE_BIT64(1) > + Missing Doxygen comment > +struct rte_pmd_dlb2_port_params { > + uint16_t inflight_threshold : 12; Missing Doxygen comment > +}; > + > +/*! > + * @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 params > + * Structure coantaining the values of parameters being set. > + * > + * @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_params(uint8_t dev_id, > + uint8_t port_id, > + uint64_t flags, > + struct rte_pmd_dlb2_port_params *params); > +