aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Bloch <markb@mellanox.com>2018-08-28 07:18:48 -0400
committerLeon Romanovsky <leonro@mellanox.com>2018-09-05 01:11:18 -0400
commit31ca3648f01bf19ae64618521ce539615cc0d5a0 (patch)
tree31cff357c7b05a3470cf7f91b91835e89defb9d9
parentbea4e1f6c6c5744d467ebf8b0699f5e391835130 (diff)
net/mlx5: Pass a namespace for packet reformat ID allocation
Currently we attach packet reformat actions only to the FDB namespace. In preparation to be able to use that for NIC steering, pass the actual namespace as a parameter. Signed-off-by: Mark Bloch <markb@mellanox.com> Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com> Reviewed-by: Saeed Mahameed <saeedm@mellanox.com> Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/en_tc.c3
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c8
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h2
3 files changed, 12 insertions, 1 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
index 3df8f2b90908..8cac8e9c8c63 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
@@ -925,6 +925,7 @@ void mlx5e_tc_encap_flows_add(struct mlx5e_priv *priv,
925 925
926 err = mlx5_packet_reformat_alloc(priv->mdev, e->tunnel_type, 926 err = mlx5_packet_reformat_alloc(priv->mdev, e->tunnel_type,
927 e->encap_size, e->encap_header, 927 e->encap_size, e->encap_header,
928 MLX5_FLOW_NAMESPACE_FDB,
928 &e->encap_id); 929 &e->encap_id);
929 if (err) { 930 if (err) {
930 mlx5_core_warn(priv->mdev, "Failed to offload cached encapsulation header, %d\n", 931 mlx5_core_warn(priv->mdev, "Failed to offload cached encapsulation header, %d\n",
@@ -2389,6 +2390,7 @@ static int mlx5e_create_encap_header_ipv4(struct mlx5e_priv *priv,
2389 2390
2390 err = mlx5_packet_reformat_alloc(priv->mdev, e->tunnel_type, 2391 err = mlx5_packet_reformat_alloc(priv->mdev, e->tunnel_type,
2391 ipv4_encap_size, encap_header, 2392 ipv4_encap_size, encap_header,
2393 MLX5_FLOW_NAMESPACE_FDB,
2392 &e->encap_id); 2394 &e->encap_id);
2393 if (err) 2395 if (err)
2394 goto destroy_neigh_entry; 2396 goto destroy_neigh_entry;
@@ -2500,6 +2502,7 @@ static int mlx5e_create_encap_header_ipv6(struct mlx5e_priv *priv,
2500 2502
2501 err = mlx5_packet_reformat_alloc(priv->mdev, e->tunnel_type, 2503 err = mlx5_packet_reformat_alloc(priv->mdev, e->tunnel_type,
2502 ipv6_encap_size, encap_header, 2504 ipv6_encap_size, encap_header,
2505 MLX5_FLOW_NAMESPACE_FDB,
2503 &e->encap_id); 2506 &e->encap_id);
2504 if (err) 2507 if (err)
2505 goto destroy_neigh_entry; 2508 goto destroy_neigh_entry;
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c b/drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c
index 4539b709db20..cc9537891e39 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c
@@ -600,16 +600,22 @@ int mlx5_packet_reformat_alloc(struct mlx5_core_dev *dev,
600 int reformat_type, 600 int reformat_type,
601 size_t size, 601 size_t size,
602 void *reformat_data, 602 void *reformat_data,
603 enum mlx5_flow_namespace_type namespace,
603 u32 *packet_reformat_id) 604 u32 *packet_reformat_id)
604{ 605{
605 int max_encap_size = MLX5_CAP_ESW(dev, max_encap_header_size);
606 u32 out[MLX5_ST_SZ_DW(alloc_packet_reformat_context_out)]; 606 u32 out[MLX5_ST_SZ_DW(alloc_packet_reformat_context_out)];
607 void *packet_reformat_context_in; 607 void *packet_reformat_context_in;
608 int max_encap_size;
608 void *reformat; 609 void *reformat;
609 int inlen; 610 int inlen;
610 int err; 611 int err;
611 u32 *in; 612 u32 *in;
612 613
614 if (namespace == MLX5_FLOW_NAMESPACE_FDB)
615 max_encap_size = MLX5_CAP_ESW(dev, max_encap_header_size);
616 else
617 max_encap_size = MLX5_CAP_FLOWTABLE(dev, max_encap_header_size);
618
613 if (size > max_encap_size) { 619 if (size > max_encap_size) {
614 mlx5_core_warn(dev, "encap size %zd too big, max supported is %d\n", 620 mlx5_core_warn(dev, "encap size %zd too big, max supported is %d\n",
615 size, max_encap_size); 621 size, max_encap_size);
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h b/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h
index f3c8f51cc9c2..66a5dd5a6cbe 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h
+++ b/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h
@@ -39,6 +39,7 @@
39#include <linux/if_link.h> 39#include <linux/if_link.h>
40#include <linux/firmware.h> 40#include <linux/firmware.h>
41#include <linux/mlx5/cq.h> 41#include <linux/mlx5/cq.h>
42#include <linux/mlx5/fs.h>
42 43
43#define DRIVER_NAME "mlx5_core" 44#define DRIVER_NAME "mlx5_core"
44#define DRIVER_VERSION "5.0-0" 45#define DRIVER_VERSION "5.0-0"
@@ -173,6 +174,7 @@ int mlx5_packet_reformat_alloc(struct mlx5_core_dev *dev,
173 int reformat_type, 174 int reformat_type,
174 size_t size, 175 size_t size,
175 void *reformat_data, 176 void *reformat_data,
177 enum mlx5_flow_namespace_type namespace,
176 u32 *packet_reformat_id); 178 u32 *packet_reformat_id);
177void mlx5_packet_reformat_dealloc(struct mlx5_core_dev *dev, 179void mlx5_packet_reformat_dealloc(struct mlx5_core_dev *dev,
178 u32 packet_reformat_id); 180 u32 packet_reformat_id);