Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e818e255 authored by Ariel Levkovich's avatar Ariel Levkovich Committed by Jason Gunthorpe
Browse files

IB/mlx5: Expose MPLS related tunneling offloads



This patch reports the device's capbilities to offload
encapsulated MPLS tunnel protocols to user-space:
- Capability to offload MPLS over GRE.
- Capability to offload MPLS over UDP.

Reviewed-by: default avatarMark Bloch <markb@mellanox.com>
Signed-off-by: default avatarAriel Levkovich <lariel@mellanox.com>
Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
parent 71c6e863
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -1084,6 +1084,14 @@ static int mlx5_ib_query_device(struct ib_device *ibdev,
		if (MLX5_CAP_ETH(mdev, tunnel_stateless_gre))
			resp.tunnel_offloads_caps |=
				MLX5_IB_TUNNELED_OFFLOADS_GRE;
		if (MLX5_CAP_GEN(mdev, flex_parser_protocols) &
		    MLX5_FLEX_PROTO_CW_MPLS_GRE)
			resp.tunnel_offloads_caps |=
				MLX5_IB_TUNNELED_OFFLOADS_MPLS_GRE;
		if (MLX5_CAP_GEN(mdev, flex_parser_protocols) &
		    MLX5_FLEX_PROTO_CW_MPLS_UDP)
			resp.tunnel_offloads_caps |=
				MLX5_IB_TUNNELED_OFFLOADS_MPLS_UDP;
	}

	if (uhw->outlen) {
+5 −0
Original line number Diff line number Diff line
@@ -1001,6 +1001,11 @@ enum mlx5_mpls_supported_fields {
	MLX5_FIELD_SUPPORT_MPLS_TTL   = 1 << 3
};

enum mlx5_flex_parser_protos {
	MLX5_FLEX_PROTO_CW_MPLS_GRE   = 1 << 4,
	MLX5_FLEX_PROTO_CW_MPLS_UDP   = 1 << 5,
};

/* MLX5 DEV CAPs */

/* TODO: EAT.ME */
+3 −1
Original line number Diff line number Diff line
@@ -1138,7 +1138,9 @@ struct mlx5_ifc_cmd_hca_cap_bits {

	u8         reserved_at_500[0x20];
	u8	   num_of_uars_per_page[0x20];
	u8         reserved_at_540[0x40];

	u8         flex_parser_protocols[0x20];
	u8         reserved_at_560[0x20];

	u8         reserved_at_580[0x3d];
	u8         cqe_128_always[0x1];
+3 −1
Original line number Diff line number Diff line
@@ -233,7 +233,9 @@ enum mlx5_ib_query_dev_resp_flags {
enum mlx5_ib_tunnel_offloads {
	MLX5_IB_TUNNELED_OFFLOADS_VXLAN  = 1 << 0,
	MLX5_IB_TUNNELED_OFFLOADS_GRE    = 1 << 1,
	MLX5_IB_TUNNELED_OFFLOADS_GENEVE = 1 << 2
	MLX5_IB_TUNNELED_OFFLOADS_GENEVE = 1 << 2,
	MLX5_IB_TUNNELED_OFFLOADS_MPLS_GRE = 1 << 3,
	MLX5_IB_TUNNELED_OFFLOADS_MPLS_UDP = 1 << 4,
};

struct mlx5_ib_query_device_resp {