#
a687c3e6 |
| 29-Feb-2024 |
Bing Zhao <bingz@nvidia.com> |
net/mlx5: fix counters map in bonding mode
In the HW-LAG mode, there is only one mlx5 IB device with 2 ETH interfaces. In theory, the settings on both ports should be the same. But in the real life,
net/mlx5: fix counters map in bonding mode
In the HW-LAG mode, there is only one mlx5 IB device with 2 ETH interfaces. In theory, the settings on both ports should be the same. But in the real life, some inconsistent settings may be done by the user and the PMD is not aware of this.
In the previous implementation, the xstats map was generated from the information fetched on the 1st port of a bonding interface. If the 2nd port had a different settings, the number and the order of the counters may differ from that of the 1st one. The ioctl() call may corrupt the user buffers (copy_to_user) and cause a crash.
The commit will change the map between the driver counters to the PMD user counters. 1. Switch the inner and outer loop to speed up the initialization time AMAP - since there will be >300 counters returned from the driver. 2. Generate an unique map for both ports in LAG mode. a. Scan the 1st port and find the supported counters' strings, then add to the map. b. In bonding, scan the 2nd port and find the strings. If one is already in the map, use the index. Or append to the next free slot. c. Append the device counters that needs to be fetched via sysfs or Devx command. This kind of counter(s) is unique per IB device.
After querying the statistics from the driver, the value will be read from the proper offset in the "struct ethtool_stats" and then added into the output array based on the map information. In bonding mode, the statistics from both ports will be accumulated if the counters are valid on both ports.
Compared to the system call or Devx command, the overhead introduced by the extra index comparison is light and should not cause a significant degradation.
The application should ensure that the port settings should not be changed out of the DPDK application dynamically in most cases. Or else the change cannot be notified and the counters map might not be valid when the number doesn't change but the counters set had changed. A device restart will help to re-initialize the map from scrath.
Fixes: 7ed15acdcd69 ("net/mlx5: improve xstats of bonding port") Cc: stable@dpdk.org
Signed-off-by: Bing Zhao <bingz@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
show more ...
|
#
9b31fc90 |
| 03-Jan-2023 |
Viacheslav Ovsiienko <viacheslavo@nvidia.com> |
net/mlx5: fix read device clock in real time mode
Since ConnectX-6DX the real time timestamp mode is supported. The rte_eth_read_clock() routine queries current timestamp value from the PMD.
The ml
net/mlx5: fix read device clock in real time mode
Since ConnectX-6DX the real time timestamp mode is supported. The rte_eth_read_clock() routine queries current timestamp value from the PMD.
The mlx5 PMD has special infrastructure to schedule packet sending in real time mode which can be engaged with tx_pp devarg. This infrastructure provides the timestamp reading from the special queue CEQs directly from the host memory in user space, without involving kernel calls.
The ConnectX-7 NIC has hardware capability to schedule packet sending without special infrastructure and tx_pp devarg can be omitted. If there is no tx_pp devarg specified the mlx5 uses kernel calls to query current timestamp value. The kernel can be completely unaware about engaged real time mode, also kernel might use its internal queue CQEs to get timestamps, that is neither precise nor reliable, inconsistent values might be returned, causing send scheduling malfunction.
The HCA PCI BAR provides the real time direct reading from hardware. This patch maps PCI resource to the process address space on demand and allows reading the real time timestamp values from the NIC directly.
Fixes: b94d93ca73803 ("net/mlx5: support reading device clock") Cc: stable@dpdk.org
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
show more ...
|
#
72d7efe4 |
| 16-Jun-2022 |
Spike Du <spiked@nvidia.com> |
common/mlx5: share interrupt management
There are many duplicate code of creating and initializing rte_intr_handle. Add a new mlx5_os API to do this, replace all PMD related code with this API.
Sig
common/mlx5: share interrupt management
There are many duplicate code of creating and initializing rte_intr_handle. Add a new mlx5_os API to do this, replace all PMD related code with this API.
Signed-off-by: Spike Du <spiked@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
cb91f12f |
| 10-Apr-2022 |
Adham Masarwah <adham@nvidia.com> |
net/mlx5: support MTU settings on Windows
Mlx5Devx library has new API's for setting and getting MTU. Added new glue functions that wrap the new mlx5devx lib API's. Implemented the os_ethdev callbac
net/mlx5: support MTU settings on Windows
Mlx5Devx library has new API's for setting and getting MTU. Added new glue functions that wrap the new mlx5devx lib API's. Implemented the os_ethdev callbacks to use the new glue functions in Windows.
Signed-off-by: Adham Masarwah <adham@nvidia.com> Tested-by: Idan Hackmon <idanhac@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
e50fe91a |
| 24-Dec-2021 |
Tal Shnaiderman <talshn@nvidia.com> |
net/mlx5: support imissed counter on Windows
Add support for the imissed counter using the DevX API on Windows.
imissed is queried by creating a queue counter for the port, attaching it to all crea
net/mlx5: support imissed counter on Windows
Add support for the imissed counter using the DevX API on Windows.
imissed is queried by creating a queue counter for the port, attaching it to all created RQs and querying the "out_of_buffer" field.
If the counter cannot be created, imissed will always report 0.
Signed-off-by: Tal Shnaiderman <talshn@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
e8482187 |
| 05-Nov-2021 |
Bing Zhao <bingz@nvidia.com> |
net/mlx5: check delay drop settings in kernel driver
The delay drop is the common feature managed on per device basis and the kernel driver is responsible one for the initialization and rearming.
B
net/mlx5: check delay drop settings in kernel driver
The delay drop is the common feature managed on per device basis and the kernel driver is responsible one for the initialization and rearming.
By default, the timeout value is set to activate the delay drop when the driver is loaded.
A private flag "dropless_rq" is used to control the rearming. Only when it is on, the rearming will be handled once received a timeout event. Or else, the delay drop will be deactivated after the first timeout occurs and all the Rx queues won't have this feature.
The PMD is trying to query this flag and warn the application when some queues are created with delay drop but the flag is off.
Signed-off-by: Bing Zhao <bingz@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
show more ...
|
#
ca1418ce |
| 19-Oct-2021 |
Michael Baum <michaelba@nvidia.com> |
common/mlx5: share device context object
Create shared context device in common area and add it as a field of common device. Use this context device in all drivers and remove the ctx field from thei
common/mlx5: share device context object
Create shared context device in common area and add it as a field of common device. Use this context device in all drivers and remove the ctx field from their private structure.
Signed-off-by: Michael Baum <michaelba@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
d5003573 |
| 06-Apr-2021 |
Tal Shnaiderman <talshn@nvidia.com> |
net/mlx5: fix link speed calculation on Windows
In Windows DevX returns the rate of the current link speed in bit/s, this rate was converted to Mibit/s instead of the Mbit/s rate expected by DPDK re
net/mlx5: fix link speed calculation on Windows
In Windows DevX returns the rate of the current link speed in bit/s, this rate was converted to Mibit/s instead of the Mbit/s rate expected by DPDK resulting in wrong link speed reporting.
Fixes: 6fbd73709ee4 ("net/mlx5: support link update on Windows") Cc: stable@dpdk.org
Signed-off-by: Tal Shnaiderman <talshn@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
df96fd0d |
| 29-Jan-2021 |
Bruce Richardson <bruce.richardson@intel.com> |
ethdev: make driver-only headers private
The rte_ethdev_driver.h, rte_ethdev_vdev.h and rte_ethdev_pci.h files are for drivers only and should be a private to DPDK and not installed.
Signed-off-by:
ethdev: make driver-only headers private
The rte_ethdev_driver.h, rte_ethdev_vdev.h and rte_ethdev_pci.h files are for drivers only and should be a private to DPDK and not installed.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com> Acked-by: Thomas Monjalon <thomas@monjalon.net> Acked-by: Steven Webster <steven.webster@windriver.com>
show more ...
|
#
28743807 |
| 28-Dec-2020 |
Tal Shnaiderman <talshn@nvidia.com> |
net/mlx5: fix device name size on Windows
Windows Devx interface name is the same as device name with different size then IF_NAMESIZE. To support it MLX5_NAMESIZE is defined with IF_NAMESIZE value f
net/mlx5: fix device name size on Windows
Windows Devx interface name is the same as device name with different size then IF_NAMESIZE. To support it MLX5_NAMESIZE is defined with IF_NAMESIZE value for Linux and MLX5_FS_NAME_MAX value for Windows.
Fixes: e9c0b96e3526 ("net/mlx5: move Linux ifname function") Cc: stable@dpdk.org
Signed-off-by: Tal Shnaiderman <talshn@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
165e5d07 |
| 28-Dec-2020 |
Tal Shnaiderman <talshn@nvidia.com> |
net/mlx5: support device removed query on Windows
This commit implements mlx5_is_removed() API. A new glue call 'init_shutdown_event' is added to support the new API.
Signed-off-by: Tal Shnaiderman
net/mlx5: support device removed query on Windows
This commit implements mlx5_is_removed() API. A new glue call 'init_shutdown_event' is added to support the new API.
Signed-off-by: Tal Shnaiderman <talshn@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
49c797f8 |
| 28-Dec-2020 |
Tal Shnaiderman <talshn@nvidia.com> |
net/mlx5: support getting interface name on Windows
This commit copies the interface name as saved in the device context since its creation.
Signed-off-by: Tal Shnaiderman <talshn@nvidia.com> Acked
net/mlx5: support getting interface name on Windows
This commit copies the interface name as saved in the device context since its creation.
Signed-off-by: Tal Shnaiderman <talshn@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
07cae8ff |
| 28-Dec-2020 |
Tal Shnaiderman <talshn@nvidia.com> |
net/mlx5: support getting MTU on Windows
This commit implements API mlx5_get_mtu(). It returns the MTU size as saved in the device context since its creation.
Signed-off-by: Tal Shnaiderman <talshn
net/mlx5: support getting MTU on Windows
This commit implements API mlx5_get_mtu(). It returns the MTU size as saved in the device context since its creation.
Signed-off-by: Tal Shnaiderman <talshn@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
99d7c45c |
| 28-Dec-2020 |
Tal Shnaiderman <talshn@nvidia.com> |
net/mlx5: support clock read on Windows
This commit adds a new glue function query_rt_values to support the new API mlx5_read_clock().
Signed-off-by: Tal Shnaiderman <talshn@nvidia.com> Acked-by: M
net/mlx5: support clock read on Windows
This commit adds a new glue function query_rt_values to support the new API mlx5_read_clock().
Signed-off-by: Tal Shnaiderman <talshn@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
6fbd7370 |
| 28-Dec-2020 |
Tal Shnaiderman <talshn@nvidia.com> |
net/mlx5: support link update on Windows
Add support for mlx5_link_update() to get link speed and link state. Other parameters are currently hard-coded.
Signed-off-by: Tal Shnaiderman <talshn@nvidi
net/mlx5: support link update on Windows
Add support for mlx5_link_update() to get link speed and link state. Other parameters are currently hard-coded.
Signed-off-by: Tal Shnaiderman <talshn@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
b653ce1d |
| 28-Dec-2020 |
Ophir Munk <ophirmu@nvidia.com> |
net/mlx5: add stubs on Windows
This commits adds ethdev stubs. These APIs are called from shared code that must compile under Linux and Windows. The following stubs are added: mlx5_set_mtu mlx5_os_r
net/mlx5: add stubs on Windows
This commits adds ethdev stubs. These APIs are called from shared code that must compile under Linux and Windows. The following stubs are added: mlx5_set_mtu mlx5_os_read_dev_counters mlx5_intr_callback_unregister mlx5_os_get_stats_n mlx5_os_stats_init mlx5_set_link_down mlx5_set_link_up mlx5_dev_get_flow_ctrl mlx5_dev_set_flow_ctrl mlx5_get_module_info mlx5_get_module_eeprom
Signed-off-by: Ophir Munk <ophirmu@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
93cc4f0d |
| 28-Dec-2020 |
Tal Shnaiderman <talshn@nvidia.com> |
net/mlx5: support getting MAC on Windows
This commits implements API mlx5_get_mac(). It returns the MAC address saved in the device context since its creation.
Signed-off-by: Tal Shnaiderman <tals
net/mlx5: support getting MAC on Windows
This commits implements API mlx5_get_mac(). It returns the MAC address saved in the device context since its creation.
Signed-off-by: Tal Shnaiderman <talshn@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|