| 49863ae2 | 13-Oct-2021 |
Ivan Malov <[email protected]> |
ethdev: add represented port item to flow API
For use in "transfer" flows. Supposed to match traffic entering the embedded switch from the entity represented by the given ethdev. Such an entity can
ethdev: add represented port item to flow API
For use in "transfer" flows. Supposed to match traffic entering the embedded switch from the entity represented by the given ethdev. Such an entity can be a network (via a network port), a guest machine (via a VF) or another ethdev in the same application.
Must not be combined with direction attributes.
Signed-off-by: Ivan Malov <[email protected]> Acked-by: Ori Kam <[email protected]> Acked-by: Andrew Rybchenko <[email protected]>
show more ...
|
| 081e42da | 13-Oct-2021 |
Ivan Malov <[email protected]> |
ethdev: add port representor item to flow API
For use in "transfer" flows. Supposed to match traffic entering the embedded switch from the given ethdev.
Must not be combined with direction attribut
ethdev: add port representor item to flow API
For use in "transfer" flows. Supposed to match traffic entering the embedded switch from the given ethdev.
Must not be combined with direction attributes.
Signed-off-by: Ivan Malov <[email protected]> Acked-by: Ori Kam <[email protected]> Acked-by: Andrew Rybchenko <[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 ...
|
| c87d435a | 13-Oct-2021 |
Konstantin Ananyev <[email protected]> |
ethdev: copy fast-path API into separate structure
Copy public function pointers (rx_pkt_burst(), etc.) and related pointers to internal data from rte_eth_dev structure into a separate flat array. T
ethdev: copy fast-path API into separate structure
Copy public function pointers (rx_pkt_burst(), etc.) and related pointers to internal data from rte_eth_dev structure into a separate flat array. That array will remain in a public header. The intention here is to make rte_eth_dev and related structures internal. That should allow future possible changes to core eth_dev structures to be transparent to the user and help to avoid ABI/API breakages. The plan is to keep minimal part of data from rte_eth_dev public, so we still can use inline functions for fast-path calls (like rte_eth_rx_burst(), etc.) to avoid/minimize slowdown. The whole idea beyond this new schema: 1. PMDs keep to setup fast-path function pointers and related data inside rte_eth_dev struct in the same way they did it before. 2. Inside rte_eth_dev_start() and inside rte_eth_dev_probing_finish() (for secondary process) we call eth_dev_fp_ops_setup, which copies these function and data pointers into rte_eth_fp_ops[port_id]. 3. Inside rte_eth_dev_stop() and inside rte_eth_dev_release_port() we call eth_dev_fp_ops_reset(), which resets rte_eth_fp_ops[port_id] into some dummy values. 4. fast-path ethdev API (rte_eth_rx_burst(), etc.) will use that new flat array to call PMD specific functions. That approach should allow us to make rte_eth_devices[] private without introducing regression and help to avoid changes in drivers code.
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 ...
|
| 8d7d4fcd | 13-Oct-2021 |
Konstantin Ananyev <[email protected]> |
ethdev: change input parameters for Rx queue count
Currently majority of fast-path ethdev ops take pointers to internal queue data structures as an input parameter. While eth_rx_queue_count() takes
ethdev: change input parameters for Rx queue count
Currently majority of fast-path ethdev ops take pointers to internal queue data structures as an input parameter. While eth_rx_queue_count() takes a pointer to rte_eth_dev and queue index. For future work to hide rte_eth_devices[] and friends it would be plausible to unify parameters list of all fast-path ethdev ops. This patch changes eth_rx_queue_count() to accept pointer to internal queue data as input parameter. While this change is transparent to user, it still counts as an ABI change, as eth_rx_queue_count_t is used by ethdev public inline function rte_eth_rx_queue_count().
Signed-off-by: Konstantin Ananyev <[email protected]> Reviewed-by: Andrew Rybchenko <[email protected]> Acked-by: Hyong Youb Kim <[email protected]> Reviewed-by: Ferruh Yigit <[email protected]> Tested-by: Feifei Wang <[email protected]>
show more ...
|
| c024496a | 13-Oct-2021 |
Konstantin Ananyev <[email protected]> |
ethdev: allocate max space for internal queue array
At queue configure stage always allocate space for maximum possible number (RTE_MAX_QUEUES_PER_PORT) of queue pointers. That will allow 'fast' inl
ethdev: allocate max space for internal queue array
At queue configure stage always allocate space for maximum possible number (RTE_MAX_QUEUES_PER_PORT) of queue pointers. That will allow 'fast' inline functions (eth_rx_burst, etc.) to refer pointer to internal queue data without extra checking of current number of configured queues. That would help in future to hide rte_eth_dev and related structures. It means that from now on, each ethdev port will always consume: ((2*sizeof(uintptr_t))* RTE_MAX_QUEUES_PER_PORT) bytes of memory for its queue pointers. With RTE_MAX_QUEUES_PER_PORT==1024 (default value) it is 16KB per port.
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 ...
|
| 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 ...
|
| 92ef4b8f | 08-Oct-2021 |
Andrew Rybchenko <[email protected]> |
ethdev: remove deprecated shared counter attribute
Indirect actions should be used to do shared counters.
Signed-off-by: Andrew Rybchenko <[email protected]> Acked-by: Thomas Monjalon <
ethdev: remove deprecated shared counter attribute
Indirect actions should be used to do shared counters.
Signed-off-by: Andrew Rybchenko <[email protected]> Acked-by: Thomas Monjalon <[email protected]> Acked-by: Ajit Khaparde <[email protected]> Acked-by: Somnath Kotur <[email protected]> Acked-by: Ori Kam <[email protected]> Acked-by: Matan Azrad <[email protected]>
show more ...
|
| ff4e52ef | 11-Oct-2021 |
Viacheslav Galaktionov <[email protected]> |
ethdev: fix representor port ID search by name
The patch is required for all PMDs which do not provide representors info on the representor itself.
The function, rte_eth_representor_id_get(), is us
ethdev: fix representor port ID search by name
The patch is required for all PMDs which do not provide representors info on the representor itself.
The function, rte_eth_representor_id_get(), is used in eth_representor_cmp() which is required in ethdev class iterator to search ethdev port ID by name (representor case). Before the patch the function is called on the representor itself and tries to get representors info to match.
Search of port ID by name is used after hotplug to find out port ID of the just plugged device.
Getting a list of representors from a representor does not make sense. Instead, a backer device should be used.
To this end, extend the rte_eth_dev_data structure to include the port ID of the backing device for representors.
Signed-off-by: Viacheslav Galaktionov <[email protected]> Signed-off-by: Andrew Rybchenko <[email protected]> Acked-by: Haiyue Wang <[email protected]> Acked-by: Beilei Xing <[email protected]> Reviewed-by: Xueming Li <[email protected]> Acked-by: Viacheslav Ovsiienko <[email protected]>
show more ...
|
| 6c31a8c2 | 11-Oct-2021 |
Andrew Rybchenko <[email protected]> |
ethdev: remove legacy Rx descriptor done API
rte_eth_rx_descriptor_status() should be used as a replacement.
Signed-off-by: Andrew Rybchenko <[email protected]> Reviewed-by: Ferruh Yigi
ethdev: remove legacy Rx descriptor done API
rte_eth_rx_descriptor_status() should be used as a replacement.
Signed-off-by: Andrew Rybchenko <[email protected]> Reviewed-by: Ferruh Yigit <[email protected]> Acked-by: Thomas Monjalon <[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 ...
|
| 7483341a | 06-Oct-2021 |
Xueming Li <[email protected]> |
ethdev: change queue release callback
Currently, most ethdev callback API use queue ID as parameter, but Rx and Tx queue release callback use queue object which is used by Rx and Tx burst data plane
ethdev: change queue release callback
Currently, most ethdev callback API use queue ID as parameter, but Rx and Tx queue release callback use queue object which is used by Rx and Tx burst data plane callback.
To align with other eth device queue configuration callbacks: - queue release callbacks are changed to use queue ID - all drivers are adapted
Signed-off-by: Xueming Li <[email protected]> Reviewed-by: Andrew Rybchenko <[email protected]> Acked-by: Ajit Khaparde <[email protected]> Acked-by: Somnath Kotur <[email protected]> Acked-by: Ferruh Yigit <[email protected]>
show more ...
|
| 49ed3224 | 06-Oct-2021 |
Xueming Li <[email protected]> |
ethdev: make queue release callback optional
Some drivers don't need Rx and Tx queue release callback, make them optional. Clean up empty queue release callbacks for some drivers.
Signed-off-by: Xu
ethdev: make queue release callback optional
Some drivers don't need Rx and Tx queue release callback, make them optional. Clean up empty queue release callbacks for some drivers.
Signed-off-by: Xueming Li <[email protected]> Reviewed-by: Andrew Rybchenko <[email protected]> Acked-by: Ferruh Yigit <[email protected]> Acked-by: Thomas Monjalon <[email protected]> Acked-by: Hemant Agrawal <[email protected]>
show more ...
|
| 8c9f976f | 01-Oct-2021 |
Andrew Rybchenko <[email protected]> |
ethdev: improve xstats names by IDs get prototype
Adjust parameters order to eth_xstats_get_by_id_t prototype. Make ids the second parameter similar to eth_xstats_get_by_id_t.
Signed-off-by: Andrew
ethdev: improve xstats names by IDs get prototype
Adjust parameters order to eth_xstats_get_by_id_t prototype. Make ids the second parameter similar to eth_xstats_get_by_id_t.
Signed-off-by: Andrew Rybchenko <[email protected]> Acked-by: Ferruh Yigit <[email protected]>
show more ...
|
| 71b5e430 | 01-Oct-2021 |
Ivan Ilchenko <[email protected]> |
ethdev: update xstats by ID driver callbacks documentation
Update xstats by IDs callbacks documentation in accordance with ethdev usage of these callbacks. Document valid combinations of input argum
ethdev: update xstats by ID driver callbacks documentation
Update xstats by IDs callbacks documentation in accordance with ethdev usage of these callbacks. Document valid combinations of input arguments to make driver implementation simpler.
Signed-off-by: Ivan Ilchenko <[email protected]> Signed-off-by: Andrew Rybchenko <[email protected]> Reviewed-by: Andy Moreton <[email protected]> Acked-by: Ferruh Yigit <[email protected]>
show more ...
|
| 113778be | 01-Oct-2021 |
Andrew Rybchenko <[email protected]> |
ethdev: do not use get xstats names by IDs to obtain count
Relax requirements on get xstats names by IDs. After the patch corresponding the driver operation is called with non-NULL ids and xstats_na
ethdev: do not use get xstats names by IDs to obtain count
Relax requirements on get xstats names by IDs. After the patch corresponding the driver operation is called with non-NULL ids and xstats_names parameters only.
Signed-off-by: Andrew Rybchenko <[email protected]> Acked-by: Ferruh Yigit <[email protected]>
show more ...
|
| bc5112ca | 01-Oct-2021 |
Ivan Ilchenko <[email protected]> |
ethdev: fix xstats by ID API documentation
Document valid combinations of input arguments in accordance with current implementation in ethdev.
Fixes: 79c913a42f0e ("ethdev: retrieve xstats by ID")
ethdev: fix xstats by ID API documentation
Document valid combinations of input arguments in accordance with current implementation in ethdev.
Fixes: 79c913a42f0e ("ethdev: retrieve xstats by ID") Cc: [email protected]
Signed-off-by: Ivan Ilchenko <[email protected]> Signed-off-by: Andrew Rybchenko <[email protected]> Reviewed-by: Andy Moreton <[email protected]> Reviewed-by: Ferruh Yigit <[email protected]>
show more ...
|
| 04d43857 | 07-Oct-2021 |
Dmitry Kozlyuk <[email protected]> |
net: rename Ethernet header fields
Definition of `rte_ether_addr` structure used a workaround allowing DPDK and Windows SDK headers to be used in the same file, because Windows SDK defines `s_addr`
net: rename Ethernet header fields
Definition of `rte_ether_addr` structure used a workaround allowing DPDK and Windows SDK headers to be used in the same file, because Windows SDK defines `s_addr` as a macro. Rename `s_addr` to `src_addr` and `d_addr` to `dst_addr` to avoid the conflict and remove the workaround. Deprecation notice: https://mails.dpdk.org/archives/dev/2021-July/215270.html
Signed-off-by: Dmitry Kozlyuk <[email protected]>
show more ...
|
| f1f6ebc0 | 24-Aug-2021 |
William Tu <[email protected]> |
eal: remove sys/queue.h from public headers
Currently there are some public headers that include 'sys/queue.h', which is not POSIX, but usually provided by the Linux/BSD system library. (Not in POSI
eal: remove sys/queue.h from public headers
Currently there are some public headers that include 'sys/queue.h', which is not POSIX, but usually provided by the Linux/BSD system library. (Not in POSIX.1, POSIX.1-2001, or POSIX.1-2008. Present on the BSDs.) The file is missing on Windows. During the Windows build, DPDK uses a bundled copy, so building a DPDK library works fine. But when OVS or other applications use DPDK as a library, because some DPDK public headers include 'sys/queue.h', on Windows, it triggers an error due to no such file.
One solution is to install the 'lib/eal/windows/include/sys/queue.h' into Windows environment, such as [1]. However, this means DPDK exports the functionalities of 'sys/queue.h' into the environment, which might cause symbols, macros, headers clashing with other applications.
The patch fixes it by removing the "#include <sys/queue.h>" from DPDK public headers, so programs including DPDK headers don't depend on the system to provide 'sys/queue.h'. When these public headers use macros such as TAILQ_xxx, we replace it by the ones with RTE_ prefix. For Windows, we copy the definitions from <sys/queue.h> to rte_os.h in Windows EAL. Note that these RTE_ macros are compatible with <sys/queue.h>, both at the level of API (to use with <sys/queue.h> macros in C files) and ABI (to avoid breaking it).
Additionally, the TAILQ_FOREACH_SAFE is not part of <sys/queue.h>, the patch replaces it with RTE_TAILQ_FOREACH_SAFE.
[1] http://mails.dpdk.org/archives/dev/2021-August/216304.html
Suggested-by: Nick Connolly <[email protected]> Suggested-by: Dmitry Kozlyuk <[email protected]> Signed-off-by: William Tu <[email protected]> Acked-by: Dmitry Kozlyuk <[email protected]> Acked-by: Narcisa Vasile <[email protected]>
show more ...
|
| 16b8e92d | 23-Aug-2021 |
Raslan Darawsheh <[email protected]> |
ethdev: use extension header for GTP PSC item
This updates the gtp_psc flow item to use the net header definition of the gtp_psc to be based on RFC 38415-g30
Signed-off-by: Raslan Darawsheh <raslan
ethdev: use extension header for GTP PSC item
This updates the gtp_psc flow item to use the net header definition of the gtp_psc to be based on RFC 38415-g30
Signed-off-by: Raslan Darawsheh <[email protected]> Acked-by: Ferruh Yigit <[email protected]>
show more ...
|
| 0ce56b05 | 30-Aug-2021 |
Thomas Monjalon <[email protected]> |
ethdev: group constant definitions in Doxygen
A lot of flags are parts of a group but are documented alone. The Doxygen syntax @{ and @} for grouping is used to make flags appear together and have a
ethdev: group constant definitions in Doxygen
A lot of flags are parts of a group but are documented alone. The Doxygen syntax @{ and @} for grouping is used to make flags appear together and have a common description.
Some Rx/Tx offload flags and RSS definitions are not grouped because they need to be all properly documented first.
Signed-off-by: Thomas Monjalon <[email protected]> Acked-by: Ferruh Yigit <[email protected]> Acked-by: Andrew Rybchenko <[email protected]> Acked-by: Kevin Traynor <[email protected]>
show more ...
|
| 81b0fbb8 | 15-Sep-2021 |
Alvin Zhang <[email protected]> |
ethdev: add IPv4 and L4 checksum RSS offload types
This patch defines new RSS offload types for IPv4 and L4(TCP/UDP/SCTP) checksum, which are required when users want to distribute packets based on
ethdev: add IPv4 and L4 checksum RSS offload types
This patch defines new RSS offload types for IPv4 and L4(TCP/UDP/SCTP) checksum, which are required when users want to distribute packets based on the IPv4 or L4 checksum field.
For example "flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4-chksum end queues end / end", this flow causes all matching packets to be distributed to queues on basis of IPv4 checksum.
Signed-off-by: Alvin Zhang <[email protected]> Reviewed-by: Qi Zhang <[email protected]> Acked-by: Ajit Khaparde <[email protected]> Acked-by: Aman Deep Singh <[email protected]> Acked-by: Ferruh Yigit <[email protected]>
show more ...
|
| 7a335720 | 15-Sep-2021 |
Thomas Monjalon <[email protected]> |
lib: remove C++ include guard from private headers
The private headers are compiled internally with a C compiler. Thus extern "C" declaration is useless in such files.
Signed-off-by: Thomas Monjalo
lib: remove C++ include guard from private headers
The private headers are compiled internally with a C compiler. Thus extern "C" declaration is useless in such files.
Signed-off-by: Thomas Monjalon <[email protected]>
show more ...
|