From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <Anoob.Joseph@cavium.com>
Received: from NAM05-CO1-obe.outbound.protection.outlook.com
 (mail-eopbgr720075.outbound.protection.outlook.com [40.107.72.75])
 by dpdk.org (Postfix) with ESMTP id 933EF1B178
 for <dev@dpdk.org>; Tue,  9 Oct 2018 11:09:09 +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:X-MS-Exchange-SenderADCheck;
 bh=nYTIGpWZFFk5lrYW4jyfMTOo755hM2UG7ypMVvjRTKg=;
 b=HfEzZBM50tSjup3LIS/vF8KREhyXUTsoLSDCnMkp4pK77KkpCrTz5vKz1WVhX2sFVnlCIfhO2Z8ChVNfusOLUPyOTJE62kPz0DWvXTE0bQdYzpKdyq9mToclNWmULDzeSBe4niJcsDkB+43Sh4eDmaukznI0P0YOFf8tV+VEbvo=
Authentication-Results: spf=none (sender IP is )
 smtp.mailfrom=Anoob.Joseph@cavium.com; 
Received: from ajoseph83.caveonetworks.com.com (115.113.156.2) by
 BN7PR07MB4897.namprd07.prod.outlook.com (2603:10b6:406:ef::26) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.1207.28; Tue, 9 Oct 2018 09:09:03 +0000
From: Anoob Joseph <anoob.joseph@caviumnetworks.com>
To: Akhil Goyal <akhil.goyal@nxp.com>,
 Pablo de Lara <pablo.de.lara.guarch@intel.com>,
 Thomas Monjalon <thomas@monjalon.net>
Cc: Murthy NSSR <nidadavolu.murthy@caviumnetworks.com>,
 Jerin Jacob <jerin.jacob@caviumnetworks.com>,
 Narayana Prasad <narayanaprasad.athreya@caviumnetworks.com>,
 Ankur Dwivedi <ankur.dwivedi@caviumnetworks.com>,
 Anoob Joseph <anoob.joseph@caviumnetworks.com>,
 Nithin Dabilpuram <nithin.dabilpuram@caviumnetworks.com>,
 Ragothaman Jayaraman <rjayaraman@caviumnetworks.com>,
 Srisivasubramanian S <ssrinivasan@caviumnetworks.com>,
 Tejasree Kondoj <kondoj.tejasree@caviumnetworks.com>, dev@dpdk.org
Date: Tue,  9 Oct 2018 14:37:40 +0530
Message-Id: <1539076076-19786-8-git-send-email-anoob.joseph@caviumnetworks.com>
X-Mailer: git-send-email 2.7.4
In-Reply-To: <1539076076-19786-1-git-send-email-anoob.joseph@caviumnetworks.com>
References: <1538744363-30340-1-git-send-email-anoob.joseph@caviumnetworks.com>
 <1539076076-19786-1-git-send-email-anoob.joseph@caviumnetworks.com>
MIME-Version: 1.0
Content-Type: text/plain
X-Originating-IP: [115.113.156.2]
X-ClientProxiedBy: PN1PR0101CA0004.INDPRD01.PROD.OUTLOOK.COM
 (2603:1096:c00:e::14) To BN7PR07MB4897.namprd07.prod.outlook.com
 (2603:10b6:406:ef::26)
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: f4aacb0c-7dab-4a09-0cf4-08d62dc6de67
X-Microsoft-Antispam: BCL:0; PCL:0;
 RULEID:(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(2017052603328)(7153060)(7193020);
 SRVR:BN7PR07MB4897; 
X-Microsoft-Exchange-Diagnostics: 1; BN7PR07MB4897;
 3:SQkYxZj7SUAtcvt31xCa7ALw7oOQeFAam3aUh3ZJM8wTUgkKImLe3Vv83g9vNPX+49vVwH1Sa6LvC+4VXPOJTEJjjk1JxJl2wDuS9v8WGm4mXp6jSoKGI7CMU5Ndj+iST9hECOD57k11hsepoX14EHkEAhEFVfMse6RwJZupWZ0QIQH74lShOSUBZJ/BfSjyKIPjrpHn/nQJBNwv1Qk+tNXCcsSxq2OpRBo4aUE4DRfuOsLVK40X4Ayy32oEtVAr;
 25:SLcZU6ngjuKxEs4T3RgCQoPmMISTyfNNBqaG7tTdb3N3Mupm+poqBn1iDanRSbCfQPjGp+CmnAzPt9hPV2CKUjEYDAsxkkIjy7YhdCZtjmHV3pPUvJSmoBw5I9IJhfGGOnz7VXZqza7Lt9Go4u5lXJbm5WIFQG6f4sY2iozscNsDLijDnQvv1V9CI8Oy99kK9IJuBU+D1Y5Uvi1JdNGiGjXxGj3gaX0Asva+/SwpUOtkJieM02GVekLueoE7HhDWdYGaA/TVB4ywsLnMV5Qkm6uml8knerM0Ul+K/YtYMYww8RBwgDA3gjhcjy94psC9R4gWIhr6hHZmoCrwENFmcA==;
 31:niZ6/J6iMuj5YyS/bSg/41naE6m4kikmio/NWi4ECtpdaOaH0/AtWhf6zBsowRpdNsF+pqVnS7N7FOJG2qu9xsX2u+IxPdtaCwk9rAE/gic38oM1whtzKCSAIlAHx+u1js5GjJ1pyTUkndrG7I6RFFwP+tn2hSipimy7mkTQmUC7PeWittetsL76Y0wisZWhtKL6V4+ycHJEChRnA9XHIqArvuuGm49jSDCVpAkGar4=
X-MS-TrafficTypeDiagnostic: BN7PR07MB4897:
X-Microsoft-Exchange-Diagnostics: 1; BN7PR07MB4897;
 20:3kwD/NFJP0MeMSp89ojWq4ZtG5xI3uM0HWofUO/mQurMhpfdfXHzUFlGyEi0BNfJjT3KHINaDs2uF1ODsxlNT6EmjCEPUYd4jfUJ8m0ExAd/sKGQKuTrmLwL8qfRA6rK5HEdI33VeCNsPAGEmAKMJqRFHth00ckVftSItnbpX6DdIfkHCeF1vrgLYoMzXES7zFrustByRcZ230Yi74zhmfTHoGN7eLx8eMpFw8q/AppmE382Fv+/CtT23SzXE72xmEvrAYNOQlEihhvzOBeos3II40wOJwhB3n/8iLWuywNBM9wIwVR/8vmySYdXPcqftLeeDMWBRlqMdSpcTawitOer4npiDTa6JrwhcDvSUXRb3zo/hCk0Kh6enW648qQqucdYMr647ZhOBXR4qyoqt04Q+G/vL/jwVHGAWYdd2GE7l30YxA3ZYCurRJpjuH4TlYbcOJgq0iRLtph56QmGp8o5ccrUjAQlgSpjDtUMd3wU47w1BDdrq1eB7zJFAfcCB82vLeChZkuFvUrbDJJ1U2bCLTxQnhI6KEjGSd6RRhr7rSkWQmYA0vvk5b/1GacsbxpM2iP2l1UwNecWJMspljcwGyd6n87PNLD8P3Y2SV0=;
 4:cBJbe0NZC5QqJ4xxqsVWcWK0lZOCV1xKQ/v3HWOMnBp0gqARxuz6bjibpHcn6P/AyAujbC6SW/pU5BfUoPa3sic6K/GO7LWzizyLxdURAx8lABjkNzaGDpquRE+yWLxYhvvOmSzAoQntDzrUiV2lw0ihXft5kWQyFO0jBIir2Qva0xofiqGCDcd+vna1V/vvukK2p9leSwG9WRlFGIW7TDSTkjOidLHsuQVPSeZXbkqu8Hb2EylbsYUEAXQhJgl256CY6Q5Q5A/x/BUnoWBBuJtmZvhm8GiIfZ00vFPWahFdV4pqSpiTSSAGh5O9Ne1r
X-Microsoft-Antispam-PRVS: <BN7PR07MB4897693122D605F5E33AB0D2F8E70@BN7PR07MB4897.namprd07.prod.outlook.com>
X-Exchange-Antispam-Report-Test: UriScan:(35073007944872);
X-MS-Exchange-SenderADCheck: 1
X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0;
 RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3002001)(93006095)(10201501046)(3231355)(944501410)(52105095)(149066)(150057)(6041310)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123564045)(20161123558120)(201708071742011)(7699051);
 SRVR:BN7PR07MB4897; BCL:0; PCL:0; RULEID:; SRVR:BN7PR07MB4897; 
X-Forefront-PRVS: 08200063E9
X-Forefront-Antispam-Report: SFV:NSPM;
 SFS:(10009020)(396003)(366004)(376002)(136003)(346002)(39860400002)(199004)(189003)(42882007)(47776003)(106356001)(6666003)(186003)(5660300001)(26005)(68736007)(16526019)(8936002)(25786009)(6116002)(2906002)(81156014)(50226002)(305945005)(81166006)(7736002)(3846002)(105586002)(15650500001)(478600001)(8676002)(54906003)(110136005)(48376002)(16586007)(14444005)(575784001)(6486002)(6506007)(50466002)(316002)(53936002)(386003)(51416003)(52116002)(76176011)(11346002)(6512007)(44832011)(446003)(36756003)(55236004)(956004)(2616005)(486006)(4326008)(66066001)(97736004)(72206003)(476003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:BN7PR07MB4897;
 H:ajoseph83.caveonetworks.com.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords;
 A:1; MX:1; 
Received-SPF: None (protection.outlook.com: cavium.com does not designate
 permitted sender hosts)
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN7PR07MB4897;
 23:EK0u5Zb2TFFUXSgekMAoTQJ9csKAPg9MB4Q7ieGh1?=
 =?us-ascii?Q?8IuoJJncqcMjhu5u9SfANqDuyVYdZKB52t0fdQMn0Y7VZTAzneOKU9TaNlwn?=
 =?us-ascii?Q?5YE593qn3SFfBwanvirsQ6fKCcNnbWTb+O/kxzyLJu3Wh0wVdimrk4b+fBuw?=
 =?us-ascii?Q?Lb+5qI26aknfLnVaU6UqvxjdgvhRMILTa4gmihubNeBqccNLmpRjaKuM76om?=
 =?us-ascii?Q?8PfzKc07K+byf7dCI7syVBEnmFNA/ZmmdaembQhJq8TsOLrn85aqOo486H/A?=
 =?us-ascii?Q?oyFi1AM1y3it0go5wfGT6qGTjb/Ryhy4UxLgJsx+dEd1e3uhHxuxLAmc2nQa?=
 =?us-ascii?Q?aqTBgTIfKtygKRvDjwzBNCDXfjp4pnl4xpvp8kZkIeqtUxiMqouLryohX3WQ?=
 =?us-ascii?Q?t/8+5ckb3YQkq8viqlcQM747RtrwaG+qVc6X4rTlOWYfVKGCQVuEllm0kOfC?=
 =?us-ascii?Q?9fuEYqvt7S1I00S8toz+PYtoGcBhEySbEXqP9fO9WaxLt7BCh1elTrT+KR9d?=
 =?us-ascii?Q?aWWMJzQ9dmbC+NOUUMn9Ddh+hHnEsl8vIhtOhE2Nm/6fgl/LHXbAQ+3FRJWS?=
 =?us-ascii?Q?bMLRUpKDhxZvzLUmC0iyJL7Za48ogRdF3ZSkqkmmDkoYhyoHMQLKFVW1jAwR?=
 =?us-ascii?Q?17IcsWvXixaxWNPIbKy71dXhonvqN0EoGmrQ4cYH9IIMdW0AA/4v29h81eXE?=
 =?us-ascii?Q?2y6M5mNbuPdUM9k8KI4diFDDuHiFq3LT5VGxQ8xFIN3IguEPEyWFNLRuu+UW?=
 =?us-ascii?Q?LZXd6I3iXBdZkPTxeXMtMxarBpGqeGselkh0RWoSA55qI3NJRmwcy3UjvTmN?=
 =?us-ascii?Q?TD0GRFd+b01YK166sVtYngz1PLx2PHsaNkJT6JadlSfXyVviR3kppK6ILzoQ?=
 =?us-ascii?Q?RzB1R20r07p4TfFlykXknQ07+yAtbnuW0Um/jc0GeFWJdos3ekjEfNFtj6hV?=
 =?us-ascii?Q?3VoISiwlraXG71bUuyx5guBsdfhP4jPXoWkZd/KkFNcbGOtWUH+mlwftVyTm?=
 =?us-ascii?Q?njYJzj/3Y4KT83DoG+wCewYnSIqkOh2EoaAeWvxcS+eNdhRVrRlRxJSwUX/6?=
 =?us-ascii?Q?k2oBZoxAtHJ12DIZWnLpokZx2wNmMuBJu+1FQ6L/zNHSzu23am9+b7cjnvvq?=
 =?us-ascii?Q?MbNJ77o2E8kZry4Z4dacF8tuWGFwv9dBlBicwv4Dha2hzC9QVjS5L9tGE+pW?=
 =?us-ascii?Q?rTLVJ7S8g1OM8Kms53iMaZeQNIPoKhBQAxRBfIoM3kYhZCYrHpHBAmKcV2B8?=
 =?us-ascii?Q?fLIsYrj4pgYdKJJWsvWN22TsLZ6Bp7MTDcbjbnn9BpWIq3o72l+3rCaB9VSg?=
 =?us-ascii?Q?9b31Sqjz1QDvYU1Z1ulLSeVYT5V4aJ1rIhYIioFzRQf?=
X-Microsoft-Antispam-Message-Info: Fg26+8u5/iD8Ld40YZEAEssXv8o2ZNpJM8ncR7ZO+g1Wwkw3E2ArDuw4Otf/KIk0C4YWqEj9YgWq3oVyzBMWqiT5vq5Y0oUb26X/qAvjOqAehA/b8Nz7ZXORyLT4N1wFE9kDeIHYhsetnoWC3BV6lOYk1C8uQWI+zmXelBqMJTWPWaBMRKQcEcMQtt78wR4zMozvaD35WQhTFNctx7wjuF5WkiZrhL3HNKnLg1hf0jeD1uY9r0a7yKW33ZLNyDXjITyQw+AXVvVpdEi2fCDYxpxuO30hoHaQcJzxRtBLCmn1x6K4ZQBlrszfJupsOpk4mY+WwVKAQKkN1R/d8Z1Zp2H2zZfAAV9UK+ye9oILDj8=
X-Microsoft-Exchange-Diagnostics: 1; BN7PR07MB4897;
 6:LNOtMxIlerubfxCFpaVIuEnZt7ABzLcrRK9fgaFokFyKNY7YbW+OSt/Y3BbzPVTgSogaqLTKlDm1Ol8oXiUvTZPwtvKazheg8U8AYf+PHiR6yc/jCGxGjg+W8fFiZ9uMYbJplM7Cqn2TxIxXWhX1uFh4+0ZTdqlBOTkbVm4beWXg0yfW/6sOmHSWXlQ9cMRtxxuf+GWHNgto8wtpekk43UxzWY7knKXaZzvcTbN0Ry2OB8gxeBJLwP1UjmPfsFzFNS6bCX7HpNQc7BA2tcYRcaSzb9P3ldfuSlEnMtaBy7KFRQYqgdS6lEx/Hifr0qm75UG9gT+PjdHiNazLNTno7RI0Y2sIo/wJGjl8Y7jUHi1OmR9i6CZ38cV5N96sbsBD18gYwRQ+6z2nJskHdcTO89/c0HrQCBQQMcsp11bsN86Y4WlEJj4Jr8k2YPTW+aNu7pdp8vVmJeUEZ0vcGl5Jeg==;
 5:Xpu8Tvnp9IBlRttkj/hrNFWMoRN9AIIK0F275VXXtPZBJZSk4l4M3uyG8k+MKGztFoBp/qIkSK9lwRe2+5LGTdXwGKDOZpUW5BNIk7/ZYGEh5A9Gwq5aZLWpFXmvOsQEyA/gErOmv6LQVi2m7D4bdvmF/6zeRYlPrYMlkX9hzmY=;
 7:r4HiDyTaLkGhQEMuPVNV88P98bm+pyc9dkh4PQakh5VWmL9Q5nznqCRpfZp+QYwOevCBNI1j/QJyGx+BFKiq6TU0NgTmawdcVijQPV8BBPyT6vF2Ecj09qx4poT7Pq5hz1JXYqxCL8+mfhFYhiHKPelkrJM0W+znpBB/9E8+l3o9A6wGjYNJ3LXU7IIBI27CqQjvmnBgvslbtYjgMVv9nlyp4IliMPHXt4R3tpYn7ca8a61SVEDpzm/RRrMojhNU
SpamDiagnosticOutput: 1:99
SpamDiagnosticMetadata: NSPM
X-OriginatorOrg: caviumnetworks.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2018 09:09:03.6705 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f4aacb0c-7dab-4a09-0cf4-08d62dc6de67
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN7PR07MB4897
Subject: [dpdk-dev] [PATCH v4 07/23] crypto/octeontx: add mailbox routines
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Tue, 09 Oct 2018 09:09:10 -0000

From: Murthy NSSR <nidadavolu.murthy@caviumnetworks.com>

Adding mailbox routines to interact with the pf driver

Signed-off-by: Ankur Dwivedi <ankur.dwivedi@caviumnetworks.com>
Signed-off-by: Anoob Joseph <anoob.joseph@caviumnetworks.com>
Signed-off-by: Murthy NSSR <nidadavolu.murthy@caviumnetworks.com>
Signed-off-by: Nithin Dabilpuram <nithin.dabilpuram@caviumnetworks.com>
Signed-off-by: Ragothaman Jayaraman <rjayaraman@caviumnetworks.com>
Signed-off-by: Srisivasubramanian S <ssrinivasan@caviumnetworks.com>
Signed-off-by: Tejasree Kondoj <kondoj.tejasree@caviumnetworks.com>
---
 drivers/crypto/octeontx/Makefile                  |   1 +
 drivers/crypto/octeontx/meson.build               |   1 +
 drivers/crypto/octeontx/otx_cryptodev_hw_access.c |  13 ++
 drivers/crypto/octeontx/otx_cryptodev_mbox.c      | 178 ++++++++++++++++++++++
 drivers/crypto/octeontx/otx_cryptodev_mbox.h      |  92 +++++++++++
 5 files changed, 285 insertions(+)
 create mode 100644 drivers/crypto/octeontx/otx_cryptodev_mbox.c
 create mode 100644 drivers/crypto/octeontx/otx_cryptodev_mbox.h

diff --git a/drivers/crypto/octeontx/Makefile b/drivers/crypto/octeontx/Makefile
index 1808244..2e78e69 100644
--- a/drivers/crypto/octeontx/Makefile
+++ b/drivers/crypto/octeontx/Makefile
@@ -27,6 +27,7 @@ CFLAGS += -I$(RTE_SDK)/drivers/common/cpt
 SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO) += otx_cryptodev.c
 SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO) += otx_cryptodev_capabilities.c
 SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO) += otx_cryptodev_hw_access.c
+SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO) += otx_cryptodev_mbox.c
 SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO) += otx_cryptodev_ops.c
 
 # export include files
diff --git a/drivers/crypto/octeontx/meson.build b/drivers/crypto/octeontx/meson.build
index 7f65476..6511b40 100644
--- a/drivers/crypto/octeontx/meson.build
+++ b/drivers/crypto/octeontx/meson.build
@@ -11,6 +11,7 @@ name = 'octeontx_crypto'
 sources = files('otx_cryptodev.c',
 		'otx_cryptodev_capabilities.c',
 		'otx_cryptodev_hw_access.c',
+		'otx_cryptodev_mbox.c',
 		'otx_cryptodev_ops.c')
 
 includes += include_directories('../../common/cpt')
diff --git a/drivers/crypto/octeontx/otx_cryptodev_hw_access.c b/drivers/crypto/octeontx/otx_cryptodev_hw_access.c
index e8a2b0b..eb9fbcf 100644
--- a/drivers/crypto/octeontx/otx_cryptodev_hw_access.c
+++ b/drivers/crypto/octeontx/otx_cryptodev_hw_access.c
@@ -7,6 +7,7 @@
 #include <rte_common.h>
 
 #include "otx_cryptodev_hw_access.h"
+#include "otx_cryptodev_mbox.h"
 
 #include "cpt_pmd_logs.h"
 #include "cpt_hw_types.h"
@@ -22,8 +23,19 @@ otx_cpt_vf_init(struct cpt_vf *cptvf)
 {
 	int ret = 0;
 
+	/* Check ready with PF */
+	/* Gets chip ID / device Id from PF if ready */
+	ret = otx_cpt_check_pf_ready(cptvf);
+	if (ret) {
+		CPT_LOG_ERR("%s: PF not responding to READY msg",
+				cptvf->dev_name);
+		ret = -EBUSY;
+		goto exit;
+	}
+
 	CPT_LOG_DP_DEBUG("%s: %s done", cptvf->dev_name, __func__);
 
+exit:
 	return ret;
 }
 
@@ -178,6 +190,7 @@ otx_cpt_poll_misc(struct cpt_vf *cptvf)
 	if (likely(intr & CPT_VF_INTR_MBOX_MASK)) {
 		CPT_LOG_DP_DEBUG("%s: Mailbox interrupt 0x%lx on CPT VF %d",
 			cptvf->dev_name, (unsigned int long)intr, cptvf->vfid);
+		otx_cpt_handle_mbox_intr(cptvf);
 		otx_cpt_clear_mbox_intr(cptvf);
 	} else if (unlikely(intr & CPT_VF_INTR_IRDE_MASK)) {
 		otx_cpt_clear_irde_intr(cptvf);
diff --git a/drivers/crypto/octeontx/otx_cryptodev_mbox.c b/drivers/crypto/octeontx/otx_cryptodev_mbox.c
new file mode 100644
index 0000000..a8e51a8
--- /dev/null
+++ b/drivers/crypto/octeontx/otx_cryptodev_mbox.c
@@ -0,0 +1,178 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2018 Cavium, Inc
+ */
+
+#include <unistd.h>
+
+#include "otx_cryptodev_hw_access.h"
+#include "otx_cryptodev_mbox.h"
+
+void
+otx_cpt_handle_mbox_intr(struct cpt_vf *cptvf)
+{
+	struct cpt_mbox mbx = {0, 0};
+
+	/*
+	 * MBOX[0] contains msg
+	 * MBOX[1] contains data
+	 */
+	mbx.msg  = CPT_READ_CSR(CPT_CSR_REG_BASE(cptvf),
+				CPTX_VFX_PF_MBOXX(0, 0, 0));
+	mbx.data = CPT_READ_CSR(CPT_CSR_REG_BASE(cptvf),
+				CPTX_VFX_PF_MBOXX(0, 0, 1));
+
+	CPT_LOG_DP_DEBUG("%s: Mailbox msg 0x%lx from PF",
+		    cptvf->dev_name, (unsigned int long)mbx.msg);
+	switch (mbx.msg) {
+	case OTX_CPT_MSG_READY:
+		{
+			otx_cpt_chipid_vfid_t cid;
+
+			cid.u64 = mbx.data;
+			cptvf->pf_acked = true;
+			cptvf->vfid = cid.s.vfid;
+			CPT_LOG_DP_DEBUG("%s: Received VFID %d chip_id %d",
+					 cptvf->dev_name,
+					 cptvf->vfid, cid.s.chip_id);
+		}
+		break;
+	case OTX_CPT_MSG_QBIND_GRP:
+		cptvf->pf_acked = true;
+		cptvf->vftype = mbx.data;
+		CPT_LOG_DP_DEBUG("%s: VF %d type %s group %d",
+				 cptvf->dev_name, cptvf->vfid,
+				 ((mbx.data == SE_TYPE) ? "SE" : "AE"),
+				 cptvf->vfgrp);
+		break;
+	case OTX_CPT_MBOX_MSG_TYPE_ACK:
+		cptvf->pf_acked = true;
+		break;
+	case OTX_CPT_MBOX_MSG_TYPE_NACK:
+		cptvf->pf_nacked = true;
+		break;
+	default:
+		CPT_LOG_DP_DEBUG("%s: Invalid msg from PF, msg 0x%lx",
+				 cptvf->dev_name, (unsigned int long)mbx.msg);
+		break;
+	}
+}
+
+/* Send a mailbox message to PF
+ * @vf: vf from which this message to be sent
+ * @mbx: Message to be sent
+ */
+static void
+otx_cpt_send_msg_to_pf(struct cpt_vf *cptvf, struct cpt_mbox *mbx)
+{
+	/* Writing mbox(1) causes interrupt */
+	CPT_WRITE_CSR(CPT_CSR_REG_BASE(cptvf),
+		      CPTX_VFX_PF_MBOXX(0, 0, 0), mbx->msg);
+	CPT_WRITE_CSR(CPT_CSR_REG_BASE(cptvf),
+		      CPTX_VFX_PF_MBOXX(0, 0, 1), mbx->data);
+}
+
+static int32_t
+otx_cpt_send_msg_to_pf_timeout(struct cpt_vf *cptvf, struct cpt_mbox *mbx)
+{
+	int timeout = OTX_CPT_MBOX_MSG_TIMEOUT;
+	int sleep_ms = 10;
+
+	cptvf->pf_acked = false;
+	cptvf->pf_nacked = false;
+
+	otx_cpt_send_msg_to_pf(cptvf, mbx);
+
+	/* Wait for previous message to be acked, timeout 2sec */
+	while (!cptvf->pf_acked) {
+		if (cptvf->pf_nacked)
+			return -EINVAL;
+		usleep(sleep_ms * 1000);
+		otx_cpt_poll_misc(cptvf);
+		if (cptvf->pf_acked)
+			break;
+		timeout -= sleep_ms;
+		if (!timeout) {
+			CPT_LOG_ERR("%s: PF didn't ack mbox msg %lx(vfid %u)",
+				    cptvf->dev_name,
+				    (unsigned int long)(mbx->msg & 0xFF),
+				    cptvf->vfid);
+			return -EBUSY;
+		}
+	}
+	return 0;
+}
+
+int
+otx_cpt_check_pf_ready(struct cpt_vf *cptvf)
+{
+	struct cpt_mbox mbx = {0, 0};
+
+	mbx.msg = OTX_CPT_MSG_READY;
+	if (otx_cpt_send_msg_to_pf_timeout(cptvf, &mbx)) {
+		CPT_LOG_ERR("%s: PF didn't respond to READY msg",
+			    cptvf->dev_name);
+		return 1;
+	}
+	return 0;
+}
+
+int
+otx_cpt_send_vq_size_msg(struct cpt_vf *cptvf)
+{
+	struct cpt_mbox mbx = {0, 0};
+
+	mbx.msg = OTX_CPT_MSG_QLEN;
+
+	mbx.data = cptvf->qsize;
+	if (otx_cpt_send_msg_to_pf_timeout(cptvf, &mbx)) {
+		CPT_LOG_ERR("%s: PF didn't respond to vq_size msg",
+			    cptvf->dev_name);
+		return 1;
+	}
+	return 0;
+}
+
+int
+otx_cpt_send_vf_grp_msg(struct cpt_vf *cptvf, uint32_t group)
+{
+	struct cpt_mbox mbx = {0, 0};
+
+	mbx.msg = OTX_CPT_MSG_QBIND_GRP;
+
+	/* Convey group of the VF */
+	mbx.data = group;
+	if (otx_cpt_send_msg_to_pf_timeout(cptvf, &mbx)) {
+		CPT_LOG_ERR("%s: PF didn't respond to vf_type msg",
+			    cptvf->dev_name);
+		return 1;
+	}
+	return 0;
+}
+
+int
+otx_cpt_send_vf_up(struct cpt_vf *cptvf)
+{
+	struct cpt_mbox mbx = {0, 0};
+
+	mbx.msg = OTX_CPT_MSG_VF_UP;
+	if (otx_cpt_send_msg_to_pf_timeout(cptvf, &mbx)) {
+		CPT_LOG_ERR("%s: PF didn't respond to UP msg",
+			    cptvf->dev_name);
+		return 1;
+	}
+	return 0;
+}
+
+int
+otx_cpt_send_vf_down(struct cpt_vf *cptvf)
+{
+	struct cpt_mbox mbx = {0, 0};
+
+	mbx.msg = OTX_CPT_MSG_VF_DOWN;
+	if (otx_cpt_send_msg_to_pf_timeout(cptvf, &mbx)) {
+		CPT_LOG_ERR("%s: PF didn't respond to DOWN msg",
+			    cptvf->dev_name);
+		return 1;
+	}
+	return 0;
+}
diff --git a/drivers/crypto/octeontx/otx_cryptodev_mbox.h b/drivers/crypto/octeontx/otx_cryptodev_mbox.h
new file mode 100644
index 0000000..b05d1c5
--- /dev/null
+++ b/drivers/crypto/octeontx/otx_cryptodev_mbox.h
@@ -0,0 +1,92 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2018 Cavium, Inc
+ */
+
+#ifndef _OTX_CRYPTODEV_MBOX_H_
+#define _OTX_CRYPTODEV_MBOX_H_
+
+#include <rte_byteorder.h>
+#include <rte_common.h>
+
+#include "cpt_common.h"
+#include "cpt_pmd_logs.h"
+
+#include "otx_cryptodev_hw_access.h"
+
+#define OTX_CPT_MBOX_MSG_TIMEOUT    2000 /* In Milli Seconds */
+
+#define OTX_CPT_MBOX_MSG_TYPE_REQ	0
+#define OTX_CPT_MBOX_MSG_TYPE_ACK	1
+#define OTX_CPT_MBOX_MSG_TYPE_NACK	2
+#define OTX_CPT_MBOX_MSG_TYPE_NOP	3
+
+/* CPT mailbox structure */
+struct cpt_mbox {
+	/** Message type MBOX[0] */
+	uint64_t msg;
+	/** Data         MBOX[1] */
+	uint64_t data;
+};
+
+typedef enum {
+	OTX_CPT_MSG_VF_UP = 1,
+	OTX_CPT_MSG_VF_DOWN,
+	OTX_CPT_MSG_READY,
+	OTX_CPT_MSG_QLEN,
+	OTX_CPT_MSG_QBIND_GRP,
+	OTX_CPT_MSG_VQ_PRIORITY,
+	OTX_CPT_MSG_PF_TYPE,
+} otx_cpt_mbox_opcode_t;
+
+typedef union {
+	uint64_t u64;
+	struct {
+#if RTE_BYTE_ORDER == RTE_BIG_ENDIAN
+		uint32_t chip_id;
+		uint8_t vfid;
+		uint8_t reserved[3];
+#else
+		uint8_t reserved[3];
+		uint8_t vfid;
+		uint32_t chip_id;
+#endif
+	} s;
+} otx_cpt_chipid_vfid_t;
+
+/* Poll handler to handle mailbox messages from VFs */
+void
+otx_cpt_handle_mbox_intr(struct cpt_vf *cptvf);
+
+/*
+ * Checks if VF is able to comminicate with PF
+ * and also gets the CPT number this VF is associated to.
+ */
+int
+otx_cpt_check_pf_ready(struct cpt_vf *cptvf);
+
+/*
+ * Communicate VQs size to PF to program CPT(0)_PF_Q(0-15)_CTL of the VF.
+ * Must be ACKed.
+ */
+int
+otx_cpt_send_vq_size_msg(struct cpt_vf *cptvf);
+
+/*
+ * Communicate VF group required to PF and get the VQ binded to that group
+ */
+int
+otx_cpt_send_vf_grp_msg(struct cpt_vf *cptvf, uint32_t group);
+
+/*
+ * Communicate to PF that VF is UP and running
+ */
+int
+otx_cpt_send_vf_up(struct cpt_vf *cptvf);
+
+/*
+ * Communicate to PF that VF is DOWN and running
+ */
+int
+otx_cpt_send_vf_down(struct cpt_vf *cptvf);
+
+#endif /* _OTX_CRYPTODEV_MBOX_H_ */
-- 
2.7.4