return err;
 }
 
+static void mlx5_set_driver_version(struct mlx5_core_dev *dev)
+{
+       int driver_ver_sz = MLX5_FLD_SZ_BYTES(set_driver_version_in,
+                                             driver_version);
+       u8 in[MLX5_ST_SZ_BYTES(set_driver_version_in)] = {0};
+       u8 out[MLX5_ST_SZ_BYTES(set_driver_version_out)] = {0};
+       int remaining_size = driver_ver_sz;
+       char *string;
+
+       if (!MLX5_CAP_GEN(dev, driver_version))
+               return;
+
+       string = MLX5_ADDR_OF(set_driver_version_in, in, driver_version);
+
+       strncpy(string, "Linux", remaining_size);
+
+       remaining_size = max_t(int, 0, driver_ver_sz - strlen(string));
+       strncat(string, ",", remaining_size);
+
+       remaining_size = max_t(int, 0, driver_ver_sz - strlen(string));
+       strncat(string, DRIVER_NAME, remaining_size);
+
+       remaining_size = max_t(int, 0, driver_ver_sz - strlen(string));
+       strncat(string, ",", remaining_size);
+
+       remaining_size = max_t(int, 0, driver_ver_sz - strlen(string));
+       strncat(string, DRIVER_VERSION, remaining_size);
+
+       /*Send the command*/
+       MLX5_SET(set_driver_version_in, in, opcode,
+                MLX5_CMD_OP_SET_DRIVER_VERSION);
+
+       mlx5_cmd_exec(dev, in, sizeof(in), out, sizeof(out));
+}
+
 static int set_dma_caps(struct pci_dev *pdev)
 {
        int err;
                goto err_pagealloc_stop;
        }
 
+       mlx5_set_driver_version(dev);
+
        mlx5_start_health_poll(dev);
 
        err = mlx5_query_hca_caps(dev);