From patchwork Sat Oct 7 06:30:58 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Mody, Rasesh" X-Patchwork-Id: 29852 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 BB71A1AEEB; Sat, 7 Oct 2017 08:31:43 +0200 (CEST) Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0089.outbound.protection.outlook.com [104.47.41.89]) by dpdk.org (Postfix) with ESMTP id EE38F532E for ; Sat, 7 Oct 2017 08:31:40 +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=BsnlBATDhHPkoXFvxe2aD/nWpFYjSBS3qmyRCBJTRW4=; b=QP7IpZuNpL15ue4vHPVIpPT+lpYqTWYheewZLIfgFYIkqBQWiW/B+Nq0jwY1EMzP81ITMVt0ByYKVDvsLHRkxMYa67TIe56yf+IU8cxFM0wdfhc7vHCcqtfLDLKNVZXvY5zPw3JsvKN7d7LCGKAifhCVjYxjBpM1/1E5kO4QWC8= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Rasesh.Mody@cavium.com; Received: from cavium.com (198.186.0.2) by MWHPR0701MB3833.namprd07.prod.outlook.com (2603:10b6:301:7f::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Sat, 7 Oct 2017 06:31:38 +0000 From: Rasesh Mody To: dev@dpdk.org, ferruh.yigit@intel.com Cc: Rasesh Mody , Dept-EngDPDKDev@cavium.com Date: Fri, 6 Oct 2017 23:30:58 -0700 Message-Id: <1507357872-26475-4-git-send-email-rasesh.mody@cavium.com> X-Mailer: git-send-email 1.7.10.3 In-Reply-To: <1507357872-26475-1-git-send-email-rasesh.mody@cavium.com> References: <1507357872-26475-1-git-send-email-rasesh.mody@cavium.com> MIME-Version: 1.0 X-Originating-IP: [198.186.0.2] X-ClientProxiedBy: SN4PR0501CA0012.namprd05.prod.outlook.com (2603:10b6:803:40::25) To MWHPR0701MB3833.namprd07.prod.outlook.com (2603:10b6:301:7f::26) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5003554d-310c-4d64-c622-08d50d4d1115 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075); SRVR:MWHPR0701MB3833; X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3833; 3:m7Ds0BTjiUkmfugE1WIOQtlGIE/cLSyyKb87tOLOvaZDWVWUb6yaZyqx6YoYmhe2IQdBP22LZzchbmbHlQ58y+hEHQoEgt1W6rOLTwZOwOSZ1t4HtNXMIWan96ZiACcWp6MF44K+tEEwNJMf9u4KspNCCx5t0ykj3WPWBU1h9hMpNSAytNuO2UR8x/8H7GEmptWszvW+H0EGWxjKhiXSmJ6rBgS88gdeU6Ophuv4Rh9oS2cnJsmvVZ25CS79xoAH; 25:XZl3wQ7+ppc4hWdWvYbafGvKs+2dDRYIOdOfynwXT/VjGa1lFpW+2jUgYZwDBF3Onix7HmuNiyPFjcp/URoNyPYQQPFeTnhFqpvW4W4gZGsOsIt2OozPBIuSnT0/FiuMotzU3H9YDNi2uRTb8cGiMElwarqJbNfLjL1ToDfDyl9n6FE0+zsC1LrToCJ6dTfbZ0ygi2LGryyabjgpRnB2bThBFtFtJ+NqIOm7ieVThWiTDVKt3pUdUbkUS1uxBImO1CXwWk4M5cqen3Nc+PQhjRERc2hNLB063YsGoeGxdJQuVtsiXBI31c0mVKh0LDn/0ZmHMmVS6T3I2wAa0U/UUw==; 31:DQ6sELzOgcgonMPU6e5rNbB4FEJT5gU/E06SVM09W1HVjH9gJ70i13utyyJrOlcL2K+8vbPGiypVFUImndYzf4KMGitOunAvzBxWBnrGfZYOcVWIEh44fUEI0w6DpEdLsouIfC7sb3mLVz0B0VDxODnuhMLgRxxuoX6U1ioCG7b9ZJC09oDQhPUNTWiW9/cKAk9gzrJeS3GqP8Ci/33naB1In2yYfONeO/lL29ZFz/o= X-MS-TrafficTypeDiagnostic: MWHPR0701MB3833: X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3833; 20:EFzSaFoWdxD9+POka6FTdC1Ugu4x0Yh1UhsUUSnh2/mpH7RPAwVZOEty1Wk1WhUcRuUo6BNRH3x9nyBCptXI5xLz59qEg/9T69EWnR+0qs5HE+TLlZYo6wvNZxhOELDDXxam4rXJxPlkX8/P9Pc8E9Bs20o6DfftigXfGv+ym9Yt2T8dFXB3GZrxSmQ3PI4HJjOtjuDGxx1Q44m0viJOcoNJlIw8kFIdmSsd+u+47OB8QlwxLunURqkeYi+STA8mn9EZe+0JvJPsFEwW6Kb5fJlQQZnhhwWfYP7QAYUCXorLPcSoo4Bizpu7mS0ubp0egym0Idq58+vgfrvVEfdlVyCm1N5ltmbVrTUJrstVHH10zLntfGSxYp8AUmIR+AuhIGN2TbWXnDL/d9PLPCG4sUE56smKapkxUcRGBnsFVSPWrhMai1LiWjOMTpkJuRALB0Pdqn9A3tbcf+Fxep036c7bagxnPOOr6DaCYNv+xulnj8YutFc6WWS9UVB/0cQ2; 4:MeNVOLiohnfLDp9wxdPNfQvHn00/aCt61PriSvaGst/MUI3QrKUqLfStRPr8j06cnxHQnuVKtCoZAqLBsPW/gv0cG/rUfmNXYvF56ZnDWmvogANhIYMNoADAUxqSH2rrrTa5zezdm/muNH0VbDcQeY3+yxsi8UuWrPqA28VkBUJ3f+NdgiQS4rUhqgRJw6/pc9O7lu5zteUE3VkyXrTSGx/AjtEyc+BmfLMsxhYwVtcppoRkE//KreLe1OmUSnQK 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)(10201501046)(3002001)(100000703101)(100105400095)(93006095)(93001095)(6041248)(20161123560025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123558100)(20161123564025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:MWHPR0701MB3833; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:MWHPR0701MB3833; X-Forefront-PRVS: 045315E1EE X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(346002)(376002)(199003)(189002)(2906002)(6116002)(8936002)(3846002)(48376002)(68736007)(478600001)(101416001)(105586002)(50226002)(106356001)(72206003)(5660300001)(50466002)(33646002)(25786009)(4720700003)(21086003)(2950100002)(6666003)(69596002)(36756003)(76176999)(50986999)(81156014)(53936002)(107886003)(4326008)(55016002)(47776003)(66066001)(5003940100001)(81166006)(189998001)(8676002)(305945005)(97736004)(16586007)(316002)(7736002)(16526018)(86362001)(575784001); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR0701MB3833; 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; MWHPR0701MB3833; 23:2A0TOstVtpmCZq1NQO8c7M+gH0tZnb3eRY0fwWY?= ZaKenq+CgLEk7ucy5feJvafy5zYDu2mWOkmHnW03atixVbgDs0KysTGOWIOUEQOCLJNDcOiMrhn4C6uruU2HC3IKf/qlpsYkqApUvZA6Gf1Pu7h6/OvoAZIAXIeuwiuOI2PtEJKHBH88PrHGVcCNPbQCfR/aotI/AuvaFLpZTsBMjKR2/qeptvM7O6HTOfiDF6hvM9HECITCHofHdg58pIcmZ+DRiZkaKjgqyqf7pSZkfLYk8VqbFm+2rVT10QgjiCcm+yrlaQivWBQCFFiwBag1sxggSzfO7idmvwKGPeLeDb2bpzsbTTy1IUOGjdWW/vQ0vmTWrh+tFW1VBEVMM9C1t+h5v8WIKZOHVMsVkNvuuXvYqTTCbCCCLN8eS5iXAKdb6lhRGJ9ZKx3NqVP0GSNHTRR0VCrV2czQlGXxPjyCZJngiSdRYNFZ5dRJ75t1YO0g0MFjaWlrFx4m+Pr+MF/JJDZEXi3KwLQWwin6gJ8EErEvneejp/o6gy8nQ+R0b52K1aQ2C+azQ86gOPc02wH3zNXpmTo+WNPt55XgAeHj0MyDQ5Gv4+0H9t2doqkRnyQbJZnTIn3dyTN8vSS+i/CtppBwSBHTv4L+oH8ybURECmC9ATpxvFGWxAip6p25bHCk/SFVvNOIFrHJaqCI1cWmC56DBx1XUOqXPNumEgxPx2DEdfMY4MhPDki2pGkfzjgrbffFCUIbnTzLM3VcQIF0sN7nq21O/qCkKn414l60soTEj7tMkNFQ2StRYeEc+zGPAToZvtk4pRXoUbP3aVu9177C7cWEBBhNvzv/FrRBVDvg5LH89gH36h6CDye8uv/blqi0iy+JY5gWFQ74GcLbU9hP+Iz5htgHGlXe6VXNRn9pOESzowm8hzJwgID2S8oOSCdMKMYglndRIaq5krMEwBseddxHvsTdXG9sKqYXe7ut/Nv/iV0s2uwWXPFJVKSji8vwKDKdTO6jAucKnoIEQL5MTpl+MzFmKko3+Y8bXW4PEt8JFpBAAsloC7zPXV87ujaKZjDpiMcbxY7fEUzj815zIPePqkKfrt8v1ivzTBfB7I+PlMpIWKUFCh6xMAI+1l09lJERDGUXQchPTR1yb X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3833; 6:CWN9n7q463MqX1hOoHssrlnzPt+s1VRrtebSqonBvm352PLpqEDAeJ0kFD3HnIj+8JRpRBnHUC2jf4lhWcn8BrC8+umLcl/UY2kX74fFRxd78okahxr7zODDo7rKdP3RjCdwvoT35xHJePOfJrd9rRYQSVgqDRxVkaEqTbUhNyXVzRVl/tVmiqcVNAwzlr7DguJyPGnbcoS8p3ufj3qZa8RUytsSS7H/8V0B2KK8So+x4HIP1bO8l3n2Bcxcxv5NaIu8wh5HBLR6x0PITVRrV44xxIZQnLEEVZODlTyLRshNQGCjYlYwaMH93q/dRBNYmM5uSdVOFFwivz4tXx0JPA==; 5:SsxrgScbOETmRq5MVDbkjARu25i4NOOjnCuR7ZiIkDEzdbWvpeVQpgpevNLe588PMqt8dW4r9VElrEm/R2gXoLSZNKJXD91mF5NhCyyQ+p07kI+BNuwtOvGPYRyfnVvjzsCNzU0DgJCFjl0xY4MWUg==; 24:fHH5jr8IW5V0USAB4q+uY5voLD0WInI+Caxb5mc1AFB/4+p20fgFD7Bd+xahTWj+rfPraL50VYF1NlUzk+GW7jLE+ckQgg8eLUr+FVCWZcQ=; 7:vgYfdrOf7iQ3OOrU4TBYAs16RtZP+MHcvLebkFFfUSTwW+d2YRHvpps0AaiP5YSy/AazCjCfxPPIpBc+mBOi0IZoovBb20Rr0OpAy9u3PlAFNVh7vtTjzRERc6JVdi6pPU3GTwN0WqgmSBjINnEha0Xdyr6mR8hJaJ+NXC3flTF8I4uzDFXIC/UoxMjXwqaoRcJr78NqaIKS6LLTKuZsnzos4uVSvkwSOJ69MdSwd68= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2017 06:31:38.7763 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR0701MB3833 Subject: [dpdk-dev] [PATCH 03/17] net/qede/base: introduce HW/SW channel 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" Introduce 2 new API functions, one for the VF and the other for PF [per-VF] which allows to decide whether to use HW/SW channel for PF<->VF communication(a per-VF configuration). A HyperV might have different VMs with different requirements. Signed-off-by: Rasesh Mody --- drivers/net/qede/base/ecore_iov_api.h | 14 ++++++++++++++ drivers/net/qede/base/ecore_sriov.c | 16 +++++++++++++++- drivers/net/qede/base/ecore_sriov.h | 5 +++++ drivers/net/qede/base/ecore_vf.c | 7 +++++++ drivers/net/qede/base/ecore_vf.h | 7 +++++++ drivers/net/qede/base/ecore_vf_api.h | 13 +++++++++++++ 6 files changed, 61 insertions(+), 1 deletion(-) diff --git a/drivers/net/qede/base/ecore_iov_api.h b/drivers/net/qede/base/ecore_iov_api.h index 1f0edeb..218ef50 100644 --- a/drivers/net/qede/base/ecore_iov_api.h +++ b/drivers/net/qede/base/ecore_iov_api.h @@ -720,6 +720,20 @@ enum _ecore_status_t void ecore_iov_bulletin_set_udp_ports(struct ecore_hwfn *p_hwfn, int vfid, u16 vxlan_port, u16 geneve_port); + +#ifdef CONFIG_ECORE_SW_CHANNEL +/** + * @brief Set whether PF should communicate with VF using SW/HW channel + * Needs to be called for an enabled VF before acquire is over + * [latest good point for doing that is OSAL_IOV_VF_ACQUIRE()] + * + * @param p_hwfn + * @param vfid - relative vf index + * @param b_is_hw - true iff PF is to use HW channel for communication + */ +void ecore_iov_set_vf_hw_channel(struct ecore_hwfn *p_hwfn, int vfid, + bool b_is_hw); +#endif #endif /* CONFIG_ECORE_SRIOV */ #define ecore_for_each_vf(_p_hwfn, _i) \ diff --git a/drivers/net/qede/base/ecore_sriov.c b/drivers/net/qede/base/ecore_sriov.c index a1d4982..53d3d24 100644 --- a/drivers/net/qede/base/ecore_sriov.c +++ b/drivers/net/qede/base/ecore_sriov.c @@ -1381,7 +1381,7 @@ static void ecore_iov_send_response(struct ecore_hwfn *p_hwfn, mbx->sw_mbx.response_size = length + sizeof(struct channel_list_end_tlv); - if (!p_hwfn->p_dev->b_hw_channel) + if (!p_vf->b_hw_channel) return; #endif @@ -4828,3 +4828,17 @@ enum _ecore_status_t else return 0; } + +#ifdef CONFIG_ECORE_SW_CHANNEL +void ecore_iov_set_vf_hw_channel(struct ecore_hwfn *p_hwfn, int vfid, + bool b_is_hw) +{ + struct ecore_vf_info *vf_info; + + vf_info = ecore_iov_get_vf_info(p_hwfn, (u16)vfid, true); + if (!vf_info) + return; + + vf_info->b_hw_channel = b_is_hw; +} +#endif diff --git a/drivers/net/qede/base/ecore_sriov.h b/drivers/net/qede/base/ecore_sriov.h index 4ff5425..0e83f0f 100644 --- a/drivers/net/qede/base/ecore_sriov.h +++ b/drivers/net/qede/base/ecore_sriov.h @@ -117,6 +117,11 @@ struct ecore_vf_info { struct ecore_bulletin bulletin; dma_addr_t vf_bulletin; +#ifdef CONFIG_ECORE_SW_CHANNEL + /* Determine whether PF communicate with VF using HW/SW channel */ + bool b_hw_channel; +#endif + /* PF saves a copy of the last VF acquire message */ struct vfpf_acquire_tlv acquire; diff --git a/drivers/net/qede/base/ecore_vf.c b/drivers/net/qede/base/ecore_vf.c index b78d735..9ad986c 100644 --- a/drivers/net/qede/base/ecore_vf.c +++ b/drivers/net/qede/base/ecore_vf.c @@ -1861,3 +1861,10 @@ void ecore_vf_get_fw_version(struct ecore_hwfn *p_hwfn, *fw_rev = info->fw_rev; *fw_eng = info->fw_eng; } + +#ifdef CONFIG_ECORE_SW_CHANNEL +void ecore_vf_set_hw_channel(struct ecore_hwfn *p_hwfn, bool b_is_hw) +{ + p_hwfn->vf_iov_info->b_hw_channel = b_is_hw; +} +#endif diff --git a/drivers/net/qede/base/ecore_vf.h b/drivers/net/qede/base/ecore_vf.h index fdb0fe0..de2758c 100644 --- a/drivers/net/qede/base/ecore_vf.h +++ b/drivers/net/qede/base/ecore_vf.h @@ -50,6 +50,13 @@ struct ecore_vf_iov { */ struct ecore_sb_info *sbs_info[PFVF_MAX_SBS_PER_VF]; +#ifdef CONFIG_ECORE_SW_CHANNEL + /* Would be set if the VF is to try communicating with it PF + * using a hw channel. + */ + bool b_hw_channel; +#endif + /* Determines whether VF utilizes doorbells via limited register * bar or via the doorbell bar. */ diff --git a/drivers/net/qede/base/ecore_vf_api.h b/drivers/net/qede/base/ecore_vf_api.h index be3a326..9815cf8 100644 --- a/drivers/net/qede/base/ecore_vf_api.h +++ b/drivers/net/qede/base/ecore_vf_api.h @@ -163,5 +163,18 @@ void ecore_vf_get_fw_version(struct ecore_hwfn *p_hwfn, u16 *fw_eng); void ecore_vf_bulletin_get_udp_ports(struct ecore_hwfn *p_hwfn, u16 *p_vxlan_port, u16 *p_geneve_port); + +#ifdef CONFIG_ECORE_SW_CHANNEL +/** + * @brief set the VF to use a SW/HW channel when communicating with PF. + * NOTICE: today the likely first place to call this from VF + * would be OSAL_VF_FILL_ACQUIRE_RESC_REQ(); Might want to consider + * something a bit more appropriate. + * + * @param p_hwfn + * @param b_is_hw - true iff VF is to use a HW-channel + */ +void ecore_vf_set_hw_channel(struct ecore_hwfn *p_hwfn, bool b_is_hw); +#endif #endif #endif