|
Revision tags: v22.03, v22.03-rc4, v22.03-rc3, v22.03-rc2 |
|
| #
13cd6d5c |
| 23-Feb-2022 |
Alexander Kozyrev <[email protected]> |
ethdev: bring in async indirect actions operations
Queue-based flow rules management mechanism is suitable not only for flow rules creation/destruction, but also for speeding up other types of Flow
ethdev: bring in async indirect actions operations
Queue-based flow rules management mechanism is suitable not only for flow rules creation/destruction, but also for speeding up other types of Flow API management. Indirect action object operations may be executed asynchronously as well. Provide async versions for all indirect action operations, namely: rte_flow_async_action_handle_create, rte_flow_async_action_handle_destroy and rte_flow_async_action_handle_update.
Signed-off-by: Alexander Kozyrev <[email protected]> Acked-by: Ori Kam <[email protected]> Acked-by: Andrew Rybchenko <[email protected]>
show more ...
|
| #
197e820c |
| 23-Feb-2022 |
Alexander Kozyrev <[email protected]> |
ethdev: bring in async queue-based flow rules operations
A new, faster, queue-based flow rules management mechanism is needed for applications offloading rules inside the datapath. This asynchronous
ethdev: bring in async queue-based flow rules operations
A new, faster, queue-based flow rules management mechanism is needed for applications offloading rules inside the datapath. This asynchronous and lockless mechanism frees the CPU for further packet processing and reduces the performance impact of the flow rules creation/destruction on the datapath. Note that queues are not thread-safe and the queue should be accessed from the same thread for all queue operations. It is the responsibility of the app to sync the queue functions in case of multi-threaded access to the same queue.
The rte_flow_async_create() function enqueues a flow creation to the requested queue. It benefits from already configured resources and sets unique values on top of item and action templates. A flow rule is enqueued on the specified flow queue and offloaded asynchronously to the hardware. The function returns immediately to spare CPU for further packet processing. The application must invoke the rte_flow_pull() function to complete the flow rule operation offloading, to clear the queue, and to receive the operation status. The rte_flow_async_destroy() function enqueues a flow destruction to the requested queue.
Signed-off-by: Alexander Kozyrev <[email protected]> Acked-by: Ori Kam <[email protected]> Acked-by: Andrew Rybchenko <[email protected]>
show more ...
|
| #
f076bcfb |
| 23-Feb-2022 |
Alexander Kozyrev <[email protected]> |
ethdev: add flow item/action templates
Treating every single flow rule as a completely independent and separate entity negatively impacts the flow rules insertion rate. Oftentimes in an application,
ethdev: add flow item/action templates
Treating every single flow rule as a completely independent and separate entity negatively impacts the flow rules insertion rate. Oftentimes in an application, many flow rules share a common structure (the same item mask and/or action list) so they can be grouped and classified together. This knowledge may be used as a source of optimization by a PMD/HW.
The pattern template defines common matching fields (the item mask) without values. The actions template holds a list of action types that will be used together in the same rule. The specific values for items and actions will be given only during the rule creation.
A table combines pattern and actions templates along with shared flow rule attributes (group ID, priority and traffic direction). This way a PMD/HW can prepare all the resources needed for efficient flow rules creation in the datapath. To avoid any hiccups due to memory reallocation, the maximum number of flow rules is defined at the table creation time.
The flow rule creation is done by selecting a table, a pattern template and an actions template (which are bound to the table), and setting unique values for the items and actions.
Signed-off-by: Alexander Kozyrev <[email protected]> Acked-by: Ori Kam <[email protected]> Acked-by: Andrew Rybchenko <[email protected]>
show more ...
|
| #
4ff58b73 |
| 23-Feb-2022 |
Alexander Kozyrev <[email protected]> |
ethdev: introduce flow engine configuration
The flow rules creation/destruction at a large scale incurs a performance penalty and may negatively impact the packet processing when used as part of the
ethdev: introduce flow engine configuration
The flow rules creation/destruction at a large scale incurs a performance penalty and may negatively impact the packet processing when used as part of the datapath logic. This is mainly because software/hardware resources are allocated and prepared during the flow rule creation.
In order to optimize the insertion rate, PMD may use some hints provided by the application at the initialization phase. The rte_flow_configure() function allows to pre-allocate all the needed resources beforehand. These resources can be used at a later stage without costly allocations. Every PMD may use only the subset of hints and ignore unused ones or fail in case the requested configuration is not supported.
The rte_flow_info_get() is available to retrieve the information about supported pre-configurable resources. Both these functions must be called before any other usage of the flow API engine.
Signed-off-by: Alexander Kozyrev <[email protected]> Acked-by: Ori Kam <[email protected]> Reviewed-by: Andrew Rybchenko <[email protected]>
show more ...
|
|
Revision tags: v22.03-rc1 |
|
| #
a41f593f |
| 11-Feb-2022 |
Ferruh Yigit <[email protected]> |
ethdev: introduce generic dummy packet burst function
Multiple PMDs have dummy/noop Rx/Tx packet burst functions.
These dummy functions are very simple, introduce a common function in the ethdev an
ethdev: introduce generic dummy packet burst function
Multiple PMDs have dummy/noop Rx/Tx packet burst functions.
These dummy functions are very simple, introduce a common function in the ethdev and update drivers to use it instead of each driver having its own functions.
Signed-off-by: Ferruh Yigit <[email protected]> Acked-by: Morten Brørup <[email protected]> Acked-by: Viacheslav Ovsiienko <[email protected]> Acked-by: Thomas Monjalon <[email protected]>
show more ...
|
| #
edcf22c6 |
| 11-Feb-2022 |
Min Hu (Connor) <[email protected]> |
ethdev: introduce dump API
Added the ethdev dump API which provides querying private info from device. There exists many private properties in different PMD drivers, such as adapter state, Rx/Tx fun
ethdev: introduce dump API
Added the ethdev dump API which provides querying private info from device. There exists many private properties in different PMD drivers, such as adapter state, Rx/Tx func algorithm in hns3 PMD. The information of these properties is important for debug. As the information is private, the new API is introduced.
Signed-off-by: Min Hu (Connor) <[email protected]> Acked-by: Morten Brørup <[email protected]> Acked-by: Ray Kinsella <[email protected]> Acked-by: Ajit Khaparde <[email protected]> Acked-by: Ferruh Yigit <[email protected]>
show more ...
|
| #
3c059b2c |
| 08-Feb-2022 |
Akhil Goyal <[email protected]> |
ethdev: add mbuf dynfield for incomplete IP reassembly
Hardware IP reassembly may be incomplete for multiple reasons like reassembly timeout reached, duplicate fragments, etc. To save application cy
ethdev: add mbuf dynfield for incomplete IP reassembly
Hardware IP reassembly may be incomplete for multiple reasons like reassembly timeout reached, duplicate fragments, etc. To save application cycles to process these packets again, a new mbuf dynflag is added to show that the mbuf received is not reassembled properly.
Now if this dynflag is set, application can retrieve corresponding chain of mbufs using mbuf dynfield set by the PMD. Now, it will be up to application to either drop those fragments or wait for more time.
Signed-off-by: Akhil Goyal <[email protected]>
show more ...
|
| #
a75ab6e5 |
| 08-Feb-2022 |
Akhil Goyal <[email protected]> |
ethdev: introduce IP reassembly offload
IP Reassembly is a costly operation if it is done in software. The operation becomes even more costlier if IP fragments are encrypted. However, if it is offlo
ethdev: introduce IP reassembly offload
IP Reassembly is a costly operation if it is done in software. The operation becomes even more costlier if IP fragments are encrypted. However, if it is offloaded to HW, it can considerably save application cycles.
Hence, a new offload feature is exposed in eth_dev ops for devices which can attempt IP reassembly of packets in hardware. - rte_eth_ip_reassembly_capability_get() - to get the maximum values of reassembly configuration which can be set. - rte_eth_ip_reassembly_conf_set() - to set IP reassembly configuration and to enable the feature in the PMD (to be called before rte_eth_dev_start()). - rte_eth_ip_reassembly_conf_get() - to get the current configuration set in PMD.
Now when the offload is enabled using rte_eth_ip_reassembly_conf_set(), the resulting reassembled IP packet would be a typical segmented mbuf in case of success.
And if reassembly of IP fragments is failed or is incomplete (if fragments do not come before the reass_timeout, overlap, etc), the mbuf dynamic flags can be updated by the PMD. This is updated in a subsequent patch.
Signed-off-by: Akhil Goyal <[email protected]>
show more ...
|
| #
0de345e9 |
| 08-Feb-2022 |
Jerin Jacob <[email protected]> |
ethdev: support queue-based priority flow control
Based on device support and use-case need, there are two different ways to enable PFC. The first case is the port level PFC configuration, in this c
ethdev: support queue-based priority flow control
Based on device support and use-case need, there are two different ways to enable PFC. The first case is the port level PFC configuration, in this case, rte_eth_dev_priority_flow_ctrl_set() API shall be used to configure the PFC, and PFC frames will be generated using based on VLAN TC value.
The second case is the queue level PFC configuration, in this case, Any packet field content can be used to steer the packet to the specific queue using rte_flow or RSS and then use rte_eth_dev_priority_flow_ctrl_queue_configure() to configure the TC mapping on each queue. Based on congestion selected on the specific queue, configured TC shall be used to generate PFC frames.
Signed-off-by: Jerin Jacob <[email protected]> Signed-off-by: Sunil Kumar Kori <[email protected]> Reviewed-by: Ferruh Yigit <[email protected]>
show more ...
|
| #
961fb402 |
| 31-Jan-2022 |
Kumara Parameshwaran <[email protected]> |
ethdev: add internal function to device struct from name
The PMDs would need a function to access the rte_eth_devices without accessing the global rte_eth_device array.
Cc: [email protected]
Signed-
ethdev: add internal function to device struct from name
The PMDs would need a function to access the rte_eth_devices without accessing the global rte_eth_device array.
Cc: [email protected]
Signed-off-by: Kumara Parameshwaran <[email protected]> Reviewed-by: Ferruh Yigit <[email protected]>
show more ...
|
|
Revision tags: v21.11, v21.11-rc4, v21.11-rc3, v21.11-rc2 |
|
| #
285725d9 |
| 28-Oct-2021 |
Thomas Monjalon <[email protected]> |
ethdev: promote device removal check function as stable
The function rte_eth_dev_is_removed() was introduced in DPDK 18.02, and is integrated in error checks of ethdev library.
It is promoted as st
ethdev: promote device removal check function as stable
The function rte_eth_dev_is_removed() was introduced in DPDK 18.02, and is integrated in error checks of ethdev library.
It is promoted as stable ABI.
Signed-off-by: Thomas Monjalon <[email protected]> Acked-by: Ray Kinsella <[email protected]> Acked-by: Andrew Rybchenko <[email protected]> Acked-by: Ferruh Yigit <[email protected]>
show more ...
|
|
Revision tags: v21.11-rc1 |
|
| #
93e441c9 |
| 21-Oct-2021 |
Xueming Li <[email protected]> |
ethdev: get device capability name as string
This patch adds API to return name of device capability.
Signed-off-by: Xueming Li <[email protected]> Reviewed-by: Andrew Rybchenko <andrew.rybchenko
ethdev: get device capability name as string
This patch adds API to return name of device capability.
Signed-off-by: Xueming Li <[email protected]> Reviewed-by: Andrew Rybchenko <[email protected]> Acked-by: Ajit Khaparde <[email protected]> Acked-by: Thomas Monjalon <[email protected]>
show more ...
|
| #
dc4d860e |
| 20-Oct-2021 |
Viacheslav Ovsiienko <[email protected]> |
ethdev: introduce configurable flexible item
1. Introduction and Retrospective
Nowadays the networks are evolving fast and wide, the network structures are getting more and more complicated, the ne
ethdev: introduce configurable flexible item
1. Introduction and Retrospective
Nowadays the networks are evolving fast and wide, the network structures are getting more and more complicated, the new application areas are emerging. To address these challenges the new network protocols are continuously being developed, considered by technical communities, adopted by industry and, eventually implemented in hardware and software. The DPDK framework follows the common trends and if we bother to glance at the RTE Flow API header we see the multiple new items were introduced during the last years since the initial release.
The new protocol adoption and implementation process is not straightforward and takes time, the new protocol passes development, consideration, adoption, and implementation phases. The industry tries to mitigate and address the forthcoming network protocols, for example, many hardware vendors are implementing flexible and configurable network protocol parsers. As DPDK developers, could we anticipate the near future in the same fashion and introduce the similar flexibility in RTE Flow API?
Let's check what we already have merged in our project, and we see the nice raw item (rte_flow_item_raw). At the first glance, it looks superior and we can try to implement a flow matching on the header of some relatively new tunnel protocol, say on the GENEVE header with variable length options. And, under further consideration, we run into the raw item limitations:
- only fixed size network header can be represented - the entire network header pattern of fixed format (header field offsets are fixed) must be provided - the search for patterns is not robust (the wrong matches might be triggered), and actually is not supported by existing PMDs - no explicitly specified relations with preceding and following items - no tunnel hint support
As the result, implementing the support for tunnel protocols like aforementioned GENEVE with variable extra protocol option with flow raw item becomes very complicated and would require multiple flows and multiple raw items chained in the same flow (by the way, there is no support found for chained raw items in implemented drivers).
This RFC introduces the dedicated flex item (rte_flow_item_flex) to handle matches with existing and new network protocol headers in a unified fashion.
2. Flex Item Life Cycle
Let's assume there are the requirements to support the new network protocol with RTE Flows. What is given within protocol specification:
- header format - header length, (can be variable, depending on options) - potential presence of extra options following or included in the header the header - the relations with preceding protocols. For example, the GENEVE follows UDP, eCPRI can follow either UDP or L2 header - the relations with following protocols. For example, the next layer after tunnel header can be L2 or L3 - whether the new protocol is a tunnel and the header is a splitting point between outer and inner layers
The supposed way to operate with flex item:
- application defines the header structures according to protocol specification
- application calls rte_flow_flex_item_create() with desired configuration according to the protocol specification, it creates the flex item object over specified ethernet device and prepares PMD and underlying hardware to handle flex item. On item creation call PMD backing the specified ethernet device returns the opaque handle identifying the object has been created
- application uses the rte_flow_item_flex with obtained handle in the flows, the values/masks to match with fields in the header are specified in the flex item per flow as for regular items (except that pattern buffer combines all fields)
- flows with flex items match with packets in a regular fashion, the values and masks for the new protocol header match are taken from the flex items in the flows
- application destroys flows with flex items
- application calls rte_flow_flex_item_release() as part of ethernet device API and destroys the flex item object in PMD and releases the engaged hardware resources
3. Flex Item Structure
The flex item structure is intended to be used as part of the flow pattern like regular RTE flow items and provides the mask and value to match with fields of the protocol item was configured for.
struct rte_flow_item_flex { void *handle; uint32_t length; const uint8_t* pattern; };
The handle is some opaque object maintained on per device basis by underlying driver.
The protocol header fields are considered as bit fields, all offsets and widths are expressed in bits. The pattern is the buffer containing the bit concatenation of all the fields presented at item configuration time, in the same order and same amount. If byte boundary alignment is needed an application can use a dummy type field, this is just some kind of gap filler.
The length field specifies the pattern buffer length in bytes and is needed to allow rte_flow_copy() operations. The approach of multiple pattern pointers and lengths (per field) was considered and found clumsy - it seems to be much suitable for the application to maintain the single structure within the single pattern buffer.
4. Flex Item Configuration
The flex item configuration consists of the following parts:
- header field descriptors: - next header - next protocol - sample to match - input link descriptors - output link descriptors
The field descriptors tell the driver and hardware what data should be extracted from the packet and then control the packet handling in the flow engine. Besides this, sample fields can be presented to match with patterns in the flows. Each field is a bit pattern. It has width, offset from the header beginning, mode of offset calculation, and offset related parameters.
The next header field is special, no data are actually taken from the packet, but its offset is used as a pointer to the next header in the packet, in other words the next header offset specifies the size of the header being parsed by flex item.
There is one more special field - next protocol, it specifies where the next protocol identifier is contained and packet data sampled from this field will be used to determine the next protocol header type to continue packet parsing. The next protocol field is like eth_type field in MAC2, or proto field in IPv4/v6 headers.
The sample fields are used to represent the data be sampled from the packet and then matched with established flows.
There are several methods supposed to calculate field offset in runtime depending on configuration and packet content:
- FIELD_MODE_FIXED - fixed offset. The bit offset from header beginning is permanent and defined by field_base configuration parameter.
- FIELD_MODE_OFFSET - the field bit offset is extracted from other header field (indirect offset field). The resulting field offset to match is calculated from as:
field_base + (*offset_base & offset_mask) << offset_shift
This mode is useful to sample some extra options following the main header with field containing main header length. Also, this mode can be used to calculate offset to the next protocol header, for example - IPv4 header contains the 4-bit field with IPv4 header length expressed in dwords. One more example - this mode would allow us to skip GENEVE header variable length options.
- FIELD_MODE_BITMASK - the field bit offset is extracted from other header field (indirect offset field), the latter is considered as bitmask containing some number of one bits, the resulting field offset to match is calculated as:
field_base + bitcount(*offset_base & offset_mask) << offset_shift
This mode would be useful to skip the GTP header and its extra options with specified flags.
- FIELD_MODE_DUMMY - dummy field, optionally used for byte boundary alignment in pattern. Pattern mask and data are ignored in the match. All configuration parameters besides field size and offset are ignored.
Note: "*" - means the indirect field offset is calculated and actual data are extracted from the packet by this offset (like data are fetched by pointer *p from memory).
The offset mode list can be extended by vendors according to hardware supported options.
The input link configuration section tells the driver after what protocols and at what conditions the flex item can follow. Input link specified the preceding header pattern, for example for GENEVE it can be UDP item specifying match on destination port with value 6081. The flex item can follow multiple header types and multiple input links should be specified. At flow creation time the item with one of the input link types should precede the flex item and driver will select the correct flex item settings, depending on the actual flow pattern.
The output link configuration section tells the driver how to continue packet parsing after the flex item protocol. If multiple protocols can follow the flex item header the flex item should contain the field with the next protocol identifier and the parsing will be continued depending on the data contained in this field in the actual packet.
The flex item fields can participate in RSS hash calculation, the dedicated flag is present in the field description to specify what fields should be provided for hashing.
5. Flex Item Chaining
If there are multiple protocols supposed to be supported with flex items in chained fashion - two or more flex items within the same flow and these ones might be neighbors in the pattern, it means the flex items are mutual referencing. In this case, the item that occurred first should be created with empty output link list or with the list including existing items, and then the second flex item should be created referencing the first flex item as input arc, drivers should adjust the item configuration.
Also, the hardware resources used by flex items to handle the packet can be limited. If there are multiple flex items that are supposed to be used within the same flow it would be nice to provide some hint for the driver that these two or more flex items are intended for simultaneous usage. The fields of items should be assigned with hint indices and these indices from two or more flex items supposed to be provided within the same flow should be the same as well. In other words, the field hint index specifies the group of fields that can be matched simultaneously within a single flow. If hint indices are specified, the driver will try to engage not overlapping hardware resources and provide independent handling of the field groups with unique indices. If the hint index is zero the driver assigns resources on its own.
6. Example of New Protocol Handling
Let's suppose we have the requirements to handle the new tunnel protocol that follows UDP header with destination port 0xFADE and is followed by MAC header. Let the new protocol header format be like this:
struct new_protocol_header { rte_be32 header_length; /* length in dwords, including options */ rte_be32 specific0; /* some protocol data, no intention */ rte_be32 specific1; /* to match in flows on these fields */ rte_be32 crucial; /* data of interest, match is needed */ rte_be32 options[0]; /* optional protocol data, variable length */ };
The supposed flex item configuration:
struct rte_flow_item_flex_field field0 = { .field_mode = FIELD_MODE_DUMMY, /* Affects match pattern only */ .field_size = 96, /* three dwords from the beginning */ }; struct rte_flow_item_flex_field field1 = { .field_mode = FIELD_MODE_FIXED, .field_size = 32, /* Field size is one dword */ .field_base = 96, /* Skip three dwords from the beginning */ }; struct rte_flow_item_udp spec0 = { .hdr = { .dst_port = RTE_BE16(0xFADE), } }; struct rte_flow_item_udp mask0 = { .hdr = { .dst_port = RTE_BE16(0xFFFF), } }; struct rte_flow_item_flex_link link0 = { .item = { .type = RTE_FLOW_ITEM_TYPE_UDP, .spec = &spec0, .mask = &mask0, };
struct rte_flow_item_flex_conf conf = { .next_header = { .tunnel = FLEX_TUNNEL_MODE_SINGLE, .field_mode = FIELD_MODE_OFFSET, .field_base = 0, .offset_base = 0, .offset_mask = 0xFFFFFFFF, .offset_shift = 2 /* Expressed in dwords, shift left by 2 */ }, .sample = { &field0, &field1, }, .nb_samples = 2, .input_link[0] = &link0, .nb_inputs = 1 };
Let's suppose we have created the flex item successfully, and PMD returned the handle 0x123456789A. We can use the following item pattern to match the crucial field in the packet with value 0x00112233:
struct new_protocol_header spec_pattern = { .crucial = RTE_BE32(0x00112233), }; struct new_protocol_header mask_pattern = { .crucial = RTE_BE32(0xFFFFFFFF), }; struct rte_flow_item_flex spec_flex = { .handle = 0x123456789A .length = sizeiof(struct new_protocol_header), .pattern = &spec_pattern, }; struct rte_flow_item_flex mask_flex = { .length = sizeof(struct new_protocol_header), .pattern = &mask_pattern, }; struct rte_flow_item item_to_match = { .type = RTE_FLOW_ITEM_TYPE_FLEX, .spec = &spec_flex, .mask = &mask_flex, };
Signed-off-by: Viacheslav Ovsiienko <[email protected]> Acked-by: Ori Kam <[email protected]>
show more ...
|
| #
632be327 |
| 14-Oct-2021 |
Jie Wang <[email protected]> |
ethdev: add API to get device configuration
The driver may change offloads info into dev->data->dev_conf in dev_configure which may cause apps use outdated values.
Add a new API to get actual devic
ethdev: add API to get device configuration
The driver may change offloads info into dev->data->dev_conf in dev_configure which may cause apps use outdated values.
Add a new API to get actual device configuration.
Signed-off-by: Jie Wang <[email protected]> Acked-by: Andrew Rybchenko <[email protected]> Reviewed-by: Ferruh Yigit <[email protected]>
show more ...
|
| #
1179f05c |
| 14-Oct-2021 |
Ivan Malov <[email protected]> |
ethdev: query proxy port to manage transfer flows
Not all DPDK ports in a given switching domain may have the privilege to manage "transfer" flows. Add an API to find a port with sufficient privileg
ethdev: query proxy port to manage transfer flows
Not all DPDK ports in a given switching domain may have the privilege to manage "transfer" flows. Add an API to find a port with sufficient privileges by any port in the domain.
Signed-off-by: Ivan Malov <[email protected]> Reviewed-by: Andrew Rybchenko <[email protected]> Acked-by: Ori Kam <[email protected]>
show more ...
|
| #
f9bdee26 |
| 13-Oct-2021 |
Konstantin Ananyev <[email protected]> |
ethdev: hide internal structures
Move rte_eth_dev, rte_eth_dev_data, rte_eth_rxtx_callback and related data into private header (ethdev_driver.h). Few minor changes to keep DPDK building after that.
ethdev: hide internal structures
Move rte_eth_dev, rte_eth_dev_data, rte_eth_rxtx_callback and related data into private header (ethdev_driver.h). Few minor changes to keep DPDK building after that.
Signed-off-by: Konstantin Ananyev <[email protected]> Acked-by: Andrew Rybchenko <[email protected]> Reviewed-by: Ferruh Yigit <[email protected]> Tested-by: Feifei Wang <[email protected]>
show more ...
|
| #
27a300e6 |
| 13-Oct-2021 |
Konstantin Ananyev <[email protected]> |
ethdev: add API to retrieve multiple MAC addresses
Introduce rte_eth_macaddrs_get() to allow user to retrieve all ethernet addresses assigned to given port. Change testpmd to use this new function a
ethdev: add API to retrieve multiple MAC addresses
Introduce rte_eth_macaddrs_get() to allow user to retrieve all ethernet addresses assigned to given port. Change testpmd to use this new function and avoid referencing directly rte_eth_devices[].
Signed-off-by: Konstantin Ananyev <[email protected]> Reviewed-by: Andrew Rybchenko <[email protected]> Reviewed-by: Ferruh Yigit <[email protected]> Tested-by: Feifei Wang <[email protected]>
show more ...
|
| #
7a093523 |
| 13-Oct-2021 |
Konstantin Ananyev <[email protected]> |
ethdev: make fast-path functions to use new flat array
Rework fast-path ethdev functions to use rte_eth_fp_ops[]. While it is an API/ABI breakage, this change is intended to be transparent for both
ethdev: make fast-path functions to use new flat array
Rework fast-path ethdev functions to use rte_eth_fp_ops[]. While it is an API/ABI breakage, this change is intended to be transparent for both users (no changes in user app is required) and PMD developers (no changes in PMD is required). One extra thing to note - RX/TX callback invocation will cause extra function call with these changes. That might cause some insignificant slowdown for code-path where RX/TX callbacks are heavily involved.
Signed-off-by: Konstantin Ananyev <[email protected]> Reviewed-by: Ferruh Yigit <[email protected]> Tested-by: Feifei Wang <[email protected]>
show more ...
|
| #
f6d8a6d3 |
| 12-Oct-2021 |
Ivan Malov <[email protected]> |
ethdev: negotiate delivery of packet metadata from HW to PMD
Provide an API to let the application control the NIC's ability to deliver specific kinds of per-packet metadata to the PMD.
Checks for
ethdev: negotiate delivery of packet metadata from HW to PMD
Provide an API to let the application control the NIC's ability to deliver specific kinds of per-packet metadata to the PMD.
Checks for the NIC's ability to set these kinds of metadata in the first place (support for the flow actions) belong in flow API responsibility domain (flow validate mechanism). This topic is out of scope of the new API in question.
The PMD's ability to deliver received metadata to the user by virtue of mbuf fields should be covered by mbuf library. It is also out of scope of the new API in question.
Signed-off-by: Ivan Malov <[email protected]> Reviewed-by: Andrew Rybchenko <[email protected]> Reviewed-by: Andy Moreton <[email protected]> Acked-by: Ray Kinsella <[email protected]> Acked-by: Jerin Jacob <[email protected]> Acked-by: Ajit Khaparde <[email protected]> Acked-by: Somnath Kotur <[email protected]> Acked-by: Ori Kam <[email protected]> Acked-by: Wisam Jaddo <[email protected]>
show more ...
|
| #
b225783d |
| 29-Sep-2021 |
Andrew Rybchenko <[email protected]> |
ethdev: remove legacy mirroring API
A more fine-grain flow API action RTE_FLOW_ACTION_TYPE_SAMPLE should be used instead of it.
Signed-off-by: Andrew Rybchenko <[email protected]> Acked
ethdev: remove legacy mirroring API
A more fine-grain flow API action RTE_FLOW_ACTION_TYPE_SAMPLE should be used instead of it.
Signed-off-by: Andrew Rybchenko <[email protected]> Acked-by: Thomas Monjalon <[email protected]> Acked-by: Jerin Jacob <[email protected]> Acked-by: Haiyue Wang <[email protected]> Reviewed-by: Ferruh Yigit <[email protected]>
show more ...
|
| #
b37ed6de |
| 06-Sep-2021 |
David Marchand <[email protected]> |
ethdev: promote sibling iterators to stable
This API saw no update since its introduction and will help applications like OVS ([1] and [2]) that currently look at rte_eth_devices[] to achieve the sa
ethdev: promote sibling iterators to stable
This API saw no update since its introduction and will help applications like OVS ([1] and [2]) that currently look at rte_eth_devices[] to achieve the same.
1: https://github.com/openvswitch/ovs/blob/master/lib/netdev-dpdk.c#L1285 2: https://github.com/openvswitch/ovs/blob/master/lib/netdev-dpdk.c#L1476
Signed-off-by: David Marchand <[email protected]> Acked-by: Andrew Rybchenko <[email protected]> Acked-by: Ray Kinsella <[email protected]>
show more ...
|
| #
9fecac6c |
| 06-Sep-2021 |
Haiyue Wang <[email protected]> |
ethdev: promote burst mode API
The DPDK Symbol Bot reports: Please note the symbols listed below have expired. In line with the DPDK ABI policy, they should be scheduled for removal, in the next DPD
ethdev: promote burst mode API
The DPDK Symbol Bot reports: Please note the symbols listed below have expired. In line with the DPDK ABI policy, they should be scheduled for removal, in the next DPDK release.
Symbol rte_eth_rx_burst_mode_get rte_eth_tx_burst_mode_get
Signed-off-by: Haiyue Wang <[email protected]> Acked-by: Ferruh Yigit <[email protected]> Acked-by: Ray Kinsella <[email protected]> Acked-by: Andrew Rybchenko <[email protected]>
show more ...
|
| #
2def522a |
| 02-Sep-2021 |
Pavan Nikhilesh <[email protected]> |
ethdev: promote API to set packet types
Remove experimental tag from rte_eth_dev_set_ptypes().
Signed-off-by: Pavan Nikhilesh <[email protected]> Acked-by: Andrew Rybchenko <andrew.rybchenko
ethdev: promote API to set packet types
Remove experimental tag from rte_eth_dev_set_ptypes().
Signed-off-by: Pavan Nikhilesh <[email protected]> Acked-by: Andrew Rybchenko <[email protected]> Acked-by: Ray Kinsella <[email protected]>
show more ...
|
| #
dbd34bee |
| 01-Sep-2021 |
Xiaoyun Li <[email protected]> |
ethdev: promote API to get interrupt FD per queue
Remove the experimental tag for rte_eth_dev_rx_intr_ctl_q_get_fd API that was introduced in 18.11 and have been around for 11 releases.
Signed-off-
ethdev: promote API to get interrupt FD per queue
Remove the experimental tag for rte_eth_dev_rx_intr_ctl_q_get_fd API that was introduced in 18.11 and have been around for 11 releases.
Signed-off-by: Xiaoyun Li <[email protected]> Acked-by: Andrew Rybchenko <[email protected]> Acked-by: Ferruh Yigit <[email protected]> Acked-by: Ray Kinsella <[email protected]> Acked-by: David Marchand <[email protected]>
show more ...
|
| #
fdab8f2e |
| 08-Aug-2021 |
Thomas Monjalon <[email protected]> |
version: 21.11-rc0
Start a new release cycle with empty release notes.
The ABI version becomes 22.0. The map files are updated to the new ABI major number (22). The ABI exceptions are dropped and C
version: 21.11-rc0
Start a new release cycle with empty release notes.
The ABI version becomes 22.0. The map files are updated to the new ABI major number (22). The ABI exceptions are dropped and CI ABI checks are disabled because compatibility is not preserved.
Signed-off-by: Thomas Monjalon <[email protected]> Acked-by: Ferruh Yigit <[email protected]> Acked-by: David Marchand <[email protected]>
show more ...
|