Netdev List
 help / color / mirror / Atom feed
From: Saeed Mahameed <saeedm@mellanox.com>
To: "David S. Miller" <davem@davemloft.net>
Cc: netdev@vger.kernel.org, Or Gerlitz <ogerlitz@mellanox.com>,
	Saeed Mahameed <saeedm@mellanox.com>
Subject: [net-next 10/12] IB/mlx5: Enable Eth VFs to query their min-inline value for user-space
Date: Tue, 24 Jan 2017 22:16:50 +0200	[thread overview]
Message-ID: <20170124201652.2920-11-saeedm@mellanox.com> (raw)
In-Reply-To: <20170124201652.2920-1-saeedm@mellanox.com>

From: Or Gerlitz <ogerlitz@mellanox.com>

For some mlx5 HW models (CX4, CX4Lx), the VF driver needs to put part
of the packet headers on the TX descriptor so the e-switch can do proper
matching and steering. This is called "min-inline", it's advertized to
the VF by the FW and also enforced on them by the HW, such that if they
don't obey, their packets are dropped.

SRIOV VF libmlx5 instances should take into account the min-inline
value of their vports. For that end, we provide this value through
the vendor response part of init_ucontext command.

The min inline value is reported in a way which will let newer libmlx5
instances realize that they are running over an older kernel and act
accordingly (e.g apply some educated guess).

Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Reviewed-by: Matan Barak <matanb@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
---
 drivers/infiniband/hw/mlx5/main.c |  9 +++++++++
 include/uapi/rdma/mlx5-abi.h      | 14 +++++++++++++-
 2 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c
index 8727116a4cab..9d8535385bb8 100644
--- a/drivers/infiniband/hw/mlx5/main.c
+++ b/drivers/infiniband/hw/mlx5/main.c
@@ -53,6 +53,7 @@
 #include <linux/in.h>
 #include <linux/etherdevice.h>
 #include <linux/mlx5/fs.h>
+#include <linux/mlx5/vport.h>
 #include "mlx5_ib.h"
 
 #define DRIVER_NAME "mlx5_ib"
@@ -1202,6 +1203,14 @@ static struct ib_ucontext *mlx5_ib_alloc_ucontext(struct ib_device *ibdev,
 		resp.response_length += sizeof(resp.cmds_supp_uhw);
 	}
 
+	if (field_avail(typeof(resp), eth_min_inline, udata->outlen)) {
+		if (mlx5_ib_port_link_layer(ibdev, 1) == IB_LINK_LAYER_ETHERNET) {
+			mlx5_query_min_inline(dev->mdev, &resp.eth_min_inline);
+			resp.eth_min_inline++;
+		}
+		resp.response_length += sizeof(resp.eth_min_inline);
+	}
+
 	/*
 	 * We don't want to expose information from the PCI bar that is located
 	 * after 4096 bytes, so if the arch only supports larger pages, let's
diff --git a/include/uapi/rdma/mlx5-abi.h b/include/uapi/rdma/mlx5-abi.h
index 85dc966ea70b..da7cd62bace7 100644
--- a/include/uapi/rdma/mlx5-abi.h
+++ b/include/uapi/rdma/mlx5-abi.h
@@ -90,6 +90,17 @@ enum mlx5_user_cmds_supp_uhw {
 	MLX5_USER_CMDS_SUPP_UHW_CREATE_AH    = 1 << 1,
 };
 
+/* The eth_min_inline response value is set to off-by-one vs the FW
+ * returned value to allow user-space to deal with older kernels.
+ */
+enum mlx5_user_inline_mode {
+	MLX5_USER_INLINE_MODE_NA,
+	MLX5_USER_INLINE_MODE_NONE,
+	MLX5_USER_INLINE_MODE_L2,
+	MLX5_USER_INLINE_MODE_IP,
+	MLX5_USER_INLINE_MODE_TCP_UDP,
+};
+
 struct mlx5_ib_alloc_ucontext_resp {
 	__u32	qp_tab_size;
 	__u32	bf_reg_size;
@@ -106,7 +117,8 @@ struct mlx5_ib_alloc_ucontext_resp {
 	__u32	response_length;
 	__u8	cqe_version;
 	__u8	cmds_supp_uhw;
-	__u16	reserved2;
+	__u8	eth_min_inline;
+	__u8	reserved2;
 	__u64	hca_core_clock_offset;
 	__u32	log_uar_size;
 	__u32	num_uars_per_page;
-- 
2.11.0

  parent reply	other threads:[~2017-01-24 20:17 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-24 20:16 [pull request][net-next 00/12] Mellanox mlx5 updates 2017-01-24 Saeed Mahameed
2017-01-24 20:16 ` [net-next 01/12] net/mlx5: Use exact encap header size for the FW input buffer Saeed Mahameed
2017-01-24 20:16 ` [net-next 02/12] net/mlx5e: Add TC offloads matching on IPv6 encapsulation headers Saeed Mahameed
2017-01-24 20:16 ` [net-next 03/12] net/mlx5e: TC ipv4 tunnel encap offload cosmetic changes Saeed Mahameed
2017-01-24 20:16 ` [net-next 04/12] net/mlx5e: Use the full tunnel key info for encapsulation offload house-keeping Saeed Mahameed
2017-01-24 20:16 ` [net-next 05/12] net/mlx5e: Maximize ip tunnel key usage on the TC offloading path Saeed Mahameed
2017-01-24 20:16 ` [net-next 06/12] net/mlx5e: Support SRIOV TC encapsulation offloads for IPv6 tunnels Saeed Mahameed
2017-01-24 20:16 ` [net-next 07/12] net/mlx5: E-Switch, Enlarge the FDB size for the switchdev mode Saeed Mahameed
2017-01-24 20:16 ` [net-next 08/12] net/mlx5: Add support for setting VF min rate Saeed Mahameed
2017-01-24 20:16 ` [net-next 09/12] net/mlx5: Push min-inline mode resolution helper into the core Saeed Mahameed
2017-01-24 20:16 ` Saeed Mahameed [this message]
2017-01-24 20:16 ` [net-next 11/12] net/mlx5e: Reduce memory consumption on kdump kernel Saeed Mahameed
2017-01-24 20:16 ` [net-next 12/12] net/mlx5e: CQE compression control code reuse Saeed Mahameed
2017-01-25 17:52 ` [pull request][net-next 00/12] Mellanox mlx5 updates 2017-01-24 David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170124201652.2920-11-saeedm@mellanox.com \
    --to=saeedm@mellanox.com \
    --cc=davem@davemloft.net \
    --cc=netdev@vger.kernel.org \
    --cc=ogerlitz@mellanox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox