From patchwork Sun Feb 26 09:09:55 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Talat Batheesh X-Patchwork-Id: 734187 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 3vYDpY5LLhz9sNR; Wed, 1 Mar 2017 23:12:21 +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="U07TuJUz"; 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 1cj37B-0005ZO-1k; Wed, 01 Mar 2017 12:12:17 +0000 Received: from mail-db5eur01on0082.outbound.protection.outlook.com ([104.47.2.82] 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 1chuqW-0007qG-HG for kernel-team@lists.canonical.com; Sun, 26 Feb 2017 09:10:24 +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=uSQ5ZvFSezYKiYyPcsbFwSEUEf5Mq+pCwQExMyb1p/8=; b=U07TuJUzDMDYoE4x6X4uEt0wwFvgjm5mjz6UEW5xlIv4SdEckYPrcQx67XRhvcNq8c4bJLKPoVFgrP0mTNzEo4WyFyRXaDPHA3Rtf8+1pGwmKx4faO2z9D1vvbKWkivAZPJ9iY2a9iFRfd6e6NxxyAxMDHIjeYXK+EmCseGVBMo= 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:22 +0000 From: Talat Batheesh To: Subject: [PATCH 10/18] net/mlx5: E-Switch, Enlarge the FDB size for the switchdev mode Date: Sun, 26 Feb 2017 11:09:55 +0200 Message-ID: <1488100203-31976-10-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: 70bdcd0a-3ebd-4b79-7384-08d45e274bc0 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:G3imVev9BdJRHJC2Aaut1+n5IpZIZ+WZ+2CWfkOnpxLRlzy5120t07Xo+0sMW3tt57I5BSzdYOnYfNXUXi93zwz3UJYkx9ZTEjFghYd9mDgtOx4xtQlOW82nH10gcCCmWZFRVTo+nGN5/lXKfw0cjXG7bVlFPUpOIJVxYqlSPAXVPfiMQvvC/UuDTbajyxAxH5zJwV8wet8y2CubK4Wjx13stAt8kGvO53+GnE8ySRph1QaVl/RzGcmCN8BmXQ1fVnXk4xcL0oLi9/++YhyfnM76GR6qrr/i1JkKKqSD748=; 25:+0Q5DRNwihUMte3qlcHMAYseCJssy5t25FBvSQJwSmuAjuwYp4mKZCsIsk6hcm+57VT8U4mCOmI/F9pYZfJuQyA8yBhDS7s53kudN70MFrgduKok7xLSoqRWsLGTl85zxTn8CfpgXrnzyldGZTwhEMMf1TW7C0FS0l5io2ixH04KSrsVZmMYDTsJcuBERufSMgQ2rAR4bERmpnVG50igdh7KqqptHxQQSP3T3GOQG5qKrOE6gsvRBsr/pDKGuC9e490LmWcFgO5aXGo2CtqS4wx2fZYy706Ms46wngBLTs7kuBWFnrMtZXzCRPOrRElwzkZkkWQnl5vAvTcqVp0cdK2Wc9TFkNErtpkCNOSqIyFKmTCy4KZE1PFX9oLGXsv5CHWME3KWCMxcqutIvkXTq5PhGAd2st9RfzWF6m0FAnzAdcqBos+KhwspRKxJY/i3RKiOfz2TVD/6zPOoXItcZw== X-Microsoft-Exchange-Diagnostics: 1; HE1PR05MB1306; 31:1fKzyFkTaRRYdT3W52ikXHXg5TtUNvPKsDTrBcb7ORFPqaiR5sY61qVeKDKS5mxGMhGP8SJHP+/wdXVjWwaZbN/VIsyOtRp5scQtve1D3eqcWkGP/dQICfaxdz49gHz1bPgH6FYYSPZWPrBJNGvn5i29RMvMQg0X9SNLdSgu0QW3M4ZyX752OYqZsoBjMO++jr7xwOZiL/KlMIFVTl4gM9/E25eMGU3ivfE9j2I8tu0=; 20:im5V5/rxlQWRCNxh/hnCNL8m9EBh8EQl1h2Jxs1D1tYoq/zsm4P5y7HxhKk7r8wOK0Gb75koxtgRz5WwrF7GBiaIR53Whz6Li+kwekJtV5vdJ/L8+ccRzboq7HJ1OmCh9htvqEZU2EY/n5R36pGR0doqILe3w06YT5WE/NGpGAti4N2XFT7ljNd9vFLTd7iasabEGwgjX22XDpGQpgVK8LAHSPwS91JLiJhI47PNMBL4UBt9aFSZk3d1oFwzw6kSIHAjKHSUigNQLXC3F3AkUyP8GBjNVRfa4srVWAYOBPSOZDpevXqNpmeDX2M6O6dvRjUtbAS9RUH22RcWwTwsI3mLmsumwd6oQ9sKi78ZvORQ4j4llKadYOJmnDdKkDPmx0EPiQqcwyIgvI1zfGs5/1VADUiOd+VGoCN0jTmmcjbvsnA7JMo+iv6zp3p8HI+JVvby6vtPEx9mfCx9La6MDxv2Pp11K5YWG1z+lFL/Wms+USIWhRD+5T3ySbuFIm1q 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:eH8FEpHOEjehMH2wVKxMcoYOFIB485hXTOr2nlTLNebbZziWU1dckdXF1aK6g6Xsbn5dTYvjvtiNzYu633jEKCq/zIZz6cMOOskwQNFI8aFBRH05E2hzK1D+He2+SLpUbPSZq6QgmIESM/HPPqBEush530PNn+MEZ+sBM2SH3railLaJXU+kQz2N9LI7VVv1JranZRnOfmMzX8pN88thoiZhq0twgLcr2zNpChU9ebVS26oeKijU50yO3hrFYk5RJh4IIAtQPNzyqHuq80yg/tyJi4ifMb6Lvi0NTuWpSszmvOcItrgCuFPKR55c/cSHsjDy9uQGn5JS06+tMwSRrGIRpXTddgT6nkW3u3UF5xbvJhM4S9Svbl0oVSo0TjIqJseCUqIKUKiCxLf8+DmUEUSvGrZQ6hQEk7j6U00r0C7+FxMdcRmhmzvvo831lLB2b7lOWuGNXq2xsUPELQGNTk9L4FzGKnc87cPQ0cIExBR5wvQ9fVKQUuh1j5Jj8frEiHnGyZx+SMTKqJUOQohKXgjvyl360Cm2hAQTt4TRNzbKiSn93GQg0t9SZh9HJ/OE3sjMoj7/jvk3LzlGAmBL9uy5yI0jk8A4ZNaZfRbj6x5i0o1lzm8bCXX3BoCRbLqB6fSCGrx0sQHkmScVOxpKQIHK+BtXpZ0zkYMs2xtcxQ/ZmP1Z3dl2KzW21cSZPWsw55y7N8LZ6ckpO3nQwNuMJQ== 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)(161623001)(147533002); 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:PzRqbL2dVckWaNq2e5k6vshZAyIldR8j7zzkV17Xb?= =?us-ascii?Q?OB4dqzZ5x/ppP7BEnv1CGvstzlqXV2UQhsUjIko1VqspZKEc+YKfc9Wv8/5l?= =?us-ascii?Q?QT1KUEOYvOpoPSqgwDPzI6QzYHdkQ/O7ZCMg8h7bKxZG9/QROBMmnVh9NqlV?= =?us-ascii?Q?8s9+xxGwwSbh4PzLFRvXhd3NpnRDErPAYciFASxvsiWdaoXIsX4Md652hNhB?= =?us-ascii?Q?HDR260s6CuOzwfmubUN1nGGIxs/dw42pg8VykhXj3p3P5Uw6NaJZSFeeVS4g?= =?us-ascii?Q?6CPVoL/GHKc75ssN0P6MI0gEs6YZDJ1AcT1OwfHJiFlPFVzskxOMIlWCEilf?= =?us-ascii?Q?YcjY8QZFuCJIh3++zKOUQ/+/1rCkjZXt0R/YN+vuecvUKmciiJU7T4j3XkaB?= =?us-ascii?Q?Qa1NPdrfFdadNYTF+jKYy1ojXZj0NO7wyHoErTfGlgTo2ETXb7FcbldZt6RP?= =?us-ascii?Q?izqhlT5KgUxL7728TMimky8syx1v3JgRCSjhNPV030Im7VgmPwht6ShUbmMP?= =?us-ascii?Q?IRKs4TzKV/Q45XPPfqCoga7Fpx/Fquz8wpYQ8EhoT4izJXCC/iXgl+T9trqu?= =?us-ascii?Q?4GyNGo++72ij9nM+IEe05bltCDTw+6a6NOO930euzt24Jf5GEWdrbx8WyGSz?= =?us-ascii?Q?9qGc3atRlvloUFyF9GyjV9/6zGdRXrx07WJzgGj8AlRAV4HGY6iHs2YuZjsN?= =?us-ascii?Q?Lt+iGdnomR8QnAioKxpXgimytTiFZVjXxzQ1GQjQCyjlF4iYhRAIrwwyog20?= =?us-ascii?Q?6OKM18mPbX7m5gDUEmZCjlgc7EmjWZrMRX1QVsQZkWx61Ig5utzO9rDdvqgf?= =?us-ascii?Q?iTyroVhSxQ2g6bmAdfO0cZjZscr4id6S2fRMB6m8p8a8DYjayAm/1mY1jgp2?= =?us-ascii?Q?UseclPXve/SA4cve9NUOjeBWXzsy7rxY9O68XFF5Y/c4Ue6Ok6tnX7ou/fdj?= =?us-ascii?Q?wvMREAIwPWES23La5DwxXkEHDh1IBJMx0kS9bKyvARvfCVaSiGlqJHN50rPh?= =?us-ascii?Q?uUdjeMvn12t+x3qj5ndnG9j/qwIiT0NMz6qM2iEoZC2gIkKpmTw+MmTsrCNG?= =?us-ascii?Q?Df2Cq2boqpPiBds4PrZjazOWXDxfj5FX5M4cOp9LmesMgt6vWZgEuewQG5/3?= =?us-ascii?Q?XuD37BS0k3YT017YOIl1EgOfwedaARU4aLi/1PQXpHEeMOcPfNhrhwELC00o?= =?us-ascii?Q?6x55IfsHy61dyf3rtYBqW/jkuXEDf4pahL9owK+iSWuEj8TI/7JMNi+e2Xsz?= =?us-ascii?Q?CdFcSnjEeztx4cfgvR1oxtdigvoeJPoGhRL5TxzzBDSzX7ISqVfQdeGs8Vd0?= =?us-ascii?Q?0Zk1EmOBy6Cr8uzEiBQ8guF5s+8tENom6HXGM0J8sXT?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR05MB1306; 6:XVTaMVNValh2cJkiUDPtJi2c7wLPOY7vQ1/GvQ8zb4geqQAk37QFVfaN++NaBJnTelBvDML26ksjb675/ONyRFI6F5u4x/KPQzSq7hhYDam0ob4xsXxkPAnmssF5glOaKjKy9iZaoNW/OgppOqOIJ96dkrBa7o2ie/pvurw9rqUBRzZ19W2d6KeD4lSm+vg75/xML2noh0WHMCcjxslHq+mYI8fZUJmTBtCmVtOPfJnjpdi631bu4AWqCvFNDCKw7iNGF0nBNBkL3lHEa8UFh3ThOcoPzyiI8rDou7Ng39TVvhqy873uZyojU9QUP8Bl0sZNSgBgzeCvAbtmd/+wg1nISt9SKkB0uOj/zHnfmKu/iFwDM0ddHjixVCAjRu4kuUvXKHY49y/V8HWGsYdVBVelM1oSUGpx3XLUjVNQLM4=; 5:/xRurZCBrjnqkIwo+H68qLOlVKb4xX3pVaRAZvBcH5oOZhps7A5OjkBuMYYurAFfv+UlIDgNRGCmQWCgfqzkLAoSqByMFdQu07AEB/B8GlhUcbGWLZrXWUp3xO1FBodFENxFD2wPPlUSfQkkw5EJ3nht7BoqV4st/KS5R+XeSG0=; 24:iO/qetKmR8j50sNMQ0hyteuyDfQ44MS24VSHQ1IhpDte6UiWH+sFFsKT8uix74EfJHGQxjqI38ofGrGa9cJK1PsJ59eq+l9Z9HFONdUDR5g= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR05MB1306; 7:YExXdMpx5hIy9c/l1sk9F7AKRdRuwTP0oaA4csuptQ66pmlJ9wuoTY8FVnn0haWs+DmATS5j2XDsUl2cfnaq/8FI+XdytpJEiF4AP8qryc/POhuh+hs7XMtTi+s4RV66P0SDs+s+XoWvB9wxTmnOU/CWqzIXCVLrjgf6jvVDaGaZrrT3yZa3mJ6h9o1+d0D1OKQGtTWLyKwT6Q+1CwYW4XBt6aGuUPaldns9i+sBCzAv2N6++jgrFD5rysYQa9irsi0Xjo/rSkXMxewFxjSaI6vqvPs/dXUmm68GGHFsIWbNyUseBsYdEXxofwF2dI3q33edof9yQofzPOwOfbt2/A== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2017 09:10:22.8817 (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 The E-Switch FDB size was hard coded to 8k. Change it to be min(max eswitch table size, max flow counters * num flow groups) where the max values are read from the firmware and the number of flow groups is hard-coded as before this change. We don't know upfront the division of flows to group. This setup allows each group to be of size up to the where we want to support (we mandate pairing of flows with counters for offloading). Thus, we don't expect multiple occurences for a group which in turn adds steering hops. Signed-off-by: Or Gerlitz Reviewed-by: Roi Dayan Tested-by: Roi Dayan Signed-off-by: Saeed Mahameed (cherry picked from commit 264d7bf3c1cfd3a128d621b367f57b81d038ba10) Signed-off-by: Talat Batheesh --- drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c index 595f7c7..4f5b0d4 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c @@ -402,19 +402,18 @@ static int esw_add_fdb_miss_rule(struct mlx5_eswitch *esw) } #define MAX_PF_SQ 256 -#define ESW_OFFLOADS_NUM_ENTRIES (1 << 13) /* 8K */ #define ESW_OFFLOADS_NUM_GROUPS 4 static int esw_create_offloads_fdb_table(struct mlx5_eswitch *esw, int nvports) { int inlen = MLX5_ST_SZ_BYTES(create_flow_group_in); + int table_size, ix, esw_size, err = 0; struct mlx5_core_dev *dev = esw->dev; struct mlx5_flow_namespace *root_ns; struct mlx5_flow_table *fdb = NULL; struct mlx5_flow_group *g; u32 *flow_group_in; void *match_criteria; - int table_size, ix, err = 0; u32 flags = 0; flow_group_in = mlx5_vzalloc(inlen); @@ -428,15 +427,19 @@ static int esw_create_offloads_fdb_table(struct mlx5_eswitch *esw, int nvports) goto ns_err; } - esw_debug(dev, "Create offloads FDB table, log_max_size(%d)\n", - MLX5_CAP_ESW_FLOWTABLE_FDB(dev, log_max_ft_size)); + esw_debug(dev, "Create offloads FDB table, min (max esw size(2^%d), max counters(%d)*groups(%d))\n", + MLX5_CAP_ESW_FLOWTABLE_FDB(dev, log_max_ft_size), + MLX5_CAP_GEN(dev, max_flow_counter), ESW_OFFLOADS_NUM_GROUPS); + + esw_size = min_t(int, MLX5_CAP_GEN(dev, max_flow_counter) * ESW_OFFLOADS_NUM_GROUPS, + 1 << MLX5_CAP_ESW_FLOWTABLE_FDB(dev, log_max_ft_size)); if (MLX5_CAP_ESW_FLOWTABLE_FDB(dev, encap) && MLX5_CAP_ESW_FLOWTABLE_FDB(dev, decap)) flags |= MLX5_FLOW_TABLE_TUNNEL_EN; fdb = mlx5_create_auto_grouped_flow_table(root_ns, FDB_FAST_PATH, - ESW_OFFLOADS_NUM_ENTRIES, + esw_size, ESW_OFFLOADS_NUM_GROUPS, 0, flags); if (IS_ERR(fdb)) {