#
4d7877fd |
| 31-Oct-2018 |
Michal Krawczyk <mk@semihalf.com> |
net/ena: remove resources when port is being closed
The new API introduced in 18.11 is suggesting, that the driver should release all it's resources at the dev_close routine.
All resources previous
net/ena: remove resources when port is being closed
The new API introduced in 18.11 is suggesting, that the driver should release all it's resources at the dev_close routine.
All resources previously released in uninit routine during PCI removal, are now being released at the dev_close and the PMD is indicating that it is supporting API changes by setting RTE_ETH_DEV_CLOSE_REMOVE flag.
As the device is not allocating MAC addresses dynamically, it is setting mac_addrs field to NULL, so it wouldn't be released by the rte_eth_dev_release_port().
Signed-off-by: Michal Krawczyk <mk@semihalf.com>
show more ...
|
#
0bfe8460 |
| 25-Oct-2018 |
Michal Krawczyk <mk@semihalf.com> |
net/ena: change version to 1.1.1
Version change is connected with major bug fixes.
Signed-off-by: Michal Krawczyk <mk@semihalf.com>
|
#
e5df9f33 |
| 25-Oct-2018 |
Stewart Allen <allenste@amazon.com> |
net/ena: fix passing RSS hash to mbuf
The driver was passing to the mbuf Rx queue ID instead of hash received from the device. Now, the RSS hash from the Rx descriptor is being set.
Fixes: 1173fca2
net/ena: fix passing RSS hash to mbuf
The driver was passing to the mbuf Rx queue ID instead of hash received from the device. Now, the RSS hash from the Rx descriptor is being set.
Fixes: 1173fca25af9 ("ena: add polling-mode driver") Cc: stable@dpdk.org
Signed-off-by: Stewart Allen <allenste@amazon.com> Acked-by: Michal Krawczyk <mk@semihalf.com>
show more ...
|
#
df238f84 |
| 25-Oct-2018 |
Michal Krawczyk <mk@semihalf.com> |
net/ena: recreate HW IO rings on start and stop
On the start the driver was refilling all Rx buffs, but the old ones were not released. That way running start/stop for a few times was causing device
net/ena: recreate HW IO rings on start and stop
On the start the driver was refilling all Rx buffs, but the old ones were not released. That way running start/stop for a few times was causing device to run out of descriptors.
To fix the issue, IO rings are now being destroyed on stop, and recreated on start. That way the device is not losing any descriptors.
Furthermore, there was also memory leak for the Rx mbufs, which were created on start and not destroyed on stop.
Fixes: eb0ef49dd5d5 ("net/ena: add stop and uninit routines") Cc: stable@dpdk.org
Signed-off-by: Michal Krawczyk <mk@semihalf.com>
show more ...
|
#
8f62ec38 |
| 16-Oct-2018 |
Qi Zhang <qi.z.zhang@intel.com> |
drivers/net: enable device detach on secondary process
With the enabling for hotplug on multi-process, rte_eth_dev_pci_generic_remove can be used to detach the device from a secondary process also.
drivers/net: enable device detach on secondary process
With the enabling for hotplug on multi-process, rte_eth_dev_pci_generic_remove can be used to detach the device from a secondary process also. But we need to take care of the uninit callback parameter to make sure it handles the secondary case correctly.
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
show more ...
|
#
f8e99896 |
| 18-Jun-2018 |
Thomas Monjalon <thomas@monjalon.net> |
remove useless constructor headers
A constructor is usually declared with RTE_INIT* macros. As it is a static function, no need to declare before its definition. The macro is used directly in the fu
remove useless constructor headers
A constructor is usually declared with RTE_INIT* macros. As it is a static function, no need to declare before its definition. The macro is used directly in the function definition.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
show more ...
|
#
361913ad |
| 26-Jun-2018 |
Daria Kolistratova <daria.kolistratova@intel.com> |
net/ena: fix SIGFPE with 0 Rx queue
When the number of rx queues is 0 (what can be when application does not receive) failed with SIGFPE. It happens when the application is also requesting ETH_MQ_RX
net/ena: fix SIGFPE with 0 Rx queue
When the number of rx queues is 0 (what can be when application does not receive) failed with SIGFPE. It happens when the application is also requesting ETH_MQ_RX_RSS_FLAG in the rte_dev->data->dev_conf.rxmode.mq_mode. Fixed adding zero rx queues check.
Signed-off-by: Daria Kolistratova <daria.kolistratova@intel.com> Acked-by: Michal Krawczyk <mk@semihalf.com>
show more ...
|
#
05e0eee0 |
| 29-Jun-2018 |
Rafal Kozik <rk@semihalf.com> |
net/ena: enable write combining
Write combining (WC) increases NIC performance by making better utilization of PCI bus. ENA PMD may make usage of this feature.
To enable it load igb_uio driver with
net/ena: enable write combining
Write combining (WC) increases NIC performance by making better utilization of PCI bus. ENA PMD may make usage of this feature.
To enable it load igb_uio driver with wc_activate set to 1.
Signed-off-by: Rafal Kozik <rk@semihalf.com> Acked-by: Bruce Richardson <bruce.richardson@intel.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
show more ...
|
#
41e59028 |
| 07-Jun-2018 |
Rafal Kozik <rk@semihalf.com> |
net/ena: set link speed as none
Link speed should is not limited to 10Gb/s and it shouldn't be hardcoded.
They link speed is set to none instead and the applications shouldn't rely on this value wh
net/ena: set link speed as none
Link speed should is not limited to 10Gb/s and it shouldn't be hardcoded.
They link speed is set to none instead and the applications shouldn't rely on this value when using ENA PMD.
Fixes: 1173fca25af9 ("ena: add polling-mode driver") Cc: stable@dpdk.org
Signed-off-by: Rafal Kozik <rk@semihalf.com> Acked-by: Michal Krawczyk <mk@semihalf.com>
show more ...
|
#
ba82e010 |
| 07-Jun-2018 |
Rafal Kozik <rk@semihalf.com> |
net/ena: update NUMA node
During initializing Tx queues update Non-Uniform Memory Access configuration in NIC firmware.
Signed-off-by: Rafal Kozik <rk@semihalf.com> Acked-by: Michal Krawczyk <mk@se
net/ena: update NUMA node
During initializing Tx queues update Non-Uniform Memory Access configuration in NIC firmware.
Signed-off-by: Rafal Kozik <rk@semihalf.com> Acked-by: Michal Krawczyk <mk@semihalf.com>
show more ...
|
#
241da076 |
| 07-Jun-2018 |
Rafal Kozik <rk@semihalf.com> |
net/ena: adjust error checking and cleaning
Adjust error checking and cleaning to Linux driver: * add checking if MTU is to small, * fix error messages (mismatched Rx and Tx), * return error rece
net/ena: adjust error checking and cleaning
Adjust error checking and cleaning to Linux driver: * add checking if MTU is to small, * fix error messages (mismatched Rx and Tx), * return error received from base driver or proper error code instead of -1, * in case of error release occupied resources, * in case of Rx error trigger NIC reset.
Signed-off-by: Rafal Kozik <rk@semihalf.com> Acked-by: Michal Krawczyk <mk@semihalf.com>
show more ...
|
#
3d19e1ab |
| 07-Jun-2018 |
Rafal Kozik <rk@semihalf.com> |
net/ena: add (un)likely statements
Add likely and unlikely statements to increase performance.
Signed-off-by: Rafal Kozik <rk@semihalf.com> Acked-by: Michal Krawczyk <mk@semihalf.com>
|
#
f7d82d24 |
| 07-Jun-2018 |
Rafal Kozik <rk@semihalf.com> |
net/ena: validate Tx req id
Validate Tx req id during clearing completed packets. If id is wrong, trigger NIC reset.
Signed-off-by: Rafal Kozik <rk@semihalf.com> Acked-by: Michal Krawczyk <mk@semih
net/ena: validate Tx req id
Validate Tx req id during clearing completed packets. If id is wrong, trigger NIC reset.
Signed-off-by: Rafal Kozik <rk@semihalf.com> Acked-by: Michal Krawczyk <mk@semihalf.com>
show more ...
|
#
01bd6877 |
| 07-Jun-2018 |
Rafal Kozik <rk@semihalf.com> |
net/ena: rework configuration of IO queue numbers
Move configuration of IO queue numbers to separate function and take into consideration max number of IO completion queues.
Signed-off-by: Rafal Ko
net/ena: rework configuration of IO queue numbers
Move configuration of IO queue numbers to separate function and take into consideration max number of IO completion queues.
Signed-off-by: Rafal Kozik <rk@semihalf.com> Acked-by: Michal Krawczyk <mk@semihalf.com>
show more ...
|
#
983cce2d |
| 07-Jun-2018 |
Rafal Kozik <rk@semihalf.com> |
net/ena: log unimplemented handler error
Enable AENQ FATAL_ERROR and WARNING callbacks by setting flags in aenq_groups. They are handled by "unimplemented handler".
If unimplemented handler is call
net/ena: log unimplemented handler error
Enable AENQ FATAL_ERROR and WARNING callbacks by setting flags in aenq_groups. They are handled by "unimplemented handler".
If unimplemented handler is called, error is logged.
Signed-off-by: Rafal Kozik <rk@semihalf.com> Acked-by: Michal Krawczyk <mk@semihalf.com>
show more ...
|
#
92680dc2 |
| 07-Jun-2018 |
Rafal Kozik <rk@semihalf.com> |
net/ena: add info about max number of Tx/Rx descriptors
In function ena_infos_get driver provides information about minimal and maximal number of Rx and Tx descriptors.
Signed-off-by: Rafal Kozik <
net/ena: add info about max number of Tx/Rx descriptors
In function ena_infos_get driver provides information about minimal and maximal number of Rx and Tx descriptors.
Signed-off-by: Rafal Kozik <rk@semihalf.com> Acked-by: Michal Krawczyk <mk@semihalf.com>
show more ...
|
#
2061fe41 |
| 07-Jun-2018 |
Rafal Kozik <rk@semihalf.com> |
net/ena: linearize Tx mbuf
Function ena_check_and_linearize_mbuf check Tx mbuf for number of segments and linearize (defragment) it if necessary. It is called before sending each packet.
Informatio
net/ena: linearize Tx mbuf
Function ena_check_and_linearize_mbuf check Tx mbuf for number of segments and linearize (defragment) it if necessary. It is called before sending each packet.
Information about maximum number of segments is stored per each ring.
Maximum number of segments supported by NIC is taken from ENA COM in ena_calc_queue_size function and stored in adapter structure.
Signed-off-by: Rafal Kozik <rk@semihalf.com> Acked-by: Michal Krawczyk <mk@semihalf.com>
show more ...
|
#
c2034976 |
| 07-Jun-2018 |
Michal Krawczyk <mk@semihalf.com> |
net/ena: add Rx out of order completion
This feature allows Rx packets to be cleaned up out of order.
Signed-off-by: Michal Krawczyk <mk@semihalf.com>
|
#
e859d2b8 |
| 07-Jun-2018 |
Rafal Kozik <rk@semihalf.com> |
net/ena: make watchdog configurable
Add variable wd_state to make driver functional without keep alive AENQ handler. The watchdog will be executed only if the aenq group has keep alive enabled.
Sig
net/ena: make watchdog configurable
Add variable wd_state to make driver functional without keep alive AENQ handler. The watchdog will be executed only if the aenq group has keep alive enabled.
Signed-off-by: Rafal Kozik <rk@semihalf.com> Acked-by: Michal Krawczyk <mk@semihalf.com>
show more ...
|
#
5efb9fc7 |
| 07-Jun-2018 |
Michal Krawczyk <mk@semihalf.com> |
net/ena: check for admin queue state
The admin queue can stop responding or became inactive due to unexpected behaviour of the device. In that case, the whole device should be restarted.
Signed-off
net/ena: check for admin queue state
The admin queue can stop responding or became inactive due to unexpected behaviour of the device. In that case, the whole device should be restarted.
Signed-off-by: Michal Krawczyk <mk@semihalf.com>
show more ...
|
#
d9b8b106 |
| 07-Jun-2018 |
Michal Krawczyk <mk@semihalf.com> |
net/ena: add watchdog and keep alive AENQ handler
Keep alive is executing AENQ interrupt periodically. It allows to check health of the device and trigger reset event if the device will stop respond
net/ena: add watchdog and keep alive AENQ handler
Keep alive is executing AENQ interrupt periodically. It allows to check health of the device and trigger reset event if the device will stop responding.
To check for the state of the device, the DPDK application must call rte_timer_manage().
Signed-off-by: Michal Krawczyk <mk@semihalf.com>
show more ...
|
#
2081d5e2 |
| 07-Jun-2018 |
Michal Krawczyk <mk@semihalf.com> |
net/ena: add reset routine
Reset routine can be used by the DPDK application to reset the device in case of receiving RTE_ETH_EVENT_INTR_RESET from the PMD.
The reset event is not triggered by the
net/ena: add reset routine
Reset routine can be used by the DPDK application to reset the device in case of receiving RTE_ETH_EVENT_INTR_RESET from the PMD.
The reset event is not triggered by the driver, yet. It will be added in next commits to enable error recovery in case of misfunctioning of the device.
Signed-off-by: Michal Krawczyk <mk@semihalf.com>
show more ...
|
#
53b61841 |
| 07-Jun-2018 |
Michal Krawczyk <mk@semihalf.com> |
net/ena: restart only initialized queues instead of all
There is no need to check for restart all queues. It is sufficient to check only previously initialized queues.
Signed-off-by: Michal Krawczy
net/ena: restart only initialized queues instead of all
There is no need to check for restart all queues. It is sufficient to check only previously initialized queues.
Signed-off-by: Michal Krawczyk <mk@semihalf.com>
show more ...
|
#
f01f060c |
| 07-Jun-2018 |
Rafal Kozik <rk@semihalf.com> |
net/ena: handle ENA notification
When ENA notifications are provided ena_notification handler is called. It checks if received value is not corrupted and if necessary it reports proper warnings.
Da
net/ena: handle ENA notification
When ENA notifications are provided ena_notification handler is called. It checks if received value is not corrupted and if necessary it reports proper warnings.
Data received from NIC is parsed in ena_update_hints. Fields for storing those information was added to ena_adapter structure.
ENA notification are enabled by setting ENA_ADMIN_NOTIFICATION flag in aenq_groups.
Signed-off-by: Rafal Kozik <rk@semihalf.com> Acked-by: Michal Krawczyk <mk@semihalf.com>
show more ...
|
#
ca148440 |
| 07-Jun-2018 |
Michal Krawczyk <mk@semihalf.com> |
net/ena: add LSC intr support and AENQ handling
To make the LSC interrupt working, the AENQ must be configured properly in the ENA device. The AENQ interrupt is common for all maintenance interrupts
net/ena: add LSC intr support and AENQ handling
To make the LSC interrupt working, the AENQ must be configured properly in the ENA device. The AENQ interrupt is common for all maintenance interrupts - the proper handler is then executed depending on the received descriptor.
Signed-off-by: Michal Krawczyk <mk@semihalf.com>
show more ...
|