numam-dpdk/examples/l3fwd
Timothy McDaniel 75d113136f eventdev: express DLB/DLB2 PMD constraints
This commit implements the eventdev ABI changes required by
the DLB/DLB2 PMDs.  Several data structures and constants are modified
or added in this patch, thereby requiring modifications to the
dependent apps and examples.

The DLB/DLB2 hardware does not conform exactly to the eventdev interface.
1) It has a limit on the number of queues that may be linked to a port.
2) Some ports a further restricted to a maximum of 1 linked queue.
3) DLB does not have the ability to carry the flow_id as part
   of the event (QE) payload. Note that the DLB2 hardware is capable of
   carrying the flow_id.

Following is a detailed description of the changes that have been made.

1) Add new fields to the rte_event_dev_info struct. These fields allow
the device to advertise its capabilities so that applications can take
the appropriate actions based on those capabilities.

    struct rte_event_dev_info {
	uint32_t max_event_port_links;
	/**< Maximum number of queues that can be linked to a single event
	 * port by this device.
	 */

	uint8_t max_single_link_event_port_queue_pairs;
	/**< Maximum number of event ports and queues that are optimized for
	 * (and only capable of) single-link configurations supported by this
	 * device. These ports and queues are not accounted for in
	 * max_event_ports or max_event_queues.
	 */
    }

2) Add a new field to the rte_event_dev_config struct. This field allows
the application to specify how many of its ports are limited to a single
link, or will be used in single link mode.

    /** Event device configuration structure */
    struct rte_event_dev_config {
	uint8_t nb_single_link_event_port_queues;
	/**< Number of event ports and queues that will be singly-linked to
	 * each other. These are a subset of the overall event ports and
	 * queues; this value cannot exceed *nb_event_ports* or
	 * *nb_event_queues*. If the device has ports and queues that are
	 * optimized for single-link usage, this field is a hint for how many
	 * to allocate; otherwise, regular event ports and queues can be used.
	 */
    }

3) Replace the dedicated implicit_release_disabled field with a bit field
of explicit port capabilities. The implicit_release_disable functionality
is assigned to one bit, and a port-is-single-link-only  attribute is
assigned to other, with the remaining bits available for future assignment.

	* Event port configuration bitmap flags */
	#define RTE_EVENT_PORT_CFG_DISABLE_IMPL_REL    (1ULL << 0)
	/**< Configure the port not to release outstanding events in
	 * rte_event_dev_dequeue_burst(). If set, all events received through
	 * the port must be explicitly released with RTE_EVENT_OP_RELEASE or
	 * RTE_EVENT_OP_FORWARD. Must be unset if the device is not
	 * RTE_EVENT_DEV_CAP_IMPLICIT_RELEASE_DISABLE capable.
	 */
	#define RTE_EVENT_PORT_CFG_SINGLE_LINK         (1ULL << 1)

	/**< This event port links only to a single event queue.
	 *
	 *  @see rte_event_port_setup(), rte_event_port_link()
	 */

	#define RTE_EVENT_PORT_ATTR_IMPLICIT_RELEASE_DISABLE 3
	/**
	 * The implicit release disable attribute of the port
	 */

	struct rte_event_port_conf {
		uint32_t event_port_cfg;
		/**< Port cfg flags(EVENT_PORT_CFG_) */
	}

This patch also removes the depreciation notice and announce
the new eventdev ABI changes in release note.

Signed-off-by: Timothy McDaniel <timothy.mcdaniel@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
2020-10-15 23:16:07 +02:00
..
l3fwd_altivec.h net: add rte prefix to IP structure 2019-05-24 13:34:46 +02:00
l3fwd_common.h net: add rte prefix to IP structure 2019-05-24 13:34:46 +02:00
l3fwd_em_hlm_neon.h net: add rte prefix to IP structure 2019-05-24 13:34:46 +02:00
l3fwd_em_hlm_sse.h net: add rte prefix to IP structure 2019-05-24 13:34:46 +02:00
l3fwd_em_hlm.h build: remove deprecated cpuflag macros 2020-09-25 11:13:57 +02:00
l3fwd_em_sequential.h build: remove deprecated cpuflag macros 2020-09-25 11:13:57 +02:00
l3fwd_em.c build: remove deprecated cpuflag macros 2020-09-25 11:13:57 +02:00
l3fwd_em.h examples/l3fwd: add event em main loop 2020-01-28 10:05:19 +01:00
l3fwd_event_generic.c eventdev: express DLB/DLB2 PMD constraints 2020-10-15 23:16:07 +02:00
l3fwd_event_internal_port.c eventdev: express DLB/DLB2 PMD constraints 2020-10-15 23:16:07 +02:00
l3fwd_event.c examples/l3fwd: fix error checking 2020-05-01 19:37:17 +02:00
l3fwd_event.h examples/l3fwd: add event lpm main loop 2020-01-28 10:05:16 +01:00
l3fwd_lpm_altivec.h net: add rte prefix to IP structure 2019-05-24 13:34:46 +02:00
l3fwd_lpm_neon.h net: add rte prefix to IP structure 2019-05-24 13:34:46 +02:00
l3fwd_lpm_sse.h net: add rte prefix to IP structure 2019-05-24 13:34:46 +02:00
l3fwd_lpm.c build: remove deprecated cpuflag macros 2020-09-25 11:13:57 +02:00
l3fwd_lpm.h net: add rte prefix to IP structure 2019-05-24 13:34:46 +02:00
l3fwd_neon.h net: add rte prefix to IP structure 2019-05-24 13:34:46 +02:00
l3fwd_sse.h net: add rte prefix to IP structure 2019-05-24 13:34:46 +02:00
l3fwd.h build: remove deprecated cpuflag macros 2020-09-25 11:13:57 +02:00
main.c examples: use new link status print format 2020-09-21 18:05:38 +02:00
Makefile examples: use new link status print format 2020-09-21 18:05:38 +02:00
meson.build ethdev: add tracepoints 2020-04-23 15:40:06 +02:00