net/mlx5: Use exact encap header size for the FW input buffer
authorOr Gerlitz <ogerlitz@mellanox.com>
Sun, 11 Dec 2016 10:15:08 +0000 (12:15 +0200)
committerSaeed Mahameed <saeedm@mellanox.com>
Tue, 24 Jan 2017 19:13:57 +0000 (21:13 +0200)
The current code is allocating the max encap size supported by
the firmware and not the size requested by the caller, fix that.

Also, spare a warning when the size of the encapsulation headers
is bigger from what is supported by the firmware.

Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Reviewed-by: Hadar Hen Zion <hadarh@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c

index c4478ecd8056e42de2c359eb7a2abfd9e6400090..b5253b59e8fe12ada11906b2a4aa8f8c2eb4a66a 100644 (file)
@@ -473,10 +473,13 @@ int mlx5_encap_alloc(struct mlx5_core_dev *dev,
        int err;
        u32 *in;
 
-       if (size > MLX5_CAP_ESW(dev, max_encap_header_size))
+       if (size > max_encap_size) {
+               mlx5_core_warn(dev, "encap size %zd too big, max supported is %d\n",
+                              size, max_encap_size);
                return -EINVAL;
+       }
 
-       in = kzalloc(MLX5_ST_SZ_BYTES(alloc_encap_header_in) + max_encap_size,
+       in = kzalloc(MLX5_ST_SZ_BYTES(alloc_encap_header_in) + size,
                     GFP_KERNEL);
        if (!in)
                return -ENOMEM;