From patchwork Tue Sep 19 01:30:01 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Mody, Rasesh" X-Patchwork-Id: 28896 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id B54F91B22D; Tue, 19 Sep 2017 03:31:41 +0200 (CEST) Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0055.outbound.protection.outlook.com [104.47.37.55]) by dpdk.org (Postfix) with ESMTP id 2D36B1B1AA for ; Tue, 19 Sep 2017 03:31:24 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=Wd3LQPXVNVS8wvE02scsIDTZ8AZJFreCyajkj83uFWk=; b=IoyckjCncxpdKk71rvc9lG7+j3H5keFQhih8FZmoOncBymJ5Xp8p34HJXA6oB3jDvCsHQ2W6qnRQpiIwJJ71PTEroIDq4Cdw5C5yf5WFEMqI88W6WXNuE9ZIZNAZNeqMSDT5tRjZqCjsWK6TO8fsL5p7Qi64wB+r8zkiFc2mAEA= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Rasesh.Mody@cavium.com; Received: from cavium.com (198.186.0.2) by SN4PR0701MB3838.namprd07.prod.outlook.com (2603:10b6:803:4f::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.56.11; Tue, 19 Sep 2017 01:31:20 +0000 From: Rasesh Mody To: dev@dpdk.org, ferruh.yigit@intel.com Cc: Rasesh Mody , Dept-EngDPDKDev@cavium.com Date: Mon, 18 Sep 2017 18:30:01 -0700 Message-Id: <1505784633-1171-22-git-send-email-rasesh.mody@cavium.com> X-Mailer: git-send-email 1.7.10.3 In-Reply-To: <1505784633-1171-1-git-send-email-rasesh.mody@cavium.com> References: <1505784633-1171-1-git-send-email-rasesh.mody@cavium.com> MIME-Version: 1.0 X-Originating-IP: [198.186.0.2] X-ClientProxiedBy: SN4PR0501CA0015.namprd05.prod.outlook.com (2603:10b6:803:40::28) To SN4PR0701MB3838.namprd07.prod.outlook.com (2603:10b6:803:4f::13) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e1b4d4d0-51e2-4409-9d2d-08d4fefe21fb X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:SN4PR0701MB3838; X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3838; 3:B72QMLuKBicdZij6Fu+zI65tdzXsk/B8qJ3omGy8umpdiIOOUEAMdc4YFqEqgwoHUZUF36yWspN9Bi1URY9jXKOCb4SspSeEsJiVDtPAGRMIKOz5MVykEOxEnUBMo28lstqTYoiRdhzrN4UE8npWYd4WQxzJxSYxeMvWpSBoUte20sBgq72cO6kkuPswqUKq+IDNTNI1077ATHAgkkWte47sQGzGCw8qgPWGeTq0K7UkNw/mIsZvvJvs/wdAZCEN; 25:AxA5Cxlccb49+Ol4P2PUZUj7TUO9WOArppCQHKkD/zpuOgMdlTQzVp11OBOrQCDPNwIh799t7tMOrKjN1ibLDPwgdVA0M39Lgo60ffhEcptnOLjkhh5EK/z7aVVE1EVceJWnEQR00jjjNuMScbae0usvL+aluHlhgIwOVMohh7cqlbva84zkcEqZzMYgQesHOiIu1jfD/OMLRyYLBvfax0H/1bXSabduWBQDcCC7xM1G5MsLqtkmEg/i8zk4/EYRu9vl/Ke9UQfkdVnIdv+w5/yda4ptrU6MEELoK1yefSp/JThJCFJU3LRPe9XOFR/6wsN7h8jzsD9XGyNS0HVaFA==; 31:FtW4g3Y6+pc+4b0QzY6lBFod/DsHO2sWhPYU9rXAaRFJrThK/prueQURnt9ZX5u8GWNvjc6/+CJMiQToWM7kFVAM2Tzf7psuAZ+8q4MHlDdLVyA5vjc5HmITPU3LubEWczUjNfwIntrZpNp20fyhoW+jebDzcFJTly17Tp1/AsDfFeb24U4djeWk6L92p2ecECYUgo4nd2JyRUkzrxbwCxr3W8oD9kh14m4s3W6xmoQ= X-MS-TrafficTypeDiagnostic: SN4PR0701MB3838: X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3838; 20:70HgjwGwpIQnrUdcxdIcVQ9Jpa5n7Hu02xVAJpRoeKdztfbTN5fwmOpnf1mwXnuyvmk8lDGCcGiNMoJAZS+YulTggYPKUHTLVhGNuTXEeCZEYkHGyHJRbBtYZvjuRCPLsdAr6K4hpx8jRWCASPZ6fyYXF+b9+CACTQywNqoGWuH6ulAhZe2GhGxYvsykh9hJ/fWwWTATyTOBrmZJws2MXQCuWZoeNtcnOl6xdh88z1R5x20TGSiOFwE7nxrfvf3vyfZxN6YBBhe9gG2z18ZxkDUm8FXyWQY20gikKl4ufepaFiHykNx7FM9OqdOdZVAJ2fb4psZ99ptQhgxa3coFwHplHS/jfwTpYKa8hC3WWxy1sAWMo90cfTIJYZ7/bcBqRhkznGSV5rwVh6buQd3FrBCAfPMDVS6cmBIKFkuESkxAhcjE1YaobFr479fV3ZtgTm4FDNkAKLmyFz8UGmbUy4fEmHZQAY5RW1aA3VsSI6S4QgiJfxjsh2Xxf6UbCZFF; 4:9buIITesTjCKRb1Pdc9n69DnyPFs7Lfy3tBg/KC8CA6GhH/oE2Y/IUz9Xgoo/2wBMgFHw4UEjRP6ObmolOX6d9ftG+ZCc/a8G+tP9QnKz7QLhjOEKFJ3w4FRUUaT17smmVfhGOobi5OGEkWgFPRsWxj0QnfMsTiqYDqqXGFAQiuPwpWEz+13R/dnBV7cXMy/fnh98qVQxSfhEEK3+lq3eH8Oc2qV6bLfonC2zld9rRysGxhHnsmUU5nFFeX8swvw X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(100000703101)(100105400095)(10201501046)(93006095)(93001095)(3002001)(6041248)(20161123555025)(20161123562025)(20161123558100)(20161123560025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:SN4PR0701MB3838; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:SN4PR0701MB3838; X-Forefront-PRVS: 04359FAD81 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(979002)(6009001)(376002)(346002)(199003)(189002)(48376002)(33646002)(68736007)(316002)(21086003)(16526017)(16586007)(72206003)(36756003)(478600001)(97736004)(86362001)(66066001)(25786009)(69596002)(47776003)(50986999)(81166006)(8936002)(50226002)(8676002)(5660300001)(7736002)(53936002)(305945005)(81156014)(55016002)(50466002)(76176999)(6116002)(3846002)(2950100002)(101416001)(4326008)(4720700003)(2906002)(107886003)(6666003)(189998001)(106356001)(5003940100001)(105586002)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN4PR0701MB3838; H:cavium.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN4PR0701MB3838; 23:Rzuh8Zl9uEL/LLY59BcqGm9ejN/W58OmQ3i+X7N?= Hw/Xq28Z53m6/v1kB8QObDw1MVNJNSzX90jTSlkmd2KWHJ9l0vEHlQ16fo9zkycAnR4FDMdIQZUrevf/KnXcXaL9cnJZBU/QP1Z33lV+T7O7424JmfEl7VJ20seYnB7UAejNEpab89J3XMlQb71TwsExdbuRg07YGL8DURdHx6ucrMK4KkHl343mqZN3lPzHJfUua8H6gKToyvaC6URRVi1G0u/Cvn7UATLfH0GRwAq5L8OQHwTtjZRk1n4QPW8B4GGFrrS0TkmB2GSBL/w55IuTCkoSa7KMkvRVOZ5p4bQjHuXEfAN97K4FNMUsPdXeFcRDNy6dm+VnVvhQSSQ9FPFxYlT8OSLgOwb2otSkXgnDsBt00LzFgPqTj+hpAHYt74+wpH25z0gz1nkYKO7+JwIF0F3DMo6PIufkH9hvE/sC88B/Errrg6rJi4ldQ7kAfhnpjksVqSkvg/hLNts3sUsBNReTJ6ngu+rkjm/Eq2OQZBXmg4zTRqMRGRuaeEI+6kwfwgRMaFFMLfcc/yuT28NRm0nYLbZKrpWpEydGRx2h5nSpjYFab0Bodk972s7vQztIeofSzXJak6EiaJio4KZWQgZmbYgHmYpaSqdqThlgiUDbgb2tvLrnUtXcaItRr9y2AAJMVqEpM+SdLrH0FstBMtL/3+ghsLmHxwIbkTXF+g6c9kFsHfSLvbthRaBuPssaW+/bu6E2FW8lbmj1R93AqGMSdW1Yn+5nsxLqZFvusgdJLQ8JGJxO5q+J9Ktdk9mc3dL5UewilZrqwtqTHmT5BFnNMV0Dy8jXBpfeMRK8gznPD6+HSw+Zdf6f5737OnQV/Cac6ewIABzGPHVIvA1tYMkRJ5T7cFMlb5JKezVKtzkn++AFxp46yAROZhKmb/x4Tz3ibmlwmYimZ5NqA+cjmtP7xbTXoFoE7B/2FLeJJghSc/xpUt5Byt+HEaVXLkCvg+2iah+NFBZh8gk6fm78g0Rm/apHeqZYZ/6xLG5vic6cDUwJCc7X3fCOYIHtoY1aUH6U1n6/M+00uGA44AgwyHmh1ToW39s0ZdtAMelxL1h3+jfPMsr6lAvJmELYAf5Fk/Ff/sEFGo9i5OQvO05d29ClNi9Xz2LKaoY+QcomrDFSXCXD/D4DZurYTw7Mvwdni6tg9mtfQPFBLWnLXgkYhrkk7hTU4MVm3nVwPWyEYdg== X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3838; 6:E9Kq5adZz2jjHSgM1M7VkYClAJlBJPmDIO0wIFeZEgAYfx5Zdc9B7RceBG+rbCpEBc7pMbwzSAnRVRe+evcZolL+JRZs11IG1CsW7Y+120ATO6hff5t7jMD2RxTLADwAQNuY/sUbMPLsjy+zHjZ9RWh0nG37vkYHKfSxj3+d/TwPJH6rC409gZ37cdXNIdHC9doB01MUigQf9p60u7bQtxdn4IL0IjCk1+TtT+RDqsPWpbgTBLxeaaeS8faaggP/jLyfZRS37Bkbh83RfyKTpKw4QgK7glaYXhymbCGS3cVDfdwRop5cr93dHhgsz06MKZCbf8YLgiCHcboKMemQiQ==; 5:KxQ7mNUmc4Kj3GOUsk7oRoz70ylvi5bNjE91a9i3kS49rTWkjtg3z23v7P8dfDeiiIlLfKQ/MGW6V5qM6PIlnrrofVLKvXvjudMQioyUU4owRbCLf7Z9HvRPq6uZPafROB7w+HKKguZdhMs1zsDZYg==; 24:lRTXNuFUoIXRMOE4S2+jb2gTZC2PUmtGB2RoRRzm42TqU3brN5COri7/gWXo1FK0H3feJnGzh3An7XXJ02pPN2NvQ/EOdZGIavx+3UVubuA=; 7:q97pTLjvBIMLKCHPTJ9K8/4SBJR8296IWlqpvOp5HSkLgG5aYsW9yVHEwJBMQTph8Nh2w4ebKMmL+IpHuf0q59u85QMrgsliYfhMfA/IZ/qTl3s43oA8Smg78rrcsmkTJa0NyC8jH8KiOxgMooGc04+cU/echDZx0n5tBOiAxnaFu+1RBofTrnhS3fEj+sKpucBM8tJzTBN6fY4CmoeDqIFXur97d4cGy3qqfOyZ4x4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Sep 2017 01:31:20.8556 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR0701MB3838 Subject: [dpdk-dev] [PATCH 21/53] net/qede/base: initialize resc lock/unlock params X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Add a function that provides default initialization to resc lock/unlock parameters. Change acquire flow that use resources into using this function. Signed-off-by: Rasesh Mody --- drivers/net/qede/base/ecore_dev.c | 13 +++---------- drivers/net/qede/base/ecore_mcp.c | 32 ++++++++++++++++++++++++++++++++ drivers/net/qede/base/ecore_mcp.h | 25 ++++++++++++++++++++++++- 3 files changed, 59 insertions(+), 11 deletions(-) diff --git a/drivers/net/qede/base/ecore_dev.c b/drivers/net/qede/base/ecore_dev.c index 1608b19..40959e7 100644 --- a/drivers/net/qede/base/ecore_dev.c +++ b/drivers/net/qede/base/ecore_dev.c @@ -2836,9 +2836,6 @@ static enum _ecore_status_t ecore_hw_set_resc_info(struct ecore_hwfn *p_hwfn, return ECORE_SUCCESS; } -#define ECORE_RESC_ALLOC_LOCK_RETRY_CNT 10 -#define ECORE_RESC_ALLOC_LOCK_RETRY_INTVL_US 10000 /* 10 msec */ - static enum _ecore_status_t ecore_hw_get_resc(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt, bool drv_resc_alloc) @@ -2870,13 +2867,9 @@ static enum _ecore_status_t ecore_hw_get_resc(struct ecore_hwfn *p_hwfn, * Old drivers that don't acquire the lock can run in parallel, and * their allocation values won't be affected by the updated max values. */ - OSAL_MEM_ZERO(&resc_lock_params, sizeof(resc_lock_params)); - resc_lock_params.resource = ECORE_RESC_LOCK_RESC_ALLOC; - resc_lock_params.retry_num = ECORE_RESC_ALLOC_LOCK_RETRY_CNT; - resc_lock_params.retry_interval = ECORE_RESC_ALLOC_LOCK_RETRY_INTVL_US; - resc_lock_params.sleep_b4_retry = true; - OSAL_MEM_ZERO(&resc_unlock_params, sizeof(resc_unlock_params)); - resc_unlock_params.resource = ECORE_RESC_LOCK_RESC_ALLOC; + ecore_mcp_resc_lock_default_init(p_hwfn, &resc_lock_params, + &resc_unlock_params, + ECORE_RESC_LOCK_RESC_ALLOC, false); rc = ecore_mcp_resc_lock(p_hwfn, p_ptt, &resc_lock_params); if (rc != ECORE_SUCCESS && rc != ECORE_NOTIMPL) { diff --git a/drivers/net/qede/base/ecore_mcp.c b/drivers/net/qede/base/ecore_mcp.c index 24f65cf..7169b55 100644 --- a/drivers/net/qede/base/ecore_mcp.c +++ b/drivers/net/qede/base/ecore_mcp.c @@ -3401,6 +3401,38 @@ enum _ecore_status_t return ECORE_SUCCESS; } +void +ecore_mcp_resc_lock_default_init(struct ecore_hwfn *p_hwfn, + struct ecore_resc_lock_params *p_lock, + struct ecore_resc_unlock_params *p_unlock, + enum ecore_resc_lock resource, + bool b_is_permanent) +{ + if (p_lock != OSAL_NULL) { + OSAL_MEM_ZERO(p_lock, sizeof(*p_lock)); + + /* Permanent resources don't require aging, and there's no + * point in trying to acquire them more than once since it's + * unexpected another entity would release them. + */ + if (b_is_permanent) { + p_lock->timeout = ECORE_MCP_RESC_LOCK_TO_NONE; + } else { + p_lock->retry_num = ECORE_MCP_RESC_LOCK_RETRY_CNT_DFLT; + p_lock->retry_interval = + ECORE_MCP_RESC_LOCK_RETRY_VAL_DFLT; + p_lock->sleep_b4_retry = true; + } + + p_lock->resource = resource; + } + + if (p_unlock != OSAL_NULL) { + OSAL_MEM_ZERO(p_unlock, sizeof(*p_unlock)); + p_unlock->resource = resource; + } +} + enum _ecore_status_t ecore_mcp_resc_unlock(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt, struct ecore_resc_unlock_params *p_params) diff --git a/drivers/net/qede/base/ecore_mcp.h b/drivers/net/qede/base/ecore_mcp.h index dae0720..df80e11 100644 --- a/drivers/net/qede/base/ecore_mcp.h +++ b/drivers/net/qede/base/ecore_mcp.h @@ -413,7 +413,12 @@ enum ecore_resc_lock { /* Locks that the MFW is aware of should be added here downwards */ /* Ecore only locks should be added here upwards */ - ECORE_RESC_LOCK_RESC_ALLOC = ECORE_MCP_RESC_LOCK_MAX_VAL + ECORE_RESC_LOCK_RESC_ALLOC = ECORE_MCP_RESC_LOCK_MAX_VAL, + + /* A dummy value to be used for auxiliary functions in need of + * returning an 'error' value. + */ + ECORE_RESC_LOCK_RESC_INVALID, }; struct ecore_resc_lock_params { @@ -427,9 +432,11 @@ struct ecore_resc_lock_params { /* Number of times to retry locking */ u8 retry_num; +#define ECORE_MCP_RESC_LOCK_RETRY_CNT_DFLT 10 /* The interval in usec between retries */ u16 retry_interval; +#define ECORE_MCP_RESC_LOCK_RETRY_VAL_DFLT 10000 /* Use sleep or delay between retries */ bool sleep_b4_retry; @@ -481,6 +488,22 @@ enum _ecore_status_t struct ecore_resc_unlock_params *p_params); /** + * @brief - default initialization for lock/unlock resource structs + * + * @param p_hwfn + * @param p_lock - lock params struct to be initialized; Can be OSAL_NULL + * @param p_unlock - unlock params struct to be initialized; Can be OSAL_NULL + * @param resource - the requested resource + * @paral b_is_permanent - disable retries & aging when set + */ +void +ecore_mcp_resc_lock_default_init(struct ecore_hwfn *p_hwfn, + struct ecore_resc_lock_params *p_lock, + struct ecore_resc_unlock_params *p_unlock, + enum ecore_resc_lock resource, + bool b_is_permanent); + +/** * @brief Learn of supported MFW features; To be done during early init * * @param p_hwfn