int align = roundup_pow_of_two(size);
        struct mlx5_cmd *cmd = &dev->cmd;
        u32 cmd_h, cmd_l;
-       u16 cmd_if_rev;
        int err;
        int i;
 
        memset(cmd, 0, sizeof(*cmd));
-       cmd_if_rev = cmdif_rev(dev);
-       if (cmd_if_rev != CMD_IF_REV) {
+       cmd->vars.cmdif_rev = cmdif_rev(dev);
+       if (cmd->vars.cmdif_rev != CMD_IF_REV) {
                mlx5_core_err(dev,
                              "Driver cmdif rev(%d) differs from firmware's(%d)\n",
-                             CMD_IF_REV, cmd_if_rev);
+                             CMD_IF_REV, cmd->vars.cmdif_rev);
                return -EINVAL;
        }
 
        cmd->vars.max_reg_cmds = (1 << cmd->vars.log_sz) - 1;
        cmd->vars.bitmask = (1UL << cmd->vars.max_reg_cmds) - 1;
 
-       cmd->vars.cmdif_rev = ioread32be(&dev->iseg->cmdif_rev_fw_sub) >> 16;
-       if (cmd->vars.cmdif_rev > CMD_IF_REV) {
-               mlx5_core_err(dev, "driver does not support command interface version. driver %d, firmware %d\n",
-                             CMD_IF_REV, cmd->vars.cmdif_rev);
-               err = -EOPNOTSUPP;
-               goto err_free_page;
-       }
-
        spin_lock_init(&cmd->alloc_lock);
        spin_lock_init(&cmd->token_lock);
        for (i = 0; i < MLX5_CMD_OP_MAX; i++)