net/mlx5: Properly convey driver version to firmware
authorLeon Romanovsky <leonro@nvidia.com>
Thu, 15 Oct 2020 11:52:00 +0000 (14:52 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 30 Dec 2020 10:53:35 +0000 (11:53 +0100)
[ Upstream commit 907af0f0cab4ee5d5604f182ecec2c5b5119d294 ]

mlx5 firmware expects driver version in specific format X.X.X, so
make it always correct and based on real kernel version aligned with
the driver.

Fixes: 012e50e109fd ("net/mlx5: Set driver version into firmware")
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/main.c

index 8ff207a..e455a2f 100644 (file)
@@ -50,6 +50,7 @@
 #ifdef CONFIG_RFS_ACCEL
 #include <linux/cpu_rmap.h>
 #endif
+#include <linux/version.h>
 #include <net/devlink.h>
 #include "mlx5_core.h"
 #include "lib/eq.h"
@@ -233,7 +234,10 @@ static void mlx5_set_driver_version(struct mlx5_core_dev *dev)
        strncat(string, ",", remaining_size);
 
        remaining_size = max_t(int, 0, driver_ver_sz - strlen(string));
-       strncat(string, DRIVER_VERSION, remaining_size);
+
+       snprintf(string + strlen(string), remaining_size, "%u.%u.%u",
+                (u8)((LINUX_VERSION_CODE >> 16) & 0xff), (u8)((LINUX_VERSION_CODE >> 8) & 0xff),
+                (u16)(LINUX_VERSION_CODE & 0xffff));
 
        /*Send the command*/
        MLX5_SET(set_driver_version_in, in, opcode,