#
3dbde902 |
| 26-Oct-2023 |
Shai Brandes <shaibran@amazon.com> |
net/ena: update version to 2.8.0
This release introduces: * Upgraded ENA HAL. * Support for connection tracking allowance utilization metric. * Support for reporting rx overrun errors in xstats. * S
net/ena: update version to 2.8.0
This release introduces: * Upgraded ENA HAL. * Support for connection tracking allowance utilization metric. * Support for reporting rx overrun errors in xstats. * Support for ENA-express metrics.
Signed-off-by: Shai Brandes <shaibran@amazon.com> Reviewed-by: Amit Bernstein <amitbern@amazon.com>
show more ...
|
#
a73dd098 |
| 26-Oct-2023 |
Shai Brandes <shaibran@amazon.com> |
net/ena: support ENA-express stats
ENA-express is powered by AWS scalable reliable datagram (SRD) technology. SRD is a high performance network transport protocol that uses dynamic routing to increa
net/ena: support ENA-express stats
ENA-express is powered by AWS scalable reliable datagram (SRD) technology. SRD is a high performance network transport protocol that uses dynamic routing to increase throughput and minimize tail latency.
The driver expose the following ENA-express metrics via xstats: * ena_srd_mode – Describes which ENA-express features are enabled * ena_srd_eligible_tx_pkts – The number of network packets sent within a given time period that meet SRD requirements for eligibility * ena_srd_tx_pkts – The number of SRD packets transmitted within a given time period. * ena_srd_rx_pkts – The number of SRD packets received within a given time period. * ena_srd_resource_utilization – The percentage of the maximum allowed memory utilization for concurrent SRD connections that the instance has consumed.
Probing the ENA Express metrics is performed via an admin command. Thus, a multi-process proxy handler was added.
Signed-off-by: Shai Brandes <shaibran@amazon.com> Reviewed-by: Amit Bernstein <amitbern@amazon.com>
show more ...
|
#
77d4ed30 |
| 26-Oct-2023 |
Shai Brandes <shaibran@amazon.com> |
net/ena: report Rx overrun errors in xstats
RX overrun error occur when a packet arrives but there are not enough free buffers in the RX ring to receive it. The driver publishes the extended statist
net/ena: report Rx overrun errors in xstats
RX overrun error occur when a packet arrives but there are not enough free buffers in the RX ring to receive it. The driver publishes the extended statistics with the RX buffer overrun errors as reported by the device.
Signed-off-by: Shai Brandes <shaibran@amazon.com> Reviewed-by: Amit Bernstein <amitbern@amazon.com>
show more ...
|
#
92401abf |
| 26-Oct-2023 |
Shai Brandes <shaibran@amazon.com> |
net/ena: support connection tracking stats
The driver publishes network performance metrics that the application can use to troubleshoot performance issues, monitor the workload, and benchmark appli
net/ena: support connection tracking stats
The driver publishes network performance metrics that the application can use to troubleshoot performance issues, monitor the workload, and benchmark applications to determine whether they maximize the performance.
This patch adds support for the connection tracking allowance utilization metric (Conntrack_allowance_available) that allows monitoring the available tracked connections that can be established before the interface exceeds its allowance.
The driver uses the redesigned HAL mechanism that is backward compatible with the old method to query the metrics.
Probing the customer metrics is performed via an admin command. Thus, a multi-process proxy handler was added.
Signed-off-by: Shai Brandes <shaibran@amazon.com> Reviewed-by: Amit Bernstein <amitbern@amazon.com>
show more ...
|
#
f73f53f7 |
| 26-Oct-2023 |
Shai Brandes <shaibran@amazon.com> |
net/ena: upgrade HAL
ENA maintains a HAL that is shared by all supported host drivers. Main features introduced to the HAL: [1] Reworked the mechanism that queries the performance metrics from t
net/ena: upgrade HAL
ENA maintains a HAL that is shared by all supported host drivers. Main features introduced to the HAL: [1] Reworked the mechanism that queries the performance metrics from the device. [2] Added support for a new metric that allows monitoring the available tracked connections. [3] Added support for a new statistic that counts RX drops due to insufficient buffers provided by host. [4] Added support for Scalable Reliable Datagram (SRD) metrics from ENA Express. [5] Added support for querying the LLQ entry size recommendation from the device. [6] Added support for PTP hardware clock (PHC) feature that provides enhanced accuracy (Not supported by the driver). [7] Added support for new reset reasons for a suspected CPU starvation and for completion descriptor inconsistency. [8] Aligned all return error code to a common notation. [9] Removed an obsolete queue tail pointer update API.
Signed-off-by: Shai Brandes <shaibran@amazon.com> Reviewed-by: Amit Bernstein <amitbern@amazon.com>
show more ...
|
#
2fc03b23 |
| 19-Oct-2023 |
Thomas Monjalon <thomas@monjalon.net> |
drivers: use macro for PCI address format
Some places were not using the macro PCI_PRI_FMT as print format of a PCI address.
Note: RTE prefix is missing in the name of some PCI macros.
Signed-off-
drivers: use macro for PCI address format
Some places were not using the macro PCI_PRI_FMT as print format of a PCI address.
Note: RTE prefix is missing in the name of some PCI macros.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net> Acked-by: John Daley <johndale@cisco.com> Acked-by: Huisong Li <lihuisong@huawei.com>
show more ...
|
#
9210f0ca |
| 08-Sep-2023 |
Jie Hai <haijie1@huawei.com> |
net/ena: fix Rx and Tx queue state
The DPDK framework reports the queue state, which is stored in dev->data->tx_queue_state and dev->data->rx_queue_state. The state is maintained by the driver. User
net/ena: fix Rx and Tx queue state
The DPDK framework reports the queue state, which is stored in dev->data->tx_queue_state and dev->data->rx_queue_state. The state is maintained by the driver. Users may determine whether a queue participates in packet forwarding based on the state. Therefore, the driver needs to modify the queue state in time according to the actual situation.
Fixes: 9ad9ff476cac ("ethdev: add queue state in queried queue information") Cc: stable@dpdk.org
Signed-off-by: Jie Hai <haijie1@huawei.com> Acked-by: Ferruh Yigit <ferruh.yigit@amd.com>
show more ...
|
#
0d5c38ba |
| 13-Oct-2022 |
Chengwen Feng <fengchengwen@huawei.com> |
ethdev: add error handling mode to device info
Currently, the defined error handling modes include:
1) NONE: it means no error handling modes are supported by this port.
2) PASSIVE: passive error
ethdev: add error handling mode to device info
Currently, the defined error handling modes include:
1) NONE: it means no error handling modes are supported by this port.
2) PASSIVE: passive error handling, after the PMD detect that a reset is required, the PMD reports RTE_ETH_EVENT_INTR_RESET event, and application invoke rte_eth_dev_reset() to recover the port.
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com> Reviewed-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
show more ...
|
#
a0b12075 |
| 07-Jun-2022 |
Michal Krawczyk <mk@semihalf.com> |
net/ena: update version to 2.7.0
This release contains changes listed below.
- Fast mbuf free feature support. - Device argument to disable the LLQ. - Simplification of the MTU verification.
net/ena: update version to 2.7.0
This release contains changes listed below.
- Fast mbuf free feature support. - Device argument to disable the LLQ. - Simplification of the MTU verification.
Signed-off-by: Michal Krawczyk <mk@semihalf.com>
show more ...
|
#
9944919e |
| 07-Jun-2022 |
Michal Krawczyk <mk@semihalf.com> |
net/ena: add device argument to disable LLQ
The PMD attempts to enable the LLQ (Low Latency Queue) whenever it's possible. The LLQ requires the user to enable the Write Combining for the supported i
net/ena: add device argument to disable LLQ
The PMD attempts to enable the LLQ (Low Latency Queue) whenever it's possible. The LLQ requires the user to enable the Write Combining for the supported igb_uio/vfio-pci modules.
The vfio-pci module officially doesn't support the WC. Moreover, in some Linux distributions, it can be built into the kernel, so any modifications to the vfio-pci module require a full rebuild of the kernel. This can make the configuration process much harder and for some users, that are not interested in the great network performance for their setups, it may be redundant. These users requested to be able to turn off LLQ to avoid the hassle of such a setup.
It's generally not recommended to disable the LLQ, as it won't result in the performance improvement and on the 6th generation AWS instances the lack of LLQ can have a huge negative impact on hardware performance.
The device argument which controls the LLQ is called 'enable_llq` and by default, it's set to 1 (which means that the LLQ is enabled). Setting it to 0 disables the LLQ.
This commit also adds the explicit initialization of the devarg for the 'use_large_llq_hdr'. The PMD_REGISTER_PARAM_STRING() call for the ENA was updated with all the available devargs (including ENA_DEVARG_MISS_TXC_TO, which wasn't added previously).
Signed-off-by: Michal Krawczyk <mk@semihalf.com> Reviewed-by: Dawid Gorecki <dgr@semihalf.com> Reviewed-by: Shai Brandes <shaibran@amazon.com> Reviewed-by: Amit Bernstein <amitbern@amazon.com>
show more ...
|
#
c3d31352 |
| 07-Jun-2022 |
Dawid Gorecki <dgr@semihalf.com> |
net/ena: remove redundant MTU verification
Remove MTU verification from ena_mtu_set() and ena_start(). It is done by rte_ethdev already, so there is no reason to repeat it inside the ENA driver.
Si
net/ena: remove redundant MTU verification
Remove MTU verification from ena_mtu_set() and ena_start(). It is done by rte_ethdev already, so there is no reason to repeat it inside the ENA driver.
Signed-off-by: Dawid Gorecki <dgr@semihalf.com> Reviewed-by: Michal Krawczyk <mk@semihalf.com> Reviewed-by: Shai Brandes <shaibran@amazon.com> Reviewed-by: Amit Bernstein <amitbern@amazon.com>
show more ...
|
#
c339f538 |
| 07-Jun-2022 |
Dawid Gorecki <dgr@semihalf.com> |
net/ena: support fast mbuf free
Add support for RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE offload. It can be enabled if all the mbufs for a given queue belong to the same mempool and their reference count i
net/ena: support fast mbuf free
Add support for RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE offload. It can be enabled if all the mbufs for a given queue belong to the same mempool and their reference count is equal to 1.
Signed-off-by: Dawid Gorecki <dgr@semihalf.com> Reviewed-by: Michal Krawczyk <mk@semihalf.com> Reviewed-by: Shai Brandes <shaibran@amazon.com> Reviewed-by: Amit Bernstein <amitbern@amazon.com>
show more ...
|
#
dbbdeb8b |
| 23-Feb-2022 |
Michal Krawczyk <mk@semihalf.com> |
net/ena: update version to 2.6.0
This release contains multiple bug fixes and improvements, including - Removal of the linearization function from the xmit Tx path. The DPDK assumes checking f
net/ena: update version to 2.6.0
This release contains multiple bug fixes and improvements, including - Removal of the linearization function from the xmit Tx path. The DPDK assumes checking for the mbuf segments number in the Tx prepare function. - Extra logs, statistics, checks... - Cleanup of the unused variables and definitions. - Configurable Link Status event. - Improvements for the timer service and the reset. - Usage of the optimized memcpy on ARM. - MP awareness improvements - extra API support for the secondary processes (like reading basic statistics). - Support of the xstats API to get xstat names by ID. - Configurable Tx completions timeout. - Proper setting of the meta-descriptor's DF flag.
Signed-off-by: Michal Krawczyk <mk@semihalf.com>
show more ...
|
#
b2d2f1cf |
| 23-Feb-2022 |
Michal Krawczyk <mk@semihalf.com> |
net/ena: fix checksum flag for L4
Some HW may invalidly set checksum error bit for the valid L4 checksum. To avoid drop of the packets in that situation, do not indicate bad checksum for L4 Rx csum
net/ena: fix checksum flag for L4
Some HW may invalidly set checksum error bit for the valid L4 checksum. To avoid drop of the packets in that situation, do not indicate bad checksum for L4 Rx csum offloads. Instead, set it as unknown, so the application will re-verify this value.
The statistics counters will still work as previously.
Fixes: 05817057faba ("net/ena: fix indication of bad L4 Rx checksums") Cc: stable@dpdk.org
Signed-off-by: Michal Krawczyk <mk@semihalf.com>
show more ...
|
#
9ae7a13f |
| 23-Feb-2022 |
Dawid Gorecki <dgr@semihalf.com> |
net/ena: check memory BAR before initializing LLQ
The ena_com_config_dev_mode() performs many calculations related to LLQ and then performs an admin queue call to configure LLQ in the device.
All o
net/ena: check memory BAR before initializing LLQ
The ena_com_config_dev_mode() performs many calculations related to LLQ and then performs an admin queue call to configure LLQ in the device.
All of the operations performed by ena_com_config_dev_mode() are unnecessary if membar hasn't been found. Move the dev_mem_base check before ena_com_config_dev_mode() call. This prevents the unnecessary operations from being performed.
Fixes: 2fca2a98c0d1 ("net/ena: support LLQv2") Cc: stable@dpdk.org
Signed-off-by: Dawid Gorecki <dgr@semihalf.com> Reviewed-by: Michal Krawczyk <mk@semihalf.com> Reviewed-by: Shai Brandes <shaibran@amazon.com>
show more ...
|
#
77e764c7 |
| 23-Feb-2022 |
Dawid Gorecki <dgr@semihalf.com> |
net/ena: extend logs for invalid request ID resets
Add information about port id, queue id and req_id to error logs in validate_tx_req_id.
Signed-off-by: Dawid Gorecki <dgr@semihalf.com> Reviewed-b
net/ena: extend logs for invalid request ID resets
Add information about port id, queue id and req_id to error logs in validate_tx_req_id.
Signed-off-by: Dawid Gorecki <dgr@semihalf.com> Reviewed-by: Michal Krawczyk <mk@semihalf.com> Reviewed-by: Shai Brandes <shaibran@amazon.com>
show more ...
|
#
022fb61b |
| 23-Feb-2022 |
Michal Krawczyk <mk@semihalf.com> |
net/ena: fix meta descriptor DF flag setup
Whenever Tx checksum offload is being used, the meta descriptor content is taken into consideration. Setting DF field properly in the meta descriptor may h
net/ena: fix meta descriptor DF flag setup
Whenever Tx checksum offload is being used, the meta descriptor content is taken into consideration. Setting DF field properly in the meta descriptor may have huge impact on the performance both for the IPv4 and IPv6 packets.
The requirements for the df field are as below: * No offload used - value doesn't matter * IPv4 - 0 or 1, depending on the DF flag in the IPv4 header * IPv6 - 1
Setting DF to 0 causes the packet to enter the slow-path in the HW and as a result can noticeable impact the performance.
Moreover, as 'true' may not always be mapped to 1 depending on it's definition for the given platform/compiler, for safety DF field is being set explicitly to 1.
Fixes: 1173fca25af9 ("ena: add polling-mode driver") Cc: stable@dpdk.org
Signed-off-by: Michal Krawczyk <mk@semihalf.com> Reviewed-by: Dawid Gorecki <dgr@semihalf.com> Reviewed-by: Shai Brandes <shaibran@amazon.com>
show more ...
|
#
cc0c5d25 |
| 23-Feb-2022 |
Michal Krawczyk <mk@semihalf.com> |
net/ena: make Tx completion timeout configurable
The default missing Tx completion timeout was set to 5 seconds. In order to provide users with the interface to control this timeout to adjust it wit
net/ena: make Tx completion timeout configurable
The default missing Tx completion timeout was set to 5 seconds. In order to provide users with the interface to control this timeout to adjust it with the application's watchdog, the device argument for controlling this value was added.
The parameter is called 'miss_txc_to' and can be modified using the devargs interface:
./app -a <bdf>,miss_txc_to=UINT_NUMBER
This parameter accepts values from 0 to 60 and indicates number of seconds after which the Tx packet will be considered as missing.
HW hints for the Tx completions timeout were removed to do not overwrite parameter from the user. Also specifying default Tx completion timeout value was moved from the configuration to init phase in order to simplify default value assignment.
Signed-off-by: Michal Krawczyk <mk@semihalf.com> Reviewed-by: Dawid Gorecki <dgr@semihalf.com> Reviewed-by: Shai Brandes <shaibran@amazon.com>
show more ...
|
#
2bae75ea |
| 23-Feb-2022 |
Dawid Gorecki <dgr@semihalf.com> |
net/ena: fix reset reason being overwritten
When triggering the reset, no check was performed to see if the reset was already triggered. This could result in original reset reason being overwritten.
net/ena: fix reset reason being overwritten
When triggering the reset, no check was performed to see if the reset was already triggered. This could result in original reset reason being overwritten. Add ena_trigger_reset helper function, which checks if the reset was triggered and only sets the reset reason if the reset wasn't triggered yet. Replace all occurrences of manually setting the reset with ena_trigger_reset call.
Fixes: 2081d5e2e92d ("net/ena: add reset routine") Cc: stable@dpdk.org
Signed-off-by: Dawid Gorecki <dgr@semihalf.com> Reviewed-by: Michal Krawczyk <mk@semihalf.com> Reviewed-by: Shai Brandes <shaibran@amazon.com>
show more ...
|
#
3cec73fa |
| 23-Feb-2022 |
Michal Krawczyk <mk@semihalf.com> |
net/ena: support xstat names by ID
ENA was only supporting retrieval of all the xstats name and wasn't implementing the eth_xstats_get_names_by_id API.
As this API may be more efficient than retrie
net/ena: support xstat names by ID
ENA was only supporting retrieval of all the xstats name and wasn't implementing the eth_xstats_get_names_by_id API.
As this API may be more efficient than retrieving all the names, it tries to avoid excessive string copying.
Signed-off-by: Michal Krawczyk <mk@semihalf.com> Reviewed-by: Dawid Gorecki <dgr@semihalf.com> Reviewed-by: Shai Brandes <shaibran@amazon.com>
show more ...
|
#
a52b317e |
| 23-Feb-2022 |
Dawid Gorecki <dgr@semihalf.com> |
net/ena: support Tx mbuf free on demand
ENA driver did not allow applications to call tx_cleanup. Freeing Tx mbufs was always done by the driver and it was not possible to manually request the drive
net/ena: support Tx mbuf free on demand
ENA driver did not allow applications to call tx_cleanup. Freeing Tx mbufs was always done by the driver and it was not possible to manually request the driver to free mbufs.
Modify ena_tx_cleanup function to accept maximum number of packets to free and return number of packets that was freed.
Signed-off-by: Dawid Gorecki <dgr@semihalf.com> Reviewed-by: Michal Krawczyk <mk@semihalf.com> Reviewed-by: Shai Brandes <shaibran@amazon.com>
show more ...
|
#
850e1bb1 |
| 23-Feb-2022 |
Michal Krawczyk <mk@semihalf.com> |
net/ena/base: make IO memzone unique per port
Originally, the ena_com memzone counter was shared by ports, which caused the memzones to be harder to identify and could potentially lead to race and b
net/ena/base: make IO memzone unique per port
Originally, the ena_com memzone counter was shared by ports, which caused the memzones to be harder to identify and could potentially lead to race and because of that the counter had to be atomic.
This atomic counter was global variable and it couldn't work in the multiprocess implementation.
The memzone is now being identified by the local to port memzone counter and the port ID - both of those information can be found in the shared data, so it can be probed easily.
Signed-off-by: Michal Krawczyk <mk@semihalf.com> Reviewed-by: Dawid Gorecki <dgr@semihalf.com> Reviewed-by: Shai Brandes <shaibran@amazon.com>
show more ...
|
#
3aa3fa85 |
| 23-Feb-2022 |
Stanislaw Kardach <kda@semihalf.com> |
net/ena: enable stats for multi-process mode
Since statistic gathering is now proxied safely to primary process, it can be enabled in secondary processes.
Signed-off-by: Stanislaw Kardach <kda@semi
net/ena: enable stats for multi-process mode
Since statistic gathering is now proxied safely to primary process, it can be enabled in secondary processes.
Signed-off-by: Stanislaw Kardach <kda@semihalf.com> Reviewed-by: Michal Krawczyk <mk@semihalf.com> Reviewed-by: Shai Brandes <shaibran@amazon.com>
show more ...
|
#
e3595539 |
| 23-Feb-2022 |
Stanislaw Kardach <kda@semihalf.com> |
net/ena: proxy AQ calls to primary process
Due to how the ena_com compatibility layer is written, all AQ commands triggering functions use stack to save results of AQ and then copy them to user give
net/ena: proxy AQ calls to primary process
Due to how the ena_com compatibility layer is written, all AQ commands triggering functions use stack to save results of AQ and then copy them to user given function. Therefore to keep the compatibility layer common, introduce ENA_PROXY macro. It either calls the wrapped function directly (in primary process) or proxies it to the primary via DPDK IPC mechanism. Since all proxied calls are taken under a lock share the result data through shared memory (in struct ena_adapter) to work around 256B IPC parameter size limit.
New proxy calls can be added by 1. Adding a new message type at the end of enum ena_mp_req 2. Adding new message arguments to the struct ena_mp_body if needed 3. Defining proxy request descriptor with ENA_PROXY_DESC. Its arguments include handlers for request preparation and response processing. Any of those may be empty (aside of marking arguments as used). 4. Adding request handling logic to ena_mp_primary_handle() 5. Replacing proxied function calls with ENA_PROXY(adapter, <func>, ...)
Signed-off-by: Stanislaw Kardach <kda@semihalf.com> Reviewed-by: Michal Krawczyk <mk@semihalf.com> Reviewed-by: Dawid Gorecki <dgr@semihalf.com> Reviewed-by: Shai Brandes <shaibran@amazon.com>
show more ...
|
#
67216c31 |
| 23-Feb-2022 |
Michal Krawczyk <mk@semihalf.com> |
net/ena: perform Tx cleanup before sending packets
To increase likelihood that current burst will fit in the HW rings, perform Tx cleanup before pushing packets to the HW. It may increase latency a
net/ena: perform Tx cleanup before sending packets
To increase likelihood that current burst will fit in the HW rings, perform Tx cleanup before pushing packets to the HW. It may increase latency a bit for sparse bursts, but the Tx flow now should be more smooth.
It's also common order in the Tx burst function for other PMDs.
Signed-off-by: Michal Krawczyk <mk@semihalf.com> Reviewed-by: Dawid Gorecki <dgr@semihalf.com> Reviewed-by: Shai Brandes <shaibran@amazon.com>
show more ...
|