| dbbdeb8b | 23-Feb-2022 |
Michal Krawczyk <[email protected]> |
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 <[email protected]>
show more ...
|
| b2d2f1cf | 23-Feb-2022 |
Michal Krawczyk <[email protected]> |
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: [email protected]
Signed-off-by: Michal Krawczyk <[email protected]>
show more ...
|
| 9ae7a13f | 23-Feb-2022 |
Dawid Gorecki <[email protected]> |
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: [email protected]
Signed-off-by: Dawid Gorecki <[email protected]> Reviewed-by: Michal Krawczyk <[email protected]> Reviewed-by: Shai Brandes <[email protected]>
show more ...
|
| 77e764c7 | 23-Feb-2022 |
Dawid Gorecki <[email protected]> |
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 <[email protected]> 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 <[email protected]> Reviewed-by: Michal Krawczyk <[email protected]> Reviewed-by: Shai Brandes <[email protected]>
show more ...
|
| 022fb61b | 23-Feb-2022 |
Michal Krawczyk <[email protected]> |
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: [email protected]
Signed-off-by: Michal Krawczyk <[email protected]> Reviewed-by: Dawid Gorecki <[email protected]> Reviewed-by: Shai Brandes <[email protected]>
show more ...
|
| cc0c5d25 | 23-Feb-2022 |
Michal Krawczyk <[email protected]> |
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 <[email protected]> Reviewed-by: Dawid Gorecki <[email protected]> Reviewed-by: Shai Brandes <[email protected]>
show more ...
|
| 2bae75ea | 23-Feb-2022 |
Dawid Gorecki <[email protected]> |
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: [email protected]
Signed-off-by: Dawid Gorecki <[email protected]> Reviewed-by: Michal Krawczyk <[email protected]> Reviewed-by: Shai Brandes <[email protected]>
show more ...
|
| 3cec73fa | 23-Feb-2022 |
Michal Krawczyk <[email protected]> |
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 <[email protected]> Reviewed-by: Dawid Gorecki <[email protected]> Reviewed-by: Shai Brandes <[email protected]>
show more ...
|
| 850e1bb1 | 23-Feb-2022 |
Michal Krawczyk <[email protected]> |
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 <[email protected]> Reviewed-by: Dawid Gorecki <[email protected]> Reviewed-by: Shai Brandes <[email protected]>
show more ...
|
| 3aa3fa85 | 23-Feb-2022 |
Stanislaw Kardach <[email protected]> |
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 <[email protected]> Reviewed-by: Michal Krawczyk <[email protected]> Reviewed-by: Shai Brandes <[email protected]>
show more ...
|
| e3595539 | 23-Feb-2022 |
Stanislaw Kardach <[email protected]> |
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 <[email protected]> Reviewed-by: Michal Krawczyk <[email protected]> Reviewed-by: Dawid Gorecki <[email protected]> Reviewed-by: Shai Brandes <[email protected]>
show more ...
|
| b2c1fe38 | 23-Feb-2022 |
Michal Krawczyk <[email protected]> |
net/ena/base: use optimized memcpy version also on Arm
As the default behavior for arm64 is to alias rte_memcpy as memcpy, ENA cannot redefine memcpy as rte_memcpy as it would cause nested declarati
net/ena/base: use optimized memcpy version also on Arm
As the default behavior for arm64 is to alias rte_memcpy as memcpy, ENA cannot redefine memcpy as rte_memcpy as it would cause nested declaration.
To make it possible to use optimized memcpy in the ena_com layer on Arm, the driver now redefines memcpy when it is beneficial: * For arm64 only when the flag RTE_ARCH_ARM64_MEMCPY was defined * For arm only when the flag RTE_ARCH_ARM_NEON_MEMCPY was defined
Signed-off-by: Michal Krawczyk <[email protected]> Reviewed-by: Dawid Gorecki <[email protected]> Reviewed-by: Shai Brandes <[email protected]>
show more ...
|
| 67216c31 | 23-Feb-2022 |
Michal Krawczyk <[email protected]> |
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 <[email protected]> Reviewed-by: Dawid Gorecki <[email protected]> Reviewed-by: Shai Brandes <[email protected]>
show more ...
|
| e2174a54 | 23-Feb-2022 |
Michal Krawczyk <[email protected]> |
net/ena: skip timer if reset is triggered
Some user applications may not support PMD reset handling. If they will support timer service it could cause a situation, when information about the reset t
net/ena: skip timer if reset is triggered
Some user applications may not support PMD reset handling. If they will support timer service it could cause a situation, when information about the reset trigger is being showed every time the timer service is being called.
Timer service is now being skipped if the reset was already triggered.
Fixes: d9b8b106bf9d ("net/ena: add watchdog and keep alive AENQ handler") Cc: [email protected]
Signed-off-by: Michal Krawczyk <[email protected]> Reviewed-by: Shai Brandes <[email protected]>
show more ...
|
| b9b05d6f | 23-Feb-2022 |
Michal Krawczyk <[email protected]> |
net/ena: make link status change interrupt configurable
ENA uses AENQ for notification about various events, like LSC, keep alive etc. By default it was enabling all AENQ that were supported by both
net/ena: make link status change interrupt configurable
ENA uses AENQ for notification about various events, like LSC, keep alive etc. By default it was enabling all AENQ that were supported by both the driver and the device. As a result the LSC was always processed even if the application turned it off explicitly.
As the DPDK provides application with the possibility to configure the LSC, ENA should respect that. AENQ groups are now being updated upon configure step, thus LSC can be activated or disabled between ENA PMD reconfigurations. Moreover, the LSC capability for the device is being determined dynamically.
Signed-off-by: Michal Krawczyk <[email protected]> Reviewed-by: Dawid Gorecki <[email protected]> Reviewed-by: Shai Brandes <[email protected]>
show more ...
|
| 84daba99 | 23-Feb-2022 |
Michal Krawczyk <[email protected]> |
net/ena: add extra Rx checksum related xstats
* Split 'bad_csum' Rx statistic into 'l3_csum_bad' and 'l4_csum_bad' to be able to check which checksum was not calculated properly. * Add l4_csum_goo
net/ena: add extra Rx checksum related xstats
* Split 'bad_csum' Rx statistic into 'l3_csum_bad' and 'l4_csum_bad' to be able to check which checksum was not calculated properly. * Add l4_csum_good statistic, which shows how many times L4 Rx checksum was properly offloaded.
Signed-off-by: Michal Krawczyk <[email protected]> Reviewed-by: Dawid Gorecki <[email protected]> Reviewed-by: Shai Brandes <[email protected]>
show more ...
|
| fa119804 | 23-Feb-2022 |
Michal Krawczyk <[email protected]> |
net/ena: remove unused offload variables
Those variables are being set, but never read. As they seem to be leftover from the old offloads API and don't have any purpose right now, they are simply be
net/ena: remove unused offload variables
Those variables are being set, but never read. As they seem to be leftover from the old offloads API and don't have any purpose right now, they are simply being removed.
Fixes: a4996bd89c42 ("ethdev: new Rx/Tx offloads API") Cc: [email protected]
Signed-off-by: Michal Krawczyk <[email protected]> Reviewed-by: Artur Rojek <[email protected]> Reviewed-by: Dawid Gorecki <[email protected]> Reviewed-by: Igor Chauskin <[email protected]> Reviewed-by: Shai Brandes <[email protected]>
show more ...
|
| 3d47e9b1 | 23-Feb-2022 |
Michal Krawczyk <[email protected]> |
net/ena: assert on outstanding mbuf in Tx
To make sure there is no outstanding mbuf in the reused Tx queue (due to improper cleanup, or some invalid logic on Tx path), the assertion was added on the
net/ena: assert on outstanding mbuf in Tx
To make sure there is no outstanding mbuf in the reused Tx queue (due to improper cleanup, or some invalid logic on Tx path), the assertion was added on the Tx path.
As it's being compiled out in the release version, it won't affect the IO path performance.
Signed-off-by: Michal Krawczyk <[email protected]> Reviewed-by: Dawid Gorecki <[email protected]> Reviewed-by: Shai Brandes <[email protected]>
show more ...
|