From patchwork Sun Feb 26 09:09:48 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Talat Batheesh X-Patchwork-Id: 734201 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) by ozlabs.org (Postfix) with ESMTP id 3vYDpq12s3z9s7k; Wed, 1 Mar 2017 23:12:35 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="k9hwXRSi"; dkim-atps=neutral Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.76) (envelope-from ) id 1cj37Q-00060p-5N; Wed, 01 Mar 2017 12:12:32 +0000 Received: from mail-db5eur01on0040.outbound.protection.outlook.com ([104.47.2.40] helo=EUR01-DB5-obe.outbound.protection.outlook.com) by huckleberry.canonical.com with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.76) (envelope-from ) id 1chuqQ-0007ot-9B for kernel-team@lists.canonical.com; Sun, 26 Feb 2017 09:10:18 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=Z+mg11N369ubd9/Gw1mG35K773rKwGj5Y5nM1AGzs1Y=; b=k9hwXRSiWaj3zzvAOr+UfgiZrNxyzcXr0uTP9VtU9WsnlhMSIwTS1Tct63M833WMkdpxsYCRRYeNfylqXTv7Ua57/cKFB00VybHTjksjxTw5/duJvvxwxDh2qlczA4LGNMJBbdC2kjCAyJErdyrIyVKUj1gbz4DXZ8qMDweJI4I= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=talatb@mellanox.com; Received: from dev-h-vrt-005.mth.labs.mlnx (193.47.165.251) by HE1PR05MB1306.eurprd05.prod.outlook.com (10.162.250.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.919.13; Sun, 26 Feb 2017 09:10:16 +0000 From: Talat Batheesh To: Subject: [PATCH 03/18] IB/mlx5: Enable Eth VFs to query their min-inline value for user-space Date: Sun, 26 Feb 2017 11:09:48 +0200 Message-ID: <1488100203-31976-3-git-send-email-talatb@mellanox.com> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1488100203-31976-1-git-send-email-talatb@mellanox.com> References: <1488100203-31976-1-git-send-email-talatb@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [193.47.165.251] X-ClientProxiedBy: AM4PR02CA0026.eurprd02.prod.outlook.com (10.165.239.164) To HE1PR05MB1306.eurprd05.prod.outlook.com (10.162.250.151) X-MS-Office365-Filtering-Correlation-Id: 6b2426b4-db00-4bac-0cd3-08d45e274808 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:HE1PR05MB1306; X-Microsoft-Exchange-Diagnostics: 1; HE1PR05MB1306; 3:Oc6OSutMvkHFUHZzI3rsMhB9KcJPS3+7BBopPljc8MPQvzYgdLbxUXzKiAfWszdOW4ZmpGH4JgY291yxaDrOUYv9WJmmGiUPlDEP9ppYCR+0Sh1e7GCtT3HME+f4sIZzB68EteneuYnn89hOmaf2MDJ6yCCL9ACe5agsvHfx2BBY3pId5bQfxuEmYRcG8lQjwM7EUwI7HlbsSowW25R1U/HBI+j+xJO092iBnCMRYFUY5z1b6AZfsuXFH/bP2bNWvJYaXufMooGRqsk6BsKg84C6rDMjrFwxWdPBFn0pVZE=; 25:r0kQXqcW/qAreAMesxMMAikWS5eX5bVwvHt+gdlYxBlJfRXCFFUTP3k26ee1yXRjv3apftRl+ND5QrUBXjFOMKmXy4nZiBNvPbFtBk0CW7tIEyHtB3iGh+QPWu2eqTlVmqaHqHZuH5UR/GN5McCVJ9N/DNe/BUGAqI2BEAvWcfRa7z3kjsSO35DB5kUXYatrO2m8kd+b880ltP12mJitBLz75i76EUVEhYsOP2FH6giNxVmrQmFzscCvMs8odfeSOfkIkdb8vCdNij5LjF3k4DZzBNaVbih1EjMWp/MwcpNvA3p6F2cR4wOPVbf7pjWMl7XWeC6xG2cD0x6MfOcDrw83BXdL/pbn1iZRNRvaBmkGxkoM9G/H5rmQERxSYj30Ah05LwRpX04HR4BZKcfFfzUYkWxXHhasgIJDJaLjQAcAxYzXU4wrDBsgAAmPrGuVum3j5jXNAarTVev9ohbOhg== X-Microsoft-Exchange-Diagnostics: 1; HE1PR05MB1306; 31:LpQOa1snuVYGAhc2Qlcz8fWhV/NWYETyM6da81qL4TJ+RjyNKhz7PQ4V2gWWxh7mVY1WfgKCBJI1ZOuNSuu1PJ3+wQucjrvlEVYNofFG141J9wsGzyvEw2AGhrGrWeDNMZ5XXAt1Ea6jjMrlQnGuUY6rwFg4c9c3NJsKVp63SgU/fgGXd8iXczkvlSH/+DTmdEooBU/5jwiJ36ci9tLE7OU1SFgl/69bqTUqnp/+L48=; 20:4D9b0rpNJLQbVRCV8lGoRiJ10gzUjMoOoft+t3jY/vSCzuUrfhFWPTfDKH+PVHpqEHNpZbCWvtejstOkTxxs/j7dp1ENJJdL50SiHRYnBP4Rt835ai4myjKHJkRHcIbmiDhJbrffYxzTO7u+KmbSUSaDdYvmaKNjuW1W1FQusw0xHwXmw4DQRaASR8cKSzXuwEupf9Q3J7sy2yeN5AVIeawYItPiPqtAyRGJO9HZfisen+vPpSCKkj50lfhG4cBqvhgUN8bz2Rtk+TwFkefU6FK/LTLcS/7pq3obq0WU7NsLidNYXz4RNAiYR4d/NqVGkQ3WFanY640xxUrxkuy6lGewK32v556HYubfos07wwOx/I9NVUSzzcqzNoSdF6z0DPudX/RsSNRpRnb681yppdHSOG3bRq3WuQBA+/+sCbQPXr/AoxXh1ybM/W2EtAbV+Qflv7kEH35IDtdszvtPha1a7USEKdeFt8Gs2KAlF0yNpZp/DS10xfQL6GJzEQzF X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(211254476889703)(24339691489775); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6041248)(20161123558025)(20161123562025)(20161123555025)(20161123560025)(20161123564025)(6072148); SRVR:HE1PR05MB1306; BCL:0; PCL:0; RULEID:; SRVR:HE1PR05MB1306; X-Microsoft-Exchange-Diagnostics: 1; HE1PR05MB1306; 4:+RU3M9tBQJfr6O0jFbo95z/MOVcWICFTdWJKDT0YBXjcqfYfxch59Az+t8ECuA/mC+2q7rsoV3YKO8h0i7RBbloAk05pIqs4epmXZOGBrdxGZV3fJPwGz86c7PdSs5g50J5rR49FnctDv9dx3A04Z7ZGgbhWzayW9KvJhF24LYk0m/yw69mobASTpJ55O9Ng3fz7zJdGxIOlR2/cRibhoVl4tRqQIANJ1LEZFPLxKKYyqr3MC1EDWxAy6sl09dduFI32MIbiS5P2Nl6ta7grQeU+EUxX+EZpHoxR0nTguWHQuPv/RzDoZtQHCMzAyzew3FS05Wgua7cMRT8KD/NjBZFLEyFVQR4qV/KhX7DBuR+cn0/krAJuMUczwYLWp+utrr/rysOF8+a1jBYGH5Yj4t1YN+cztYALyDg/BUQk12ezXLJqJQ7shH+Go3jriSeNnbus9ozuWQHTE1XnSTua08JKk//L1opt2Ej6SQwNNc7Nifq5bvklW4Ho1KcwLNEXs+NNTfLwjN9Hs0fQkYFJlCFLNUar54bzssPGUmlg7jAL8PQdTlJAcrZJ+x52GGagvFW4McXV8zAyHDt2RfgJIQKOHblmQvUjOZAIyqwc6GMNpgbWb4suXNjVPjW9sTbUPg2xPs/tqaZ/QHCmGjDt7eLqFrIO8UjPoREILGw+QPvD6KzfTXdgJq1X1jsbZDRQ8DNPebItt/q2/QWuU20y0w== X-Forefront-PRVS: 0230B09AC4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(7916002)(39410400002)(39450400003)(39850400002)(39840400002)(199003)(189002)(68736007)(81166006)(8676002)(6512007)(81156014)(50226002)(3846002)(6116002)(50466002)(6506006)(48376002)(66066001)(6306002)(25786008)(47776003)(6666003)(2950100002)(5003940100001)(6916009)(6486002)(36756003)(5660300001)(101416001)(189998001)(92566002)(7736002)(107886003)(110136004)(33646002)(97736004)(105586002)(38730400002)(106356001)(2351001)(305945005)(76176999)(50986999)(4326007)(53936002)(2906002)(86362001)(575784001)(42186005)(450100001); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR05MB1306; H:dev-h-vrt-005.mth.labs.mlnx; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR05MB1306; 23:7uHPy0+Etz5kG9l2+Ck/tyVHb8slxIZ/phUBjtW9Y?= =?us-ascii?Q?RgRnOb9/1zq8k6ljSvuc7CJHjTv6EsGHJsvZ+CEbF63xr9LEUow4cYH6xPI4?= =?us-ascii?Q?Sh9kFIiDnxtNfV8Wh+UObaSwA1V8f1ddvT6W7VNogXny18TEaEoDyF7GPnIA?= =?us-ascii?Q?P+GOR9MVXH458mYtQO0DiR9gclsp39i7jV7m2zb2vsssNgJ5RABiittOYi96?= =?us-ascii?Q?/Iyfn2BKvhpcn0dlFcV7/5IwoWUmHsnnGlZcc/4WcKf9oxslK/SqpceOJWFg?= =?us-ascii?Q?Q/D/7alOAH5IYJPgelolaD7JrpBWyBRfbpH41VyEeMx/NlD7GYtFyy5ltqrQ?= =?us-ascii?Q?PDQiej0I8kFCpLD1roGa0GGy2PX++Lk0vZsObIs6NedrPZP+Pdgt3cceAN+7?= =?us-ascii?Q?JExTmL0hXDJJBlDRD5uE6FyQMD1WIE6Ax0CZKxSgS+8cRBfDU0Ij0TuTVk3k?= =?us-ascii?Q?zD5E2YPub/kytW8PhkZPUa9Mt2TvTgyOOMV97Jl29Arc5pqm5ZouXKkNuMYu?= =?us-ascii?Q?yuC8QwjZJQqMj7VT1mU6TMgcVTOGKrYTTnoZLde5OQjCc334PxBfP2aLtHLs?= =?us-ascii?Q?RuxNpgGhxlpiPOC5Z7fONZo9guQJSM/FdJd2edV8GNTHOtROJWL0R/lS7YwX?= =?us-ascii?Q?KWGMMe+TiAhp3BdiiFNg+K+WVN2jVc4z9XgKr6vB7RHm5kZbPJvYx6Az4VK2?= =?us-ascii?Q?qDZhO8SNaVRgTRKLjQ2C9D9GYC82xoM56NA/ko/12fs8Lh1xxxtCv9GEhV3X?= =?us-ascii?Q?gxmYhp+1xYMWNWWEUzmpb4W3JM/n17ZXcR0tr8QmHzXWuWrOw0XldGe4Eyup?= =?us-ascii?Q?UMEib4z+0pXTSlfwTavBZjILkSjwYzRWS6IZgHNWMB1dXF0MyISQyM1zmEi8?= =?us-ascii?Q?m9iIVnt3azP6ZKWqxuZrKg+elFYWSYyy26QS8BkF0lIWGBU5bRY3o/k/manN?= =?us-ascii?Q?KNLVVsJYeCUthNgeNeKrMhGwItbFK/nRs9PqHuCSMtX+Wb1Xe9BDkguJByQL?= =?us-ascii?Q?9WyvU+NJxe8IJ8daAu62JG8lBypSWAqmmrUtj6S0UuMis8lleTE/BuH/lhaH?= =?us-ascii?Q?HNF+ozxIdkPuY5fBovFLaTpimtNYPQl/LJs2lFjqRbd4qLxx6l+XJ+qf3NFf?= =?us-ascii?Q?ppDSMJ1hmmP/87JMF+iU8qeTWFm8lH0wWFd1iMQc3pSvuHBdPh5vN7cVwkc+?= =?us-ascii?Q?ce5ioWygG0fn0vhn3FbGAVQ9e1fvbSzJfP9EASAXMbzq5XyneO1HvkNpeCuG?= =?us-ascii?Q?7UIu21wNuuZ2mIyfEUQ0B0vClG36iiQNBZOA+crq7WdpFaxWpa4mKSy09NUd?= =?us-ascii?B?Zz09?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR05MB1306; 6:vbvV/Swl1Bks0T5PyJgyq7gyaO8v7T58j0uIBsAw/vdH0EZ77uxOCLCS+txwDqRrh0iDfhmPK9T21nXVRmKo1mlksitAmBRaEkHGb39fIvUz3t5r9V3HIehAxJim6DaW1bK1Ctzj6cUpazLd7rgyknF2IqbKaof/A6BL4kWC9BavVH1Nx8PXiL4lc5FbxyXWJRTFiBZrPRbzcREsjV5CV/gHJrshHIHA9Dx3s3PvND/13nrcwVRafzLWC16S3he2VquuARa5uWt9IxSGCSllzcNn8TiUP+2s97yE5C17vK7nhpKbf4FgRdrxh7TEwe0BdFn2V7CM7WKjj7EW8DyFKRamCt9tve3LJEVcwCX/JW79W0a3nuZBX8VXZJ8cIZbFynLCS0ZYMydCzxUktnnwP0D7raqQthmXGs4g4L5L1pc=; 5:0OJxu+IcRbB8mTlZS4cgv9p9j5f5ZBCiXUiXojowTLa/4niMJzbzYQ7anDcFDcUpo3yRgn48eOvbGk4+5se2+nPAMIP+ty5cYH/kBeS7sKvUHixzxzZ/IG037E2YaNS8EKfuwGHXs/ucDhV377iRCBbmWf1lG96Vca/IRxHwozY=; 24:RTFJhsSiEMy5osSlQ1lDrqijgOTsgRjYj9Wb/IOp1JJlc9xQvSu+2f2n7VikoiS5CiAB5OwelLhzje49ipSHBHES+lVHQdFPggEwl7SykjA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR05MB1306; 7:aWfAx70xRaKmKXOP05EU2nKZ11GOOwBQjhFJAIIms3ir5i8uJTp4PVSBfbT0HcRTEMfeaw77SGhcdgdCODDCgsl3Cd4uiiOtOfEvYd+alJvcxrWcYqyngXC5Ju66GuQ7pkxiQ9xcoX9B5OWs4FbZXuBq3NWTZe5so7uf8E7XkQvK8KHbpALPR6zfUEkiXp/8GkVgccyjjtbWI3nGhwSY2uXaqUTR0xLheNwAYbLHRmzukebzkdHn7PlS1yyoEkh+thLxMzCjorLx2zSkm7NFK0GaRo64aJ+M/Bzs18m9pMOI8XkdAa+ptnQwxqYppkl7VDd+0/KowTh4EL4LvY0N5g== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2017 09:10:16.6380 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR05MB1306 X-Mailman-Approved-At: Wed, 01 Mar 2017 12:12:14 +0000 Cc: talatb@mellanox.com X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.14 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: kernel-team-bounces@lists.ubuntu.com From: Or Gerlitz BugLink: https://bugs.launchpad.net/ubuntu/1668019 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 Reviewed-by: Matan Barak Signed-off-by: Saeed Mahameed (cherry picked from commit 7898489880f55a9c3a954cd5660a0fb4fd81b625) Signed-off-by: Talat Batheesh --- 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 d566f67..1cce06f 100644 --- a/drivers/infiniband/hw/mlx5/main.c +++ b/drivers/infiniband/hw/mlx5/main.c @@ -53,6 +53,7 @@ #include #include #include +#include #include "mlx5_ib.h" #define DRIVER_NAME "mlx5_ib" @@ -1135,6 +1136,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 fae6cda..844d288 100644 --- a/include/uapi/rdma/mlx5-abi.h +++ b/include/uapi/rdma/mlx5-abi.h @@ -85,6 +85,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; @@ -101,7 +112,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; };