From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id ED717A00C2; Wed, 4 Jan 2023 08:06:04 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D269740A82; Wed, 4 Jan 2023 08:06:04 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 0938440697 for ; Wed, 4 Jan 2023 08:06:02 +0100 (CET) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 30457f6h026448 for ; Tue, 3 Jan 2023 23:06:02 -0800 Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2177.outbound.protection.outlook.com [104.47.56.177]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3mtnftjr4n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 03 Jan 2023 23:06:01 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SvcGb1EUXH7wGSSb8fpdrM38azswzaLz4XLNA+PWeGhhn7wKu0VH8ym8W4Q4dbyKi0MRucNrKUbds/w/1LBnPLjYkawsr8JPY/88TlG8u9nAYT0UIGkCIYeBzfWpabqx1oCBDbffg4/s1SZRp2yxQIXBJrLM2FRwia2yjVo6FfevZlLUwAJ8saDvcLCfLC9gjwiJ+IBMJip84AG0PefZpwWqvAZLFzWeLt2POjx1F/ycGUeWSSMsG/ld6KTJUdo8gyRcUVnl0o0Y/hqZlT84brX/0qFpkEPtWxmm51QDe/0QvlI0kJwX0m8bsncO9fPCjvuyER7P9Gw4Eimpb3wx8Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=07CIYiAbIhqnZyO4LXPZGIlGkk4ozK9EaeXYsfP0yAU=; b=M+IBfNWlBE4m8xa0MsKgQxf1dThTE4emJuSVXIcqPmrNph28AidVnXAY9cWBflM/WfpQfLIK5LjHt6kEHs2NSp1p4fdamY4Z1bp8x5MTeMHnucOlKIe1amd24WuaOMgAFDqsHRYO4+jUNT2qozT0KTZMltigSitwfJrkxSuvfnZ0DhkHruuRTdEu8ZJkLq2E+vNjOqUfE88z3OjeywZmKi7nw539rjW1mXfQhTJspoELD0yoimSuI24FnRjVNZRTTlWSCqa81piSgLktgvnP0Ij2FBN3WQS7O1Uh3IjZ4Ajd8/E51MTpJOaHzG9dgn5Kt5YffyGRhiTotgErwl4jTA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=07CIYiAbIhqnZyO4LXPZGIlGkk4ozK9EaeXYsfP0yAU=; b=rBo79YZX+Gl0ThaJaDzZQ2AQ47lufS8fyFBOa5xSjTQAnQEiZdkwRiUd5ykydON08SCjTX8bOQ244xIU+EOp6KOQIzpcQAsYb3NfwXbw+M3Gd6oFwKh6D5nUElSbA7VfCIiSipl9NarmnQT26THU7IB+w1p5hfqYPFGsXwN9zms= Received: from MW2PR18MB2171.namprd18.prod.outlook.com (2603:10b6:907:7::17) by BY3PR18MB4756.namprd18.prod.outlook.com (2603:10b6:a03:3cb::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Wed, 4 Jan 2023 07:05:52 +0000 Received: from MW2PR18MB2171.namprd18.prod.outlook.com ([fe80::d393:6f1a:b02c:d7b7]) by MW2PR18MB2171.namprd18.prod.outlook.com ([fe80::d393:6f1a:b02c:d7b7%7]) with mapi id 15.20.5944.019; Wed, 4 Jan 2023 07:05:52 +0000 From: Nithin Kumar Dabilpuram To: Rakesh Kudurumalla , Kiran Kumar Kokkilagadda , Sunil Kumar Kori , Satha Koteswara Rao Kottidi CC: "dev@dpdk.org" , Jerin Jacob Kollanukkaran , Rakesh Kudurumalla Subject: RE: [PATCH v2 1/1] common/cnxk: add mbox locking Thread-Topic: [PATCH v2 1/1] common/cnxk: add mbox locking Thread-Index: AQHZIAnY0ObKT1wXq0GgtXoZG06a166N1Wcg Date: Wed, 4 Jan 2023 07:05:52 +0000 Message-ID: References: <20221223112632.1281139-1-rkudurumalla@marvell.com> <20230104065713.1174742-1-rkudurumalla@marvell.com> In-Reply-To: <20230104065713.1174742-1-rkudurumalla@marvell.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-dg-rorf: true x-dg-ref: =?us-ascii?Q?PG1ldGE+PGF0IG5tPSJib2R5LnR4dCIgcD0iYzpcdXNlcnNcbmRhYmlscHVy?= =?us-ascii?Q?YW1cYXBwZGF0YVxyb2FtaW5nXDA5ZDg0OWI2LTMyZDMtNGE0MC04NWVlLTZi?= =?us-ascii?Q?ODRiYTI5ZTM1Ylxtc2dzXG1zZy0zNWZjYmRkZC04YmZlLTExZWQtYWYxMS04?= =?us-ascii?Q?YzE2NDU4ZGVjZTFcYW1lLXRlc3RcMzVmY2JkZGYtOGJmZS0xMWVkLWFmMTEt?= =?us-ascii?Q?OGMxNjQ1OGRlY2UxYm9keS50eHQiIHN6PSIyMTMxMjkiIHQ9IjEzMzE3Mjg5?= =?us-ascii?Q?NTQ3MjM0NzE3NiIgaD0iUGRoS3BKN0ZpK1NsK093QmxIYjd4YitXbVRRPSIg?= =?us-ascii?Q?aWQ9IiIgYmw9IjAiIGJvPSIxIiBjaT0iY0FBQUFFUkhVMVJTUlVGTkNnVUFB?= =?us-ascii?Q?TmdIQUFBbzZGYjRDaURaQVJla2hIZ1NvZzdBRjZTRWVCS2lEc0FNQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUhBQUFBQm9Cd0FBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUVBQVFBQkFBQUEzVHpGQUFBQUFBQUFBQUFBQUFBQUFKNEFBQUJo?= =?us-ascii?Q?QUdRQVpBQnlBR1VBY3dCekFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBRUFBQUFBQUFBQUFnQUFBQUFBbmdBQUFHTUFkUUJ6QUhRQWJ3QnRB?= =?us-ascii?Q?RjhBY0FCbEFISUFjd0J2QUc0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFB?= =?us-ascii?Q?QUFDQUFBQUFBQ2VBQUFBWXdCMUFITUFkQUJ2QUcwQVh3QndBR2dBYndCdUFH?= =?us-ascii?Q?VUFiZ0IxQUcwQVlnQmxBSElBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQkFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBSUFBQUFBQUo0QUFB?= =?us-ascii?Q?QmpBSFVBY3dCMEFHOEFiUUJmQUhNQWN3QnVBRjhBWkFCaEFITUFhQUJmQUhZ?= =?us-ascii?Q?QU1BQXlBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= x-dg-refone: =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQWdBQUFBQUFu?= =?us-ascii?Q?Z0FBQUdNQWRRQnpBSFFBYndCdEFGOEFjd0J6QUc0QVh3QnJBR1VBZVFCM0FH?= =?us-ascii?Q?OEFjZ0JrQUhNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBUUFBQUFBQUFBQUNBQUFBQUFDZUFBQUFZd0IxQUhNQWRB?= =?us-ascii?Q?QnZBRzBBWHdCekFITUFiZ0JmQUc0QWJ3QmtBR1VBYkFCcEFHMEFhUUIwQUdV?= =?us-ascii?Q?QWNnQmZBSFlBTUFBeUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFB?= =?us-ascii?Q?QUFBQUFBQUFJQUFBQUFBSjRBQUFCakFIVUFjd0IwQUc4QWJRQmZBSE1BY3dC?= =?us-ascii?Q?dUFGOEFjd0J3QUdFQVl3QmxBRjhBZGdBd0FESUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBZ0FBQUFB?= =?us-ascii?Q?QW5nQUFBR1FBYkFCd0FGOEFjd0JyQUhrQWNBQmxBRjhBWXdCb0FHRUFkQUJm?= =?us-ascii?Q?QUcwQVpRQnpBSE1BWVFCbkFHVUFYd0IyQURBQU1nQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQ0FBQUFBQUNlQUFBQVpBQnNBSEFB?= =?us-ascii?Q?WHdCekFHd0FZUUJqQUdzQVh3QmpBR2dBWVFCMEFGOEFiUUJsQUhNQWN3QmhB?= =?us-ascii?Q?R2NBWlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= x-dg-reftwo: QUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUlBQUFBQUFKNEFBQUJrQUd3QWNBQmZBSFFBWlFCaEFHMEFjd0JmQUc4QWJnQmxBR1FBY2dCcEFIWUFaUUJmQUdZQWFRQnNBR1VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFnQUFBQUFBbmdBQUFHVUFiUUJoQUdrQWJBQmZBR0VBWkFCa0FISUFaUUJ6QUhNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDUUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFDQUFBQUFBQ2VBQUFBYlFCaEFISUFkZ0JsQUd3QWJBQmZBSFFBWlFCeUFHMEFhUUJ1QUhVQWN3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBSUFBQUFBQUE9PSIvPjwvbWV0YT4= x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MW2PR18MB2171:EE_|BY3PR18MB4756:EE_ x-ms-office365-filtering-correlation-id: d5cbd45e-2fd6-45ff-98d5-08daee221df0 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: esJkcrzJU5UNlfSZyFRU4EtKRn12jG9sYxROi6cDj77W8xnmVZdFKT+28y8V6O0pCzSHN42BE/AsX+WuCV4/9yX6HWXeMPDnCs25t+b8NFcG/VTSFbCTVDHkrYqI8xFFhnHBUaT/8RpgOyWb4byDPMfeq8op7164wPMU8mnTfmoPWBTzCkTsmY2jIrCKedxMMthrz0AnA6SGqQ/WQpHgFyqDOweO339arMucBbQRhZulE4gvH918inN24Rzb0c7TkH5w3711YHmNaC4wS7jZC8IOom9EpJhTqx0YpDGAp5OYuoo2lUyNDo0Kk47u8MOJRdo84HFJrnEpG/OhgYjnxmAamM8wpR4p+/Q8JIFuMdXNoV3Yc0codMXD9JMsXZY+hACG/bPY6QYQB9Ul3oljkPAvYgwllejyFlvPBgSD6kfhBmu17KmAXJtiGtCjmZgBqO72JvWms2OPnbch0PC+AlQOVxLo5YEVYNwsKmTUZntbz7LzURwkSbRo8qeqqn1w1kmWecMEXu5yCU0nUREOBh5nsY3jbzHFp/lxCRinQuhQSsRz2SvNtAaviyMv8LAd58vrgy1sBG4ZRGB7qpveGpcUYvy1fML9Zq6uUvBeg45sS0ZQGPlCkQL9sA3SjX2S1fDnmMtcED7J6JtiDjZuczivaxPoMdq2/Yiblk3cYWsPv1Yy4YZHV/bJduTrG2gZbRVDfZ+nHXpKRddAJVDuxanehD/pU4gtHkO36UxC7/I= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MW2PR18MB2171.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(4636009)(396003)(376002)(136003)(39860400002)(346002)(366004)(451199015)(53546011)(6506007)(478600001)(107886003)(71200400001)(110136005)(55016003)(38070700005)(38100700002)(122000001)(9686003)(186003)(26005)(86362001)(83380400001)(33656002)(76116006)(5660300002)(7696005)(30864003)(52536014)(8676002)(64756008)(66476007)(66556008)(4326008)(66946007)(66446008)(41300700001)(8936002)(54906003)(2906002)(316002)(6636002)(579004)(559001)(309714004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?FZ2DGk9zHS58ebh0vtLLyoAlffwg+Pu7/D2JCPepolrZ9F/eIXzy7GmDcShn?= =?us-ascii?Q?UNoo03cG+t+dFtqyDDHbTHdqzRXJtLcIVYhzykhUrIYG8PHeq3nOqJNSIuTE?= =?us-ascii?Q?wLg/nZ9NLaWeTYvBHcscUPDOfuohmNn87u+XrsQfv2u2Q++1C1P8zO0VUqKs?= =?us-ascii?Q?uXUMqcwQdJrvXEOBkKpKSY91W18AzUgVshmATRQ90VyIfuUPRFKbSHyGjXY1?= =?us-ascii?Q?X6j8LfrlF7y/mZn9Ug4VRlh8CiEr+lDD3yWWVSrcaraq4dRjG8+p63zqtY77?= =?us-ascii?Q?MyHt/E1l47B8aBgBPqRQLM8zzKYBxIENP0nU7bQ6S2WzM3q182tE5a3kBe+a?= =?us-ascii?Q?+SlsRSY95UkSEZJVe44ZHoEFQF/YscdZ/+b4TbGyVH0e137fvp+hKz8/acGA?= =?us-ascii?Q?7QRjyCRHmVnbVRhCrCKLg1RYwqn/lWMRyHX6O+o/8RfowOvSDwWsA+QPvBZ3?= =?us-ascii?Q?XmDpCjI0UcGJLYk3hXVLbmFt/PieubQ+TTtPQyW8By0hUpiIc//W2pjcKrA6?= =?us-ascii?Q?896I5oZidPHvYQSe81zuxoIjlSMoBWdX3r1R9XDLH6xgo9viactmg6XgvuxI?= =?us-ascii?Q?Nb5Z62fcg2LpL1XxQLTX+Q/+vzVrPYazTeom1dWmUl9CHtl8yK+/KVvy8eyo?= =?us-ascii?Q?bdmt9W1XVF20lWlszsDkN92B5SgNAS798kTfd07xjXLf1hkV2rhdN7P/UhM2?= =?us-ascii?Q?AFCVIQcLsm8zpBf5E2NIUiCK5/gk+9X1kSO/1EEqXM5pgNs+owKqEqy3D0Km?= =?us-ascii?Q?2WFCOH80kp0avEdNITtSw7vPeFDLx+LLGwcqn4GDwygdIuZUuvu2wPdwWBEX?= =?us-ascii?Q?27lFEd31fjUcLieQHxd4pM1eqoLznwvq7L20ZuW9csPaT9u5tHEpTN5LSdao?= =?us-ascii?Q?Qe1IwVXR5/ZnuKTjPg2uOJ5GGSqv1x8NbeE5czok88MA7ZopZu+hL7OxxW2T?= =?us-ascii?Q?9Bb+ktGXumG5RlRELQM6Oc3Twa4kvV8HbDEFUfYWRIkBcOa5vI6ylFueEOT8?= =?us-ascii?Q?uhRTf332PX0IUwTiOKsY1jZMajqgF/ls0Jzi95dygYyu2ULTswIpI8l6+reT?= =?us-ascii?Q?7smcSc/9gno0KhgaL8yOsqo5wA6vTE+DapEEspZzCEkRQtuuN1FPWKeGgeWl?= =?us-ascii?Q?LDNRB83h0s5k420x6jJg8pswR9lzxtxIUeCBFr2WjVIl3Wiy6K7WWIkj/lv+?= =?us-ascii?Q?859ulvrOee1QPaOrhd7nFkC+miA2/piPQ+PG+vpZSx7yjIPgfe/Y9Ikk+KE9?= =?us-ascii?Q?hhZqUvQAJWjK6Ij5eHz/r3m84umbJxsq1g5diB//Gqmzv6YtxIpnkjEtpyiM?= =?us-ascii?Q?j1jrpt8PVR1SHpKHD0XLHJS7wcZF3115wCG4wfX0l3zPU3JAtqKpKcjZ3n6i?= =?us-ascii?Q?BRAG6hEoZglRGU/Dr2niMWQb9qyRHmhqZ2NLBhYEkI7Fo4xu43jIzBoQqXBY?= =?us-ascii?Q?JmDe6LCwf8DtGQ73x5yifOGtHm6p4CBrx3/WkJOFj/+ymHD7eitHZAlkNiUL?= =?us-ascii?Q?ZNsS+U8GdnQGOHcun7EvnpU/Mr+9Xb/w1NY1KL0azjN58/NmzgkJBjjsbEOz?= =?us-ascii?Q?QYUUn1DqJEw16Njgn6NZPPSUidtM8KNepU1xtKBf?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: marvell.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW2PR18MB2171.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d5cbd45e-2fd6-45ff-98d5-08daee221df0 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Jan 2023 07:05:52.4483 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: gRt1+R1xgqyydMoNqFjwZxJPEQI1MErK95Ehzr035ucNhOkwU/+pxtc/eTgsdyQfhRtFDscWVD7bt4895SgT/A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY3PR18MB4756 X-Proofpoint-GUID: xjfoXzbvXqOSqLebgnUC3G45flj5oDm0 X-Proofpoint-ORIG-GUID: xjfoXzbvXqOSqLebgnUC3G45flj5oDm0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.923,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2023-01-04_04,2023-01-03_02,2022-06-22_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org > -----Original Message----- > From: Rakesh Kudurumalla > Sent: Wednesday, January 4, 2023 12:27 PM > To: Nithin Kumar Dabilpuram ; Kiran Kumar Kokkil= agadda > ; Sunil Kumar Kori ; Satha Ko= teswara Rao > Kottidi > Cc: dev@dpdk.org; Jerin Jacob Kollanukkaran ; Rakesh = Kudurumalla > > Subject: [PATCH v2 1/1] common/cnxk: add mbox locking >=20 > this patch adds mbox locking using spinlock > to have different subsystems sharing same mbox >=20 > Signed-off-by: Rakesh Kudurumalla > --- > v2: Remove compiler warnings > drivers/common/cnxk/cnxk_telemetry_npa.c | 24 +- > drivers/common/cnxk/roc_cpt.c | 195 +++++++++++----- > drivers/common/cnxk/roc_cpt_debug.c | 40 +++- > drivers/common/cnxk/roc_dev.c | 19 +- > drivers/common/cnxk/roc_idev.c | 1 + > drivers/common/cnxk/roc_idev_priv.h | 1 + > drivers/common/cnxk/roc_mbox.c | 11 +- > drivers/common/cnxk/roc_mbox_priv.h | 15 ++ > drivers/common/cnxk/roc_nix.c | 78 +++++-- > drivers/common/cnxk/roc_nix_bpf.c | 278 +++++++++++++++-------- > drivers/common/cnxk/roc_nix_debug.c | 40 ++-- > drivers/common/cnxk/roc_nix_fc.c | 137 ++++++----- > drivers/common/cnxk/roc_nix_inl.c | 16 +- > drivers/common/cnxk/roc_nix_inl_dev.c | 83 +++++-- > drivers/common/cnxk/roc_nix_mac.c | 202 ++++++++++------ > drivers/common/cnxk/roc_nix_mcast.c | 57 +++-- > drivers/common/cnxk/roc_nix_npc.c | 69 ++++-- > drivers/common/cnxk/roc_nix_ops.c | 185 +++++++++------ > drivers/common/cnxk/roc_nix_ptp.c | 77 ++++--- > drivers/common/cnxk/roc_nix_queue.c | 237 +++++++++++++------ > drivers/common/cnxk/roc_nix_rss.c | 64 ++++-- > drivers/common/cnxk/roc_nix_stats.c | 77 +++++-- > drivers/common/cnxk/roc_nix_tm.c | 103 ++++++--- > drivers/common/cnxk/roc_nix_tm_mark.c | 26 ++- > drivers/common/cnxk/roc_nix_tm_ops.c | 107 ++++++--- > drivers/common/cnxk/roc_nix_tm_utils.c | 13 +- > drivers/common/cnxk/roc_nix_vlan.c | 103 ++++++--- > drivers/common/cnxk/roc_npa.c | 215 +++++++++++++----- > drivers/common/cnxk/roc_npa.h | 3 + > drivers/common/cnxk/roc_npa_debug.c | 28 ++- > drivers/common/cnxk/roc_npc.c | 66 ++++-- > drivers/common/cnxk/roc_npc_mcam.c | 116 ++++++---- > drivers/common/cnxk/roc_npc_mcam_dump.c | 5 +- > drivers/common/cnxk/roc_npc_utils.c | 46 ++-- > drivers/common/cnxk/roc_sso.c | 186 ++++++++++----- > drivers/common/cnxk/roc_tim.c | 82 ++++--- > drivers/common/cnxk/version.map | 2 + > 37 files changed, 2024 insertions(+), 983 deletions(-) >=20 > diff --git a/drivers/common/cnxk/cnxk_telemetry_npa.c > b/drivers/common/cnxk/cnxk_telemetry_npa.c > index b6ae108b10..4287eaf968 100644 > --- a/drivers/common/cnxk/cnxk_telemetry_npa.c > +++ b/drivers/common/cnxk/cnxk_telemetry_npa.c > @@ -62,10 +62,11 @@ cnxk_tel_npa_aura(int aura_id, struct plt_tel_data *d= ) > if (plt_bitmap_get(lf->npa_bmp, aura_id)) > return -1; >=20 > - req =3D mbox_alloc_msg_npa_aq_enq(lf->mbox); > + req =3D mbox_alloc_msg_npa_aq_enq(mbox_get(lf->mbox)); > if (!req) { > plt_err("Failed to alloc aq enq for npa"); > - return -1; > + rc =3D -1; > + goto exit; > } >=20 > req->aura_id =3D aura_id; > @@ -75,7 +76,7 @@ cnxk_tel_npa_aura(int aura_id, struct plt_tel_data *d) > rc =3D mbox_process_msg(lf->mbox, (void *)&rsp); > if (rc) { > plt_err("Failed to get pool(%d) context", aura_id); > - return rc; > + goto exit; > } >=20 > aura =3D &rsp->aura; > @@ -110,7 +111,10 @@ cnxk_tel_npa_aura(int aura_id, struct plt_tel_data *= d) > CNXK_TEL_DICT_INT(d, aura, err_qint_idx, w5_); > CNXK_TEL_DICT_U64(d, aura, thresh, w6_); >=20 > - return 0; > + rc =3D 0; > +exit: > + mbox_put(lf->mbox); > + return rc; > } >=20 > static int > @@ -129,10 +133,11 @@ cnxk_tel_npa_pool(int pool_id, struct plt_tel_data = *d) > if (plt_bitmap_get(lf->npa_bmp, pool_id)) > return -1; >=20 > - req =3D mbox_alloc_msg_npa_aq_enq(lf->mbox); > + req =3D mbox_alloc_msg_npa_aq_enq(mbox_get(lf->mbox)); > if (!req) { > plt_err("Failed to alloc aq enq for npa"); > - return -1; > + rc =3D -1; > + goto exit; > } >=20 > req->aura_id =3D pool_id; > @@ -142,7 +147,7 @@ cnxk_tel_npa_pool(int pool_id, struct plt_tel_data *d= ) > rc =3D mbox_process_msg(lf->mbox, (void *)&rsp); > if (rc) { > plt_err("Failed to get pool(%d) context", pool_id); > - return rc; > + goto exit; > } >=20 > pool =3D &rsp->pool; > @@ -176,7 +181,10 @@ cnxk_tel_npa_pool(int pool_id, struct plt_tel_data *= d) > CNXK_TEL_DICT_INT(d, pool, thresh_qint_idx, w8_); > CNXK_TEL_DICT_INT(d, pool, err_qint_idx, w8_); >=20 > - return 0; > + rc =3D 0; > +exit: > + mbox_put(lf->mbox); > + return rc; > } >=20 > static int > diff --git a/drivers/common/cnxk/roc_cpt.c b/drivers/common/cnxk/roc_cpt.= c > index fb97ec89b2..af337223d5 100644 > --- a/drivers/common/cnxk/roc_cpt.c > +++ b/drivers/common/cnxk/roc_cpt.c > @@ -225,11 +225,14 @@ cpt_lf_outb_cfg(struct dev *dev, uint16_t sso_pf_fu= nc, uint16_t > nix_pf_func, > uint8_t lf_id, bool ena) > { > struct cpt_inline_ipsec_cfg_msg *req; > - struct mbox *mbox =3D dev->mbox; > + struct mbox *mbox =3D mbox_get(dev->mbox); > + int rc; >=20 > req =3D mbox_alloc_msg_cpt_inline_ipsec_cfg(mbox); > - if (req =3D=3D NULL) > - return -ENOSPC; > + if (req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > req->dir =3D CPT_INLINE_OUTBOUND; > req->slot =3D lf_id; > @@ -241,7 +244,10 @@ cpt_lf_outb_cfg(struct dev *dev, uint16_t sso_pf_fun= c, uint16_t > nix_pf_func, > req->enable =3D 0; > } >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -266,13 +272,20 @@ roc_cpt_inline_ipsec_inb_cfg_read(struct roc_cpt *r= oc_cpt, > { > struct cpt *cpt =3D roc_cpt_to_cpt_priv(roc_cpt); > struct dev *dev =3D &cpt->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct msg_req *req; > + int rc; >=20 > - req =3D mbox_alloc_msg_nix_read_inline_ipsec_cfg(dev->mbox); > - if (req =3D=3D NULL) > - return -EIO; > + req =3D mbox_alloc_msg_nix_read_inline_ipsec_cfg(mbox); > + if (req =3D=3D NULL) { > + rc =3D -EIO; > + goto exit; > + } >=20 > - return mbox_process_msg(dev->mbox, (void *)&inb_cfg); > + rc =3D mbox_process_msg(mbox, (void *)&inb_cfg); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -282,19 +295,25 @@ roc_cpt_inline_ipsec_inb_cfg(struct roc_cpt *roc_cp= t, uint16_t > param1, > struct cpt *cpt =3D roc_cpt_to_cpt_priv(roc_cpt); > struct cpt_rx_inline_lf_cfg_msg *req; > struct mbox *mbox; > + int rc; >=20 > - mbox =3D cpt->dev.mbox; > + mbox =3D mbox_get(cpt->dev.mbox); >=20 > req =3D mbox_alloc_msg_cpt_rx_inline_lf_cfg(mbox); > - if (req =3D=3D NULL) > - return -ENOSPC; > + if (req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > req->sso_pf_func =3D idev_sso_pffunc_get(); > req->param1 =3D param1; > req->param2 =3D param2; > req->opcode =3D opcode; >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -303,10 +322,14 @@ roc_cpt_rxc_time_cfg(struct roc_cpt *roc_cpt, struc= t > roc_cpt_rxc_time_cfg *cfg) > struct cpt *cpt =3D roc_cpt_to_cpt_priv(roc_cpt); > struct cpt_rxc_time_cfg_req *req; > struct dev *dev =3D &cpt->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > + int rc; >=20 > - req =3D mbox_alloc_msg_cpt_rxc_time_cfg(dev->mbox); > - if (req =3D=3D NULL) > - return -ENOSPC; > + req =3D mbox_alloc_msg_cpt_rxc_time_cfg(mbox); > + if (req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > req->blkaddr =3D 0; >=20 > @@ -321,18 +344,22 @@ roc_cpt_rxc_time_cfg(struct roc_cpt *roc_cpt, struc= t > roc_cpt_rxc_time_cfg *cfg) > req->active_limit =3D cfg->active_limit; > req->active_thres =3D cfg->active_thres; >=20 > - return mbox_process(dev->mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > cpt_get_msix_offset(struct dev *dev, struct msix_offset_rsp **msix_rsp) > { > - struct mbox *mbox =3D dev->mbox; > + struct mbox *mbox =3D mbox_get(dev->mbox); > int rc; >=20 > /* Get MSIX vector offsets */ > mbox_alloc_msg_msix_offset(mbox); > rc =3D mbox_process_msg(mbox, (void *)msix_rsp); > + mbox_put(mbox); >=20 > return rc; > } > @@ -340,55 +367,74 @@ cpt_get_msix_offset(struct dev *dev, struct msix_of= fset_rsp > **msix_rsp) > int > cpt_lfs_attach(struct dev *dev, uint8_t blkaddr, bool modify, uint16_t n= b_lf) > { > - struct mbox *mbox =3D dev->mbox; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct rsrc_attach_req *req; > + int rc; >=20 > - if (blkaddr !=3D RVU_BLOCK_ADDR_CPT0 && blkaddr !=3D RVU_BLOCK_ADDR_CPT= 1) > - return -EINVAL; > + if (blkaddr !=3D RVU_BLOCK_ADDR_CPT0 && blkaddr !=3D RVU_BLOCK_ADDR_CPT= 1) { > + rc =3D -EINVAL; > + goto exit; > + } >=20 > /* Attach CPT(lf) */ > req =3D mbox_alloc_msg_attach_resources(mbox); > - if (req =3D=3D NULL) > - return -ENOSPC; > + if (req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > req->cptlfs =3D nb_lf; > req->modify =3D modify; > req->cpt_blkaddr =3D blkaddr; >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > cpt_lfs_detach(struct dev *dev) > { > - struct mbox *mbox =3D dev->mbox; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct rsrc_detach_req *req; > + int rc; >=20 > req =3D mbox_alloc_msg_detach_resources(mbox); > - if (req =3D=3D NULL) > - return -ENOSPC; > + if (req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > req->cptlfs =3D 1; > req->partial =3D 1; >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > static int > cpt_available_lfs_get(struct dev *dev, uint16_t *nb_lf) > { > - struct mbox *mbox =3D dev->mbox; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct free_rsrcs_rsp *rsp; > int rc; >=20 > mbox_alloc_msg_free_rsrc_cnt(mbox); >=20 > rc =3D mbox_process_msg(mbox, (void *)&rsp); > - if (rc) > - return -EIO; > + if (rc) { > + rc =3D -EIO; > + goto exit; > + } >=20 > *nb_lf =3D PLT_MAX((uint16_t)rsp->cpt, (uint16_t)rsp->cpt1); > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -396,14 +442,19 @@ cpt_lfs_alloc(struct dev *dev, uint8_t eng_grpmsk, = uint8_t > blkaddr, > bool inl_dev_sso) > { > struct cpt_lf_alloc_req_msg *req; > - struct mbox *mbox =3D dev->mbox; > + struct mbox *mbox =3D mbox_get(dev->mbox); > + int rc; >=20 > - if (blkaddr !=3D RVU_BLOCK_ADDR_CPT0 && blkaddr !=3D RVU_BLOCK_ADDR_CPT= 1) > - return -EINVAL; > + if (blkaddr !=3D RVU_BLOCK_ADDR_CPT0 && blkaddr !=3D RVU_BLOCK_ADDR_CPT= 1) { > + rc =3D -EINVAL; > + goto exit; > + } >=20 > req =3D mbox_alloc_msg_cpt_lf_alloc(mbox); > - if (!req) > - return -ENOSPC; > + if (!req) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > req->nix_pf_func =3D 0; > if (inl_dev_sso && nix_inl_dev_pffunc_get()) > @@ -413,34 +464,49 @@ cpt_lfs_alloc(struct dev *dev, uint8_t eng_grpmsk, = uint8_t > blkaddr, > req->eng_grpmsk =3D eng_grpmsk; > req->blkaddr =3D blkaddr; >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > cpt_lfs_free(struct dev *dev) > { > - mbox_alloc_msg_cpt_lf_free(dev->mbox); > + struct mbox *mbox =3D mbox_get(dev->mbox); > + int rc; >=20 > - return mbox_process(dev->mbox); > + mbox_alloc_msg_cpt_lf_free(mbox); > + > + rc =3D mbox_process(mbox); > + mbox_put(mbox); > + return rc; > } >=20 > static int > cpt_hardware_caps_get(struct dev *dev, struct roc_cpt *roc_cpt) > { > struct cpt_caps_rsp_msg *rsp; > + struct mbox *mbox =3D mbox_get(dev->mbox); > int ret; >=20 > - mbox_alloc_msg_cpt_caps_get(dev->mbox); > + mbox_alloc_msg_cpt_caps_get(mbox); >=20 > - ret =3D mbox_process_msg(dev->mbox, (void *)&rsp); > - if (ret) > - return -EIO; > + ret =3D mbox_process_msg(mbox, (void *)&rsp); > + if (ret) { > + ret =3D -EIO; > + goto exit; > + } >=20 > roc_cpt->cpt_revision =3D rsp->cpt_revision; > mbox_memcpy(roc_cpt->hw_caps, rsp->eng_caps, > sizeof(union cpt_eng_caps) * CPT_MAX_ENG_TYPES); >=20 > - return 0; > + ret =3D 0; > + > +exit: > + mbox_put(mbox); > + return ret; > } >=20 > static uint32_t > @@ -733,14 +799,21 @@ cpt_lf_reset(struct roc_cpt_lf *lf) > { > struct cpt_lf_rst_req *req; > struct dev *dev =3D lf->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > + int rc; >=20 > - req =3D mbox_alloc_msg_cpt_lf_reset(dev->mbox); > - if (req =3D=3D NULL) > - return -EIO; > + req =3D mbox_alloc_msg_cpt_lf_reset(mbox); > + if (req =3D=3D NULL) { > + rc =3D -EIO; > + goto exit; > + } >=20 > req->slot =3D lf->lf_id; >=20 > - return mbox_process(dev->mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > static void > @@ -878,11 +951,14 @@ roc_cpt_eng_grp_add(struct roc_cpt *roc_cpt, enum > cpt_eng_type eng_type) > struct dev *dev =3D &cpt->dev; > struct cpt_eng_grp_req *req; > struct cpt_eng_grp_rsp *rsp; > + struct mbox *mbox =3D mbox_get(dev->mbox); > int ret; >=20 > - req =3D mbox_alloc_msg_cpt_eng_grp_get(dev->mbox); > - if (req =3D=3D NULL) > - return -EIO; > + req =3D mbox_alloc_msg_cpt_eng_grp_get(mbox); > + if (req =3D=3D NULL) { > + ret =3D -EIO; > + goto exit; > + } >=20 > switch (eng_type) { > case CPT_ENG_TYPE_AE: > @@ -890,22 +966,29 @@ roc_cpt_eng_grp_add(struct roc_cpt *roc_cpt, enum > cpt_eng_type eng_type) > case CPT_ENG_TYPE_IE: > break; > default: > - return -EINVAL; > + ret =3D -EINVAL; > + goto exit; > } >=20 > req->eng_type =3D eng_type; > ret =3D mbox_process_msg(dev->mbox, (void *)&rsp); > - if (ret) > - return -EIO; > + if (ret) { > + ret =3D -EIO; > + goto exit; > + } >=20 > if (rsp->eng_grp_num > 8) { > plt_err("Invalid CPT engine group"); > - return -ENOTSUP; > + ret =3D -ENOTSUP; > + goto exit; > } >=20 > roc_cpt->eng_grp[eng_type] =3D rsp->eng_grp_num; >=20 > - return rsp->eng_grp_num; > + ret =3D rsp->eng_grp_num; > +exit: > + mbox_put(mbox); > + return ret; > } >=20 > void > diff --git a/drivers/common/cnxk/roc_cpt_debug.c > b/drivers/common/cnxk/roc_cpt_debug.c > index 5602e536af..dce3638507 100644 > --- a/drivers/common/cnxk/roc_cpt_debug.c > +++ b/drivers/common/cnxk/roc_cpt_debug.c > @@ -71,11 +71,14 @@ cpt_af_reg_read(struct roc_cpt *roc_cpt, uint64_t reg= , uint64_t > *val) > struct cpt *cpt =3D roc_cpt_to_cpt_priv(roc_cpt); > struct cpt_rd_wr_reg_msg *msg; > struct dev *dev =3D &cpt->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > int ret; >=20 > - msg =3D mbox_alloc_msg_cpt_rd_wr_register(dev->mbox); > - if (msg =3D=3D NULL) > - return -EIO; > + msg =3D mbox_alloc_msg_cpt_rd_wr_register(mbox); > + if (msg =3D=3D NULL) { > + ret =3D -EIO; > + goto exit; > + } >=20 > msg->hdr.pcifunc =3D dev->pf_func; >=20 > @@ -84,12 +87,17 @@ cpt_af_reg_read(struct roc_cpt *roc_cpt, uint64_t reg= , uint64_t > *val) > msg->ret_val =3D val; >=20 > ret =3D mbox_process_msg(dev->mbox, (void *)&msg); > - if (ret) > - return -EIO; > + if (ret) { > + ret =3D -EIO; > + goto exit; > + } >=20 > *val =3D msg->val; >=20 > - return 0; > + ret =3D 0; > +exit: > + mbox_put(mbox); > + return ret; > } >=20 > static int > @@ -99,16 +107,21 @@ cpt_sts_print(struct roc_cpt *roc_cpt) > struct dev *dev =3D &cpt->dev; > struct cpt_sts_req *req; > struct cpt_sts_rsp *rsp; > + struct mbox *mbox =3D mbox_get(dev->mbox); > int ret; >=20 > - req =3D mbox_alloc_msg_cpt_sts_get(dev->mbox); > - if (req =3D=3D NULL) > - return -EIO; > + req =3D mbox_alloc_msg_cpt_sts_get(mbox); > + if (req =3D=3D NULL) { > + ret =3D -EIO; > + goto exit; > + } >=20 > req->blkaddr =3D 0; > ret =3D mbox_process_msg(dev->mbox, (void *)&rsp); > - if (ret) > - return -EIO; > + if (ret) { > + ret =3D -EIO; > + goto exit; > + } >=20 > plt_print(" %s:\t0x%016" PRIx64, "inst_req_pc", rsp->inst_req_pc); > plt_print(" %s:\t0x%016" PRIx64, "inst_lat_pc", rsp->inst_lat_pc); > @@ -161,7 +174,10 @@ cpt_sts_print(struct roc_cpt *roc_cpt) > plt_print(" %s:\t\t0x%016" PRIx64, "cptclk_cnt", rsp->cptclk_cnt); > plt_print(" %s:\t\t0x%016" PRIx64, "diag", rsp->diag); >=20 > - return 0; > + ret =3D 0; > +exit: > + mbox_put(mbox); > + return ret; > } >=20 > int > diff --git a/drivers/common/cnxk/roc_dev.c b/drivers/common/cnxk/roc_dev.= c > index 59128a3552..32a6d2ca0c 100644 > --- a/drivers/common/cnxk/roc_dev.c > +++ b/drivers/common/cnxk/roc_dev.c > @@ -135,8 +135,6 @@ af_pf_wait_msg(struct dev *dev, uint16_t vf, int num_= msg) > /* Enable interrupts */ > plt_write64(~0ull, dev->bar2 + RVU_PF_INT_ENA_W1S); >=20 > - plt_spinlock_lock(&mdev->mbox_lock); > - > req_hdr =3D (struct mbox_hdr *)((uintptr_t)mdev->mbase + mbox->rx_start= ); > if (req_hdr->num_msgs !=3D num_msg) > plt_err("Routed messages: %d received: %d", num_msg, > @@ -203,7 +201,6 @@ af_pf_wait_msg(struct dev *dev, uint16_t vf, int num_= msg) >=20 > offset =3D mbox->rx_start + msg->next_msgoff; > } > - plt_spinlock_unlock(&mdev->mbox_lock); >=20 > return req_hdr->num_msgs; > } > @@ -225,6 +222,7 @@ vf_pf_process_msgs(struct dev *dev, uint16_t vf) >=20 > offset =3D mbox->rx_start + PLT_ALIGN(sizeof(*req_hdr), MBOX_MSG_ALIGN)= ; >=20 > + mbox_get(dev->mbox); > for (i =3D 0; i < req_hdr->num_msgs; i++) { > msg =3D (struct mbox_msghdr *)((uintptr_t)mdev->mbase + offset); > size =3D mbox->rx_start + msg->next_msgoff - offset; > @@ -278,6 +276,7 @@ vf_pf_process_msgs(struct dev *dev, uint16_t vf) > af_pf_wait_msg(dev, vf, routed); > mbox_reset(dev->mbox, 0); > } > + mbox_put(dev->mbox); >=20 > /* Send mbox responses to VF */ > if (mdev->num_msgs) { > @@ -1015,10 +1014,13 @@ static int > dev_setup_shared_lmt_region(struct mbox *mbox, bool valid_iova, uint64_t= iova) > { > struct lmtst_tbl_setup_req *req; > + int rc; >=20 > - req =3D mbox_alloc_msg_lmtst_tbl_setup(mbox); > - if (!req) > - return -ENOSPC; > + req =3D mbox_alloc_msg_lmtst_tbl_setup(mbox_get(mbox)); > + if (!req) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > /* This pcifunc is defined with primary pcifunc whose LMT address > * will be shared. If call contains valid IOVA, following pcifunc > @@ -1028,7 +1030,10 @@ dev_setup_shared_lmt_region(struct mbox *mbox, boo= l > valid_iova, uint64_t iova) > req->use_local_lmt_region =3D valid_iova; > req->lmt_iova =3D iova; >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > /* Total no of lines * size of each lmtline */ > diff --git a/drivers/common/cnxk/roc_idev.c b/drivers/common/cnxk/roc_ide= v.c > index 4d2eff93ce..62a4fd8880 100644 > --- a/drivers/common/cnxk/roc_idev.c > +++ b/drivers/common/cnxk/roc_idev.c > @@ -40,6 +40,7 @@ idev_set_defaults(struct idev_cfg *idev) > idev->cpt =3D NULL; > idev->nix_inl_dev =3D NULL; > plt_spinlock_init(&idev->nix_inl_dev_lock); > + plt_spinlock_init(&idev->npa_dev_lock); > __atomic_store_n(&idev->npa_refcnt, 0, __ATOMIC_RELEASE); > } >=20 > diff --git a/drivers/common/cnxk/roc_idev_priv.h b/drivers/common/cnxk/ro= c_idev_priv.h > index 315cc6f52c..b97d2936a2 100644 > --- a/drivers/common/cnxk/roc_idev_priv.h > +++ b/drivers/common/cnxk/roc_idev_priv.h > @@ -33,6 +33,7 @@ struct idev_cfg { > struct nix_inl_dev *nix_inl_dev; > struct idev_nix_inl_cfg inl_cfg; > plt_spinlock_t nix_inl_dev_lock; > + plt_spinlock_t npa_dev_lock; > }; >=20 > /* Generic */ > diff --git a/drivers/common/cnxk/roc_mbox.c b/drivers/common/cnxk/roc_mbo= x.c > index 6f4ee68c5d..7dcd188ca7 100644 > --- a/drivers/common/cnxk/roc_mbox.c > +++ b/drivers/common/cnxk/roc_mbox.c > @@ -50,14 +50,12 @@ mbox_reset(struct mbox *mbox, int devid) > struct mbox_hdr *rx_hdr =3D > (struct mbox_hdr *)((uintptr_t)mdev->mbase + mbox->rx_start); >=20 > - plt_spinlock_lock(&mdev->mbox_lock); > mdev->msg_size =3D 0; > mdev->rsp_size =3D 0; > tx_hdr->msg_size =3D 0; > tx_hdr->num_msgs =3D 0; > rx_hdr->msg_size =3D 0; > rx_hdr->num_msgs =3D 0; > - plt_spinlock_unlock(&mdev->mbox_lock); > } >=20 > int > @@ -167,7 +165,6 @@ mbox_alloc_msg_rsp(struct mbox *mbox, int devid, int = size, int > size_rsp) > struct mbox_dev *mdev =3D &mbox->dev[devid]; > struct mbox_msghdr *msghdr =3D NULL; >=20 > - plt_spinlock_lock(&mdev->mbox_lock); > size =3D PLT_ALIGN(size, MBOX_MSG_ALIGN); > size_rsp =3D PLT_ALIGN(size_rsp, MBOX_MSG_ALIGN); > /* Check if there is space in mailbox */ > @@ -191,7 +188,6 @@ mbox_alloc_msg_rsp(struct mbox *mbox, int devid, int = size, int > size_rsp) > mdev->rsp_size +=3D size_rsp; > msghdr->next_msgoff =3D mdev->msg_size + msgs_offset(); > exit: > - plt_spinlock_unlock(&mdev->mbox_lock); >=20 > return msghdr; > } > @@ -409,11 +405,14 @@ send_ready_msg(struct mbox *mbox, uint16_t *pcifunc= ) > struct ready_msg_rsp *rsp; > int rc; >=20 > - mbox_alloc_msg_ready(mbox); > + mbox_alloc_msg_ready(mbox_get(mbox)); >=20 > rc =3D mbox_process_msg(mbox, (void *)&rsp); > - if (rc) > + if (rc) { > + mbox_put(mbox); > return rc; > + } > + mbox_put(mbox); >=20 > if (rsp->hdr.ver !=3D MBOX_VERSION) { > plt_err("Incompatible MBox versions(AF: 0x%04x Client: 0x%04x)", > diff --git a/drivers/common/cnxk/roc_mbox_priv.h > b/drivers/common/cnxk/roc_mbox_priv.h > index 84516fbd5f..4fafca6f72 100644 > --- a/drivers/common/cnxk/roc_mbox_priv.h > +++ b/drivers/common/cnxk/roc_mbox_priv.h > @@ -151,6 +151,21 @@ mbox_process_msg_tmo(struct mbox *mbox, void **msg, > uint32_t tmo) > return mbox_get_rsp_tmo(mbox, 0, msg, tmo); > } >=20 > +static inline struct mbox * > +mbox_get(struct mbox *mbox) > +{ > + struct mbox_dev *mdev =3D &mbox->dev[0]; > + plt_spinlock_lock(&mdev->mbox_lock); > + return mbox; > +} > + > +static inline void > +mbox_put(struct mbox *mbox) > +{ > + struct mbox_dev *mdev =3D &mbox->dev[0]; > + plt_spinlock_unlock(&mdev->mbox_lock); > +} > + > int send_ready_msg(struct mbox *mbox, uint16_t *pf_func /* out */); > int reply_invalid_msg(struct mbox *mbox, int devid, uint16_t pf_func, > uint16_t id); > diff --git a/drivers/common/cnxk/roc_nix.c b/drivers/common/cnxk/roc_nix.= c > index 2a320cc291..fbf318a77d 100644 > --- a/drivers/common/cnxk/roc_nix.c > +++ b/drivers/common/cnxk/roc_nix.c > @@ -86,11 +86,14 @@ roc_nix_lf_inl_ipsec_cfg(struct roc_nix *roc_nix, str= uct > roc_nix_ipsec_cfg *cfg, > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > struct nix_inline_ipsec_lf_cfg *lf_cfg; > - struct mbox *mbox =3D (&nix->dev)->mbox; > + struct mbox *mbox =3D mbox_get((&nix->dev)->mbox); > + int rc; >=20 > lf_cfg =3D mbox_alloc_msg_nix_inline_ipsec_lf_cfg(mbox); > - if (lf_cfg =3D=3D NULL) > - return -ENOSPC; > + if (lf_cfg =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > if (enb) { > lf_cfg->enable =3D 1; > @@ -105,21 +108,30 @@ roc_nix_lf_inl_ipsec_cfg(struct roc_nix *roc_nix, s= truct > roc_nix_ipsec_cfg *cfg, > lf_cfg->enable =3D 0; > } >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > roc_nix_cpt_ctx_cache_sync(struct roc_nix *roc_nix) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct mbox *mbox =3D (&nix->dev)->mbox; > + struct mbox *mbox =3D mbox_get((&nix->dev)->mbox); > struct msg_req *req; > + int rc; >=20 > req =3D mbox_alloc_msg_cpt_ctx_cache_sync(mbox); > - if (req =3D=3D NULL) > - return -ENOSPC; > + if (req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -147,14 +159,14 @@ roc_nix_lf_alloc(struct roc_nix *roc_nix, uint32_t = nb_rxq, uint32_t > nb_txq, > uint64_t rx_cfg) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct mbox *mbox =3D (&nix->dev)->mbox; > + struct mbox *mbox =3D mbox_get((&nix->dev)->mbox); > struct nix_lf_alloc_req *req; > struct nix_lf_alloc_rsp *rsp; > int rc =3D -ENOSPC; >=20 > req =3D mbox_alloc_msg_nix_lf_alloc(mbox); > if (req =3D=3D NULL) > - return rc; > + goto fail; > req->rq_cnt =3D nb_rxq; > req->sq_cnt =3D nb_txq; > if (roc_nix->tx_compl_ena) > @@ -203,11 +215,14 @@ roc_nix_lf_alloc(struct roc_nix *roc_nix, uint32_t = nb_rxq, uint32_t > nb_txq, > nix->nb_rx_queues =3D nb_rxq; > nix->nb_tx_queues =3D nb_txq; > nix->sqs =3D plt_zmalloc(sizeof(struct roc_nix_sq *) * nb_txq, 0); > - if (!nix->sqs) > - return -ENOMEM; > + if (!nix->sqs) { > + rc =3D -ENOMEM; > + goto fail; > + } >=20 > nix_tel_node_add(roc_nix); > fail: > + mbox_put(mbox); > return rc; > } >=20 > @@ -215,7 +230,7 @@ int > roc_nix_lf_free(struct roc_nix *roc_nix) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct mbox *mbox =3D (&nix->dev)->mbox; > + struct mbox *mbox =3D mbox_get((&nix->dev)->mbox); > struct nix_lf_free_req *req; > struct ndc_sync_op *ndc_req; > int rc =3D -ENOSPC; > @@ -226,7 +241,7 @@ roc_nix_lf_free(struct roc_nix *roc_nix) > /* Sync NDC-NIX for LF */ > ndc_req =3D mbox_alloc_msg_ndc_sync_op(mbox); > if (ndc_req =3D=3D NULL) > - return rc; > + goto exit; > ndc_req->nix_lf_tx_sync =3D 1; > ndc_req->nix_lf_rx_sync =3D 1; > rc =3D mbox_process(mbox); > @@ -234,38 +249,46 @@ roc_nix_lf_free(struct roc_nix *roc_nix) > plt_err("Error on NDC-NIX-[TX, RX] LF sync, rc %d", rc); >=20 > req =3D mbox_alloc_msg_nix_lf_free(mbox); > - if (req =3D=3D NULL) > - return -ENOSPC; > + if (req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } > /* Let AF driver free all this nix lf's > * NPC entries allocated using NPC MBOX. > */ > req->flags =3D 0; >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > static inline int > nix_lf_attach(struct dev *dev) > { > - struct mbox *mbox =3D dev->mbox; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct rsrc_attach_req *req; > int rc =3D -ENOSPC; >=20 > /* Attach NIX(lf) */ > req =3D mbox_alloc_msg_attach_resources(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->modify =3D true; > req->nixlf =3D true; >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > static inline int > nix_lf_get_msix_offset(struct dev *dev, struct nix *nix) > { > struct msix_offset_rsp *msix_rsp; > - struct mbox *mbox =3D dev->mbox; > + struct mbox *mbox =3D mbox_get(dev->mbox); > int rc; >=20 > /* Get MSIX vector offsets */ > @@ -274,30 +297,34 @@ nix_lf_get_msix_offset(struct dev *dev, struct nix = *nix) > if (rc =3D=3D 0) > nix->msixoff =3D msix_rsp->nix_msixoff; >=20 > + mbox_put(mbox); > return rc; > } >=20 > static inline int > nix_lf_detach(struct nix *nix) > { > - struct mbox *mbox =3D (&nix->dev)->mbox; > + struct mbox *mbox =3D mbox_get((&nix->dev)->mbox); > struct rsrc_detach_req *req; > int rc =3D -ENOSPC; >=20 > req =3D mbox_alloc_msg_detach_resources(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->partial =3D true; > req->nixlf =3D true; >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > static int > roc_nix_get_hw_info(struct roc_nix *roc_nix) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct mbox *mbox =3D (&nix->dev)->mbox; > + struct mbox *mbox =3D mbox_get((&nix->dev)->mbox); > struct nix_hw_info *hw_info; > int rc; >=20 > @@ -313,6 +340,7 @@ roc_nix_get_hw_info(struct roc_nix *roc_nix) > roc_nix->dwrr_mtu =3D hw_info->rpm_dwrr_mtu; > } >=20 > + mbox_put(mbox); > return rc; > } >=20 > diff --git a/drivers/common/cnxk/roc_nix_bpf.c b/drivers/common/cnxk/roc_= nix_bpf.c > index 55a831f833..d60396289b 100644 > --- a/drivers/common/cnxk/roc_nix_bpf.c > +++ b/drivers/common/cnxk/roc_nix_bpf.c > @@ -24,15 +24,6 @@ static uint8_t sw_to_hw_lvl_map[] =3D > {NIX_RX_BAND_PROF_LAYER_LEAF, > NIX_RX_BAND_PROF_LAYER_MIDDLE, > NIX_RX_BAND_PROF_LAYER_TOP}; >=20 > -static inline struct mbox * > -get_mbox(struct roc_nix *roc_nix) > -{ > - struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct dev *dev =3D &nix->dev; > - > - return dev->mbox; > -} > - > static inline uint64_t > meter_rate_to_nix(uint64_t value, uint64_t *exponent_p, uint64_t *mantis= sa_p, > uint64_t *div_exp_p, uint32_t timeunit_p) > @@ -313,12 +304,16 @@ int > roc_nix_bpf_timeunit_get(struct roc_nix *roc_nix, uint32_t *time_unit) > { > struct nix_bandprof_get_hwinfo_rsp *rsp; > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct msg_req *req; > int rc =3D -ENOSPC; >=20 > - if (roc_model_is_cn9k()) > - return NIX_ERR_HW_NOTSUP; > + if (roc_model_is_cn9k()) { > + rc =3D NIX_ERR_HW_NOTSUP; > + goto exit; > + } >=20 > req =3D mbox_alloc_msg_nix_bandprof_get_hwinfo(mbox); > if (req =3D=3D NULL) > @@ -331,6 +326,7 @@ roc_nix_bpf_timeunit_get(struct roc_nix *roc_nix, uin= t32_t > *time_unit) > *time_unit =3D rsp->policer_timeunit; >=20 > exit: > + mbox_put(mbox); > return rc; > } >=20 > @@ -340,16 +336,22 @@ roc_nix_bpf_count_get(struct roc_nix *roc_nix, uint= 8_t lvl_mask, > { > uint8_t mask =3D lvl_mask & NIX_BPF_LEVEL_F_MASK; > struct nix_bandprof_get_hwinfo_rsp *rsp; > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > uint8_t leaf_idx, mid_idx, top_idx; > struct msg_req *req; > int rc =3D -ENOSPC; >=20 > - if (roc_model_is_cn9k()) > - return NIX_ERR_HW_NOTSUP; > + if (roc_model_is_cn9k()) { > + rc =3D NIX_ERR_HW_NOTSUP; > + goto exit; > + } >=20 > - if (!mask) > - return NIX_ERR_PARAM; > + if (!mask) { > + rc =3D NIX_ERR_PARAM; > + goto exit; > + } >=20 > req =3D mbox_alloc_msg_nix_bandprof_get_hwinfo(mbox); > if (req =3D=3D NULL) > @@ -373,6 +375,7 @@ roc_nix_bpf_count_get(struct roc_nix *roc_nix, uint8_= t lvl_mask, > count[top_idx] =3D rsp->prof_count[sw_to_hw_lvl_map[top_idx]]; >=20 > exit: > + mbox_put(mbox); > return rc; > } >=20 > @@ -382,33 +385,45 @@ roc_nix_bpf_alloc(struct roc_nix *roc_nix, uint8_t = lvl_mask, > struct roc_nix_bpf_objs *profs) > { > uint8_t mask =3D lvl_mask & NIX_BPF_LEVEL_F_MASK; > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct nix_bandprof_alloc_req *req; > struct nix_bandprof_alloc_rsp *rsp; > uint8_t leaf_idx, mid_idx, top_idx; > int rc =3D -ENOSPC, i; >=20 > - if (roc_model_is_cn9k()) > - return NIX_ERR_HW_NOTSUP; > + if (roc_model_is_cn9k()) { > + rc =3D NIX_ERR_HW_NOTSUP; > + goto exit; > + } >=20 > - if (!mask) > - return NIX_ERR_PARAM; > + if (!mask) { > + rc =3D NIX_ERR_PARAM; > + goto exit; > + } >=20 > leaf_idx =3D roc_nix_bpf_level_to_idx(mask & ROC_NIX_BPF_LEVEL_F_LEAF); > mid_idx =3D roc_nix_bpf_level_to_idx(mask & ROC_NIX_BPF_LEVEL_F_MID); > top_idx =3D roc_nix_bpf_level_to_idx(mask & ROC_NIX_BPF_LEVEL_F_TOP); >=20 > if ((leaf_idx !=3D ROC_NIX_BPF_LEVEL_IDX_INVALID) && > - (per_lvl_cnt[leaf_idx] > NIX_MAX_BPF_COUNT_LEAF_LAYER)) > - return NIX_ERR_INVALID_RANGE; > + (per_lvl_cnt[leaf_idx] > NIX_MAX_BPF_COUNT_LEAF_LAYER)) { > + rc =3D NIX_ERR_INVALID_RANGE; > + goto exit; > + } >=20 > if ((mid_idx !=3D ROC_NIX_BPF_LEVEL_IDX_INVALID) && > - (per_lvl_cnt[mid_idx] > NIX_MAX_BPF_COUNT_MID_LAYER)) > - return NIX_ERR_INVALID_RANGE; > + (per_lvl_cnt[mid_idx] > NIX_MAX_BPF_COUNT_MID_LAYER)) { > + rc =3D NIX_ERR_INVALID_RANGE; > + goto exit; > + } >=20 > if ((top_idx !=3D ROC_NIX_BPF_LEVEL_IDX_INVALID) && > - (per_lvl_cnt[top_idx] > NIX_MAX_BPF_COUNT_TOP_LAYER)) > - return NIX_ERR_INVALID_RANGE; > + (per_lvl_cnt[top_idx] > NIX_MAX_BPF_COUNT_TOP_LAYER)) { > + rc =3D NIX_ERR_INVALID_RANGE; > + goto exit; > + } >=20 > req =3D mbox_alloc_msg_nix_bandprof_alloc(mbox); > if (req =3D=3D NULL) > @@ -464,6 +479,7 @@ roc_nix_bpf_alloc(struct roc_nix *roc_nix, uint8_t lv= l_mask, > } >=20 > exit: > + mbox_put(mbox); > return rc; > } >=20 > @@ -471,17 +487,23 @@ int > roc_nix_bpf_free(struct roc_nix *roc_nix, struct roc_nix_bpf_objs *profs= , > uint8_t num_prof) > { > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct nix_bandprof_free_req *req; > uint8_t level; > - int i, j; > + int i, j, rc; >=20 > - if (num_prof >=3D NIX_RX_BAND_PROF_LAYER_MAX) > - return NIX_ERR_INVALID_RANGE; > + if (num_prof >=3D NIX_RX_BAND_PROF_LAYER_MAX) { > + rc =3D NIX_ERR_INVALID_RANGE; > + goto exit; > + } >=20 > req =3D mbox_alloc_msg_nix_bandprof_free(mbox); > - if (req =3D=3D NULL) > - return -ENOSPC; > + if (req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > for (i =3D 0; i < num_prof; i++) { > level =3D sw_to_hw_lvl_map[profs[i].level]; > @@ -490,21 +512,32 @@ roc_nix_bpf_free(struct roc_nix *roc_nix, struct > roc_nix_bpf_objs *profs, > req->prof_idx[level][j] =3D profs[i].ids[j]; > } >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > roc_nix_bpf_free_all(struct roc_nix *roc_nix) > { > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct nix_bandprof_free_req *req; > + int rc; >=20 > req =3D mbox_alloc_msg_nix_bandprof_free(mbox); > - if (req =3D=3D NULL) > - return -ENOSPC; > + if (req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > req->free_all =3D true; > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -513,7 +546,9 @@ roc_nix_bpf_config(struct roc_nix *roc_nix, uint16_t = id, > struct roc_nix_bpf_cfg *cfg) > { > uint64_t exponent_p =3D 0, mantissa_p =3D 0, div_exp_p =3D 0; > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D dev->mbox; > struct nix_cn10k_aq_enq_req *aq; > uint32_t policer_timeunit; > uint8_t level_idx; > @@ -533,9 +568,11 @@ roc_nix_bpf_config(struct roc_nix *roc_nix, uint16_t= id, > if (level_idx =3D=3D ROC_NIX_BPF_LEVEL_IDX_INVALID) > return NIX_ERR_PARAM; >=20 > - aq =3D mbox_alloc_msg_nix_cn10k_aq_enq(mbox); > - if (aq =3D=3D NULL) > - return -ENOSPC; > + aq =3D mbox_alloc_msg_nix_cn10k_aq_enq(mbox_get(mbox)); > + if (aq =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } > aq->qidx =3D (sw_to_hw_lvl_map[level_idx] << 14) | id; > aq->ctype =3D NIX_AQ_CTYPE_BAND_PROF; > aq->op =3D NIX_AQ_INSTOP_WRITE; > @@ -631,7 +668,8 @@ roc_nix_bpf_config(struct roc_nix *roc_nix, uint16_t = id, > break; >=20 > default: > - return NIX_ERR_PARAM; > + rc =3D NIX_ERR_PARAM; > + goto exit; > } >=20 > aq->prof.lmode =3D cfg->lmode; > @@ -652,7 +690,10 @@ roc_nix_bpf_config(struct roc_nix *roc_nix, uint16_t= id, > aq->prof_mask.yc_action =3D ~(aq->prof_mask.yc_action); > aq->prof_mask.rc_action =3D ~(aq->prof_mask.rc_action); >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -660,19 +701,26 @@ roc_nix_bpf_ena_dis(struct roc_nix *roc_nix, uint16= _t id, struct > roc_nix_rq *rq, > bool enable) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct nix_cn10k_aq_enq_req *aq; > int rc; >=20 > - if (roc_model_is_cn9k()) > - return NIX_ERR_HW_NOTSUP; > + if (roc_model_is_cn9k()) { > + rc =3D NIX_ERR_HW_NOTSUP; > + goto exit; > + } >=20 > - if (rq->qid >=3D nix->nb_rx_queues) > - return NIX_ERR_QUEUE_INVALID_RANGE; > + if (rq->qid >=3D nix->nb_rx_queues) { > + rc =3D NIX_ERR_QUEUE_INVALID_RANGE; > + goto exit; > + } >=20 > aq =3D mbox_alloc_msg_nix_cn10k_aq_enq(mbox); > - if (aq =3D=3D NULL) > - return -ENOSPC; > + if (aq =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } > aq->qidx =3D rq->qid; > aq->ctype =3D NIX_AQ_CTYPE_RQ; > aq->op =3D NIX_AQ_INSTOP_WRITE; > @@ -691,6 +739,7 @@ roc_nix_bpf_ena_dis(struct roc_nix *roc_nix, uint16_t= id, struct > roc_nix_rq *rq, > rq->bpf_id =3D id; >=20 > exit: > + mbox_put(mbox); > return rc; > } >=20 > @@ -698,22 +747,30 @@ int > roc_nix_bpf_dump(struct roc_nix *roc_nix, uint16_t id, > enum roc_nix_bpf_level_flag lvl_flag) > { > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct nix_cn10k_aq_enq_rsp *rsp; > struct nix_cn10k_aq_enq_req *aq; > uint8_t level_idx; > int rc; >=20 > - if (roc_model_is_cn9k()) > - return NIX_ERR_HW_NOTSUP; > + if (roc_model_is_cn9k()) { > + rc =3D NIX_ERR_HW_NOTSUP; > + goto exit; > + } >=20 > level_idx =3D roc_nix_bpf_level_to_idx(lvl_flag); > - if (level_idx =3D=3D ROC_NIX_BPF_LEVEL_IDX_INVALID) > - return NIX_ERR_PARAM; > + if (level_idx =3D=3D ROC_NIX_BPF_LEVEL_IDX_INVALID) { > + rc =3D NIX_ERR_PARAM; > + goto exit; > + } >=20 > aq =3D mbox_alloc_msg_nix_cn10k_aq_enq(mbox); > - if (aq =3D=3D NULL) > - return -ENOSPC; > + if (aq =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } > aq->qidx =3D (sw_to_hw_lvl_map[level_idx] << 14 | id); > aq->ctype =3D NIX_AQ_CTYPE_BAND_PROF; > aq->op =3D NIX_AQ_INSTOP_READ; > @@ -722,7 +779,8 @@ roc_nix_bpf_dump(struct roc_nix *roc_nix, uint16_t id= , > plt_dump("=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D band prof id =3D%d = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D", id); > nix_lf_bpf_dump(&rsp->prof); > } > - > +exit: > + mbox_put(mbox); > return rc; > } >=20 > @@ -731,7 +789,9 @@ roc_nix_bpf_pre_color_tbl_setup(struct roc_nix *roc_n= ix, uint16_t > id, > enum roc_nix_bpf_level_flag lvl_flag, > struct roc_nix_bpf_precolor *tbl) > { > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D dev->mbox; > struct nix_cn10k_aq_enq_req *aq; > uint8_t pc_mode, tn_ena; > uint8_t level_idx; > @@ -797,9 +857,11 @@ roc_nix_bpf_pre_color_tbl_setup(struct roc_nix *roc_= nix, uint16_t > id, > } >=20 > /* Update corresponding bandwidth profile too */ > - aq =3D mbox_alloc_msg_nix_cn10k_aq_enq(mbox); > - if (aq =3D=3D NULL) > - return -ENOSPC; > + aq =3D mbox_alloc_msg_nix_cn10k_aq_enq(mbox_get(mbox)); > + if (aq =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } > aq->qidx =3D (sw_to_hw_lvl_map[level_idx] << 14) | id; > aq->ctype =3D NIX_AQ_CTYPE_BAND_PROF; > aq->op =3D NIX_AQ_INSTOP_WRITE; > @@ -808,9 +870,10 @@ roc_nix_bpf_pre_color_tbl_setup(struct roc_nix *roc_= nix, uint16_t > id, > aq->prof_mask.pc_mode =3D ~(aq->prof_mask.pc_mode); > aq->prof_mask.tnl_ena =3D ~(aq->prof_mask.tnl_ena); >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); >=20 > exit: > + mbox_put(mbox); > return rc; > } >=20 > @@ -819,20 +882,29 @@ roc_nix_bpf_connect(struct roc_nix *roc_nix, > enum roc_nix_bpf_level_flag lvl_flag, uint16_t src_id, > uint16_t dst_id) > { > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct nix_cn10k_aq_enq_req *aq; > uint8_t level_idx; > + int rc; >=20 > - if (roc_model_is_cn9k()) > - return NIX_ERR_HW_NOTSUP; > + if (roc_model_is_cn9k()) { > + rc =3D NIX_ERR_HW_NOTSUP; > + goto exit; > + } >=20 > level_idx =3D roc_nix_bpf_level_to_idx(lvl_flag); > - if (level_idx =3D=3D ROC_NIX_BPF_LEVEL_IDX_INVALID) > - return NIX_ERR_PARAM; > + if (level_idx =3D=3D ROC_NIX_BPF_LEVEL_IDX_INVALID) { > + rc =3D NIX_ERR_PARAM; > + goto exit; > + } >=20 > aq =3D mbox_alloc_msg_nix_cn10k_aq_enq(mbox); > - if (aq =3D=3D NULL) > - return -ENOSPC; > + if (aq =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } > aq->qidx =3D (sw_to_hw_lvl_map[level_idx] << 14) | src_id; > aq->ctype =3D NIX_AQ_CTYPE_BAND_PROF; > aq->op =3D NIX_AQ_INSTOP_WRITE; > @@ -847,7 +919,10 @@ roc_nix_bpf_connect(struct roc_nix *roc_nix, > aq->prof_mask.band_prof_id =3D ~(aq->prof_mask.band_prof_id); > } >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -859,28 +934,36 @@ roc_nix_bpf_stats_read(struct roc_nix *roc_nix, uin= t16_t id, > uint64_t mask, > uint8_t green_octs_drop, yellow_octs_drop, red_octs_drop; > uint8_t green_pkt_pass, green_octs_pass, green_pkt_drop; > uint8_t red_pkt_pass, red_octs_pass, red_pkt_drop; > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct nix_cn10k_aq_enq_rsp *rsp; > struct nix_cn10k_aq_enq_req *aq; > uint8_t level_idx; > int rc; >=20 > - if (roc_model_is_cn9k()) > - return NIX_ERR_HW_NOTSUP; > + if (roc_model_is_cn9k()) { > + rc =3D NIX_ERR_HW_NOTSUP; > + goto exit; > + } >=20 > level_idx =3D roc_nix_bpf_level_to_idx(lvl_flag); > - if (level_idx =3D=3D ROC_NIX_BPF_LEVEL_IDX_INVALID) > - return NIX_ERR_PARAM; > + if (level_idx =3D=3D ROC_NIX_BPF_LEVEL_IDX_INVALID) { > + rc =3D NIX_ERR_PARAM; > + goto exit; > + } >=20 > aq =3D mbox_alloc_msg_nix_cn10k_aq_enq(mbox); > - if (aq =3D=3D NULL) > - return -ENOSPC; > + if (aq =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } > aq->qidx =3D (sw_to_hw_lvl_map[level_idx] << 14 | id); > aq->ctype =3D NIX_AQ_CTYPE_BAND_PROF; > aq->op =3D NIX_AQ_INSTOP_READ; > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; >=20 > green_pkt_pass =3D > roc_nix_bpf_stats_to_idx(mask & ROC_NIX_BPF_GREEN_PKT_F_PASS); > @@ -943,27 +1026,39 @@ roc_nix_bpf_stats_read(struct roc_nix *roc_nix, ui= nt16_t id, > uint64_t mask, > if (red_octs_drop !=3D ROC_NIX_BPF_STATS_MAX) > stats[red_octs_drop] =3D rsp->prof.red_octs_drop; >=20 > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > roc_nix_bpf_stats_reset(struct roc_nix *roc_nix, uint16_t id, uint64_t m= ask, > enum roc_nix_bpf_level_flag lvl_flag) > { > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct nix_cn10k_aq_enq_req *aq; > uint8_t level_idx; > + int rc; >=20 > - if (roc_model_is_cn9k()) > - return NIX_ERR_HW_NOTSUP; > + if (roc_model_is_cn9k()) { > + rc =3D NIX_ERR_HW_NOTSUP; > + goto exit; > + } >=20 > level_idx =3D roc_nix_bpf_level_to_idx(lvl_flag); > - if (level_idx =3D=3D ROC_NIX_BPF_LEVEL_IDX_INVALID) > - return NIX_ERR_PARAM; > + if (level_idx =3D=3D ROC_NIX_BPF_LEVEL_IDX_INVALID) { > + rc =3D NIX_ERR_PARAM; > + goto exit; > + } >=20 > aq =3D mbox_alloc_msg_nix_cn10k_aq_enq(mbox); > - if (aq =3D=3D NULL) > - return -ENOSPC; > + if (aq =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } > aq->qidx =3D (sw_to_hw_lvl_map[level_idx] << 14 | id); > aq->ctype =3D NIX_AQ_CTYPE_BAND_PROF; > aq->op =3D NIX_AQ_INSTOP_WRITE; > @@ -1023,7 +1118,10 @@ roc_nix_bpf_stats_reset(struct roc_nix *roc_nix, u= int16_t id, > uint64_t mask, > aq->prof_mask.red_octs_drop =3D ~(aq->prof_mask.red_octs_drop); > } >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > diff --git a/drivers/common/cnxk/roc_nix_debug.c > b/drivers/common/cnxk/roc_nix_debug.c > index 6f82350b53..2c354b44bf 100644 > --- a/drivers/common/cnxk/roc_nix_debug.c > +++ b/drivers/common/cnxk/roc_nix_debug.c > @@ -332,17 +332,18 @@ roc_nix_lf_reg_dump(struct roc_nix *roc_nix, uint64= _t *data) > int > nix_q_ctx_get(struct dev *dev, uint8_t ctype, uint16_t qid, __io void **= ctx_p) > { > - struct mbox *mbox =3D dev->mbox; > + struct mbox *mbox =3D mbox_get(dev->mbox); > int rc; >=20 > if (roc_model_is_cn9k()) { > struct nix_aq_enq_rsp *rsp; > struct nix_aq_enq_req *aq; > - int rc; >=20 > aq =3D mbox_alloc_msg_nix_aq_enq(mbox); > - if (!aq) > - return -ENOSPC; > + if (!aq) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > aq->qidx =3D qid; > aq->ctype =3D ctype; > @@ -350,7 +351,7 @@ nix_q_ctx_get(struct dev *dev, uint8_t ctype, uint16_= t qid, __io > void **ctx_p) >=20 > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; > if (ctype =3D=3D NIX_AQ_CTYPE_RQ) > *ctx_p =3D &rsp->rq; > else if (ctype =3D=3D NIX_AQ_CTYPE_SQ) > @@ -362,8 +363,10 @@ nix_q_ctx_get(struct dev *dev, uint8_t ctype, uint16= _t qid, __io > void **ctx_p) > struct nix_cn10k_aq_enq_req *aq; >=20 > aq =3D mbox_alloc_msg_nix_cn10k_aq_enq(mbox); > - if (!aq) > - return -ENOSPC; > + if (!aq) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > aq->qidx =3D qid; > aq->ctype =3D ctype; > @@ -371,7 +374,7 @@ nix_q_ctx_get(struct dev *dev, uint8_t ctype, uint16_= t qid, __io > void **ctx_p) >=20 > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; >=20 > if (ctype =3D=3D NIX_AQ_CTYPE_RQ) > *ctx_p =3D &rsp->rq; > @@ -380,7 +383,10 @@ nix_q_ctx_get(struct dev *dev, uint8_t ctype, uint16= _t qid, __io > void **ctx_p) > else > *ctx_p =3D &rsp->cq; > } > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > static inline void > @@ -733,14 +739,18 @@ roc_nix_queues_ctx_dump(struct roc_nix *roc_nix, FI= LE *file) > } >=20 > /* Dump SQB Aura minimal info */ > - npa_aq =3D mbox_alloc_msg_npa_aq_enq(npa_lf->mbox); > - if (npa_aq =3D=3D NULL) > - return -ENOSPC; > + npa_aq =3D mbox_alloc_msg_npa_aq_enq(mbox_get(npa_lf->mbox)); > + if (npa_aq =3D=3D NULL) { > + rc =3D -ENOSPC; > + mbox_put(npa_lf->mbox); > + goto fail; > + } > npa_aq->aura_id =3D sqb_aura; > npa_aq->ctype =3D NPA_AQ_CTYPE_AURA; > npa_aq->op =3D NPA_AQ_INSTOP_READ; >=20 > rc =3D mbox_process_msg(npa_lf->mbox, (void *)&npa_rsp); > + mbox_put(npa_lf->mbox); > if (rc) { > plt_err("Failed to get sq's sqb_aura context"); > continue; > @@ -1103,7 +1113,7 @@ nix_tm_dump_lvl(struct nix *nix, struct nix_tm_node= _list *list, > uint8_t hw_lvl) > if (!k) > continue; >=20 > - req =3D mbox_alloc_msg_nix_txschq_cfg(mbox); > + req =3D mbox_alloc_msg_nix_txschq_cfg(mbox_get(mbox)); > req->read =3D 1; > req->lvl =3D node->hw_lvl; > req->num_regs =3D k; > @@ -1116,6 +1126,7 @@ nix_tm_dump_lvl(struct nix *nix, struct nix_tm_node= _list *list, > uint8_t hw_lvl) > } else { > nix_dump(file, "\t!!!Failed to dump registers!!!"); > } > + mbox_put(mbox); > } >=20 > if (found) > @@ -1128,7 +1139,7 @@ nix_tm_dump_lvl(struct nix *nix, struct nix_tm_node= _list *list, > uint8_t hw_lvl) > if (!k) > return; >=20 > - req =3D mbox_alloc_msg_nix_txschq_cfg(mbox); > + req =3D mbox_alloc_msg_nix_txschq_cfg(mbox_get(mbox)); > req->read =3D 1; > req->lvl =3D NIX_TXSCH_LVL_TL1; > req->num_regs =3D k; > @@ -1141,6 +1152,7 @@ nix_tm_dump_lvl(struct nix *nix, struct nix_tm_node= _list *list, > uint8_t hw_lvl) > } else { > nix_dump(file, "\t!!!Failed to dump registers!!!"); > } > + mbox_put(mbox); > nix_dump(file, "\n"); > } > } > diff --git a/drivers/common/cnxk/roc_nix_fc.c b/drivers/common/cnxk/roc_n= ix_fc.c > index 033e17a4bf..569fe8dc48 100644 > --- a/drivers/common/cnxk/roc_nix_fc.c > +++ b/drivers/common/cnxk/roc_nix_fc.c > @@ -5,15 +5,6 @@ > #include "roc_api.h" > #include "roc_priv.h" >=20 > -static inline struct mbox * > -get_mbox(struct roc_nix *roc_nix) > -{ > - struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct dev *dev =3D &nix->dev; > - > - return dev->mbox; > -} > - > static int > nix_fc_rxchan_bpid_get(struct roc_nix *roc_nix, struct roc_nix_fc_cfg *f= c_cfg) > { > @@ -33,7 +24,8 @@ static int > nix_fc_rxchan_bpid_set(struct roc_nix *roc_nix, bool enable) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct nix_bp_cfg_req *req; > struct nix_bp_cfg_rsp *rsp; > int rc =3D -ENOSPC, i; > @@ -41,7 +33,7 @@ nix_fc_rxchan_bpid_set(struct roc_nix *roc_nix, bool en= able) > if (enable) { > req =3D mbox_alloc_msg_nix_bp_enable(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; >=20 > req->chan_base =3D 0; > if (roc_nix_is_lbk(roc_nix) || roc_nix_is_sdp(roc_nix)) > @@ -63,7 +55,7 @@ nix_fc_rxchan_bpid_set(struct roc_nix *roc_nix, bool en= able) > } else { > req =3D mbox_alloc_msg_nix_bp_disable(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->chan_base =3D 0; > req->chan_cnt =3D nix->chan_cnt; >=20 > @@ -83,7 +75,7 @@ nix_fc_rxchan_bpid_set(struct roc_nix *roc_nix, bool en= able) > !roc_errata_cpt_hang_on_x2p_bp()) { > req =3D mbox_alloc_msg_nix_cpt_bp_enable(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->chan_base =3D 0; > req->chan_cnt =3D 1; > req->bpid_per_chan =3D 0; > @@ -94,7 +86,7 @@ nix_fc_rxchan_bpid_set(struct roc_nix *roc_nix, bool en= able) > } else { > req =3D mbox_alloc_msg_nix_cpt_bp_disable(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->chan_base =3D 0; > req->chan_cnt =3D 1; > req->bpid_per_chan =3D 0; > @@ -105,13 +97,16 @@ nix_fc_rxchan_bpid_set(struct roc_nix *roc_nix, bool= enable) > } >=20 > exit: > + mbox_put(mbox); > return rc; > } >=20 > static int > nix_fc_cq_config_get(struct roc_nix *roc_nix, struct roc_nix_fc_cfg *fc_= cfg) > { > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct nix_aq_enq_rsp *rsp; > int rc; >=20 > @@ -119,8 +114,10 @@ nix_fc_cq_config_get(struct roc_nix *roc_nix, struct= roc_nix_fc_cfg > *fc_cfg) > struct nix_aq_enq_req *aq; >=20 > aq =3D mbox_alloc_msg_nix_aq_enq(mbox); > - if (!aq) > - return -ENOSPC; > + if (!aq) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > aq->qidx =3D fc_cfg->cq_cfg.rq; > aq->ctype =3D NIX_AQ_CTYPE_CQ; > @@ -129,8 +126,10 @@ nix_fc_cq_config_get(struct roc_nix *roc_nix, struct= roc_nix_fc_cfg > *fc_cfg) > struct nix_cn10k_aq_enq_req *aq; >=20 > aq =3D mbox_alloc_msg_nix_cn10k_aq_enq(mbox); > - if (!aq) > - return -ENOSPC; > + if (!aq) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > aq->qidx =3D fc_cfg->cq_cfg.rq; > aq->ctype =3D NIX_AQ_CTYPE_CQ; > @@ -146,13 +145,16 @@ nix_fc_cq_config_get(struct roc_nix *roc_nix, struc= t > roc_nix_fc_cfg *fc_cfg) > fc_cfg->type =3D ROC_NIX_FC_CQ_CFG; >=20 > exit: > + mbox_put(mbox); > return rc; > } >=20 > static int > nix_fc_rq_config_get(struct roc_nix *roc_nix, struct roc_nix_fc_cfg *fc_= cfg) > { > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct nix_aq_enq_rsp *rsp; > struct npa_aq_enq_req *npa_req; > struct npa_aq_enq_rsp *npa_rsp; > @@ -162,8 +164,10 @@ nix_fc_rq_config_get(struct roc_nix *roc_nix, struct= roc_nix_fc_cfg > *fc_cfg) > struct nix_aq_enq_req *aq; >=20 > aq =3D mbox_alloc_msg_nix_aq_enq(mbox); > - if (!aq) > - return -ENOSPC; > + if (!aq) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > aq->qidx =3D fc_cfg->rq_cfg.rq; > aq->ctype =3D NIX_AQ_CTYPE_RQ; > @@ -172,8 +176,10 @@ nix_fc_rq_config_get(struct roc_nix *roc_nix, struct= roc_nix_fc_cfg > *fc_cfg) > struct nix_cn10k_aq_enq_req *aq; >=20 > aq =3D mbox_alloc_msg_nix_cn10k_aq_enq(mbox); > - if (!aq) > - return -ENOSPC; > + if (!aq) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > aq->qidx =3D fc_cfg->rq_cfg.rq; > aq->ctype =3D NIX_AQ_CTYPE_RQ; > @@ -185,8 +191,10 @@ nix_fc_rq_config_get(struct roc_nix *roc_nix, struct= roc_nix_fc_cfg > *fc_cfg) > goto exit; >=20 > npa_req =3D mbox_alloc_msg_npa_aq_enq(mbox); > - if (!npa_req) > - return -ENOSPC; > + if (!npa_req) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > npa_req->aura_id =3D rsp->rq.lpb_aura; > npa_req->ctype =3D NPA_AQ_CTYPE_AURA; > @@ -201,6 +209,7 @@ nix_fc_rq_config_get(struct roc_nix *roc_nix, struct = roc_nix_fc_cfg > *fc_cfg) > fc_cfg->type =3D ROC_NIX_FC_RQ_CFG; >=20 > exit: > + mbox_put(mbox); > return rc; > } >=20 > @@ -208,14 +217,18 @@ static int > nix_fc_cq_config_set(struct roc_nix *roc_nix, struct roc_nix_fc_cfg *fc_= cfg) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > + int rc; >=20 > if (roc_model_is_cn9k()) { > struct nix_aq_enq_req *aq; >=20 > aq =3D mbox_alloc_msg_nix_aq_enq(mbox); > - if (!aq) > - return -ENOSPC; > + if (!aq) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > aq->qidx =3D fc_cfg->cq_cfg.rq; > aq->ctype =3D NIX_AQ_CTYPE_CQ; > @@ -234,8 +247,10 @@ nix_fc_cq_config_set(struct roc_nix *roc_nix, struct= roc_nix_fc_cfg > *fc_cfg) > struct nix_cn10k_aq_enq_req *aq; >=20 > aq =3D mbox_alloc_msg_nix_cn10k_aq_enq(mbox); > - if (!aq) > - return -ENOSPC; > + if (!aq) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > aq->qidx =3D fc_cfg->cq_cfg.rq; > aq->ctype =3D NIX_AQ_CTYPE_CQ; > @@ -252,7 +267,10 @@ nix_fc_cq_config_set(struct roc_nix *roc_nix, struct= roc_nix_fc_cfg > *fc_cfg) > aq->cq_mask.bp_ena =3D ~(aq->cq_mask.bp_ena); > } >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > static int > @@ -323,7 +341,8 @@ enum roc_nix_fc_mode > roc_nix_fc_mode_get(struct roc_nix *roc_nix) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct cgx_pause_frm_cfg *req, *rsp; > enum roc_nix_fc_mode mode; > int rc =3D -ENOSPC; > @@ -331,18 +350,19 @@ roc_nix_fc_mode_get(struct roc_nix *roc_nix) > /* Flow control on LBK link is always available */ > if (roc_nix_is_lbk(roc_nix)) { > if (nix->tx_pause && nix->rx_pause) > - return ROC_NIX_FC_FULL; > + rc =3D ROC_NIX_FC_FULL; > else if (nix->rx_pause) > - return ROC_NIX_FC_RX; > + rc =3D ROC_NIX_FC_RX; > else if (nix->tx_pause) > - return ROC_NIX_FC_TX; > + rc =3D ROC_NIX_FC_TX; > else > - return ROC_NIX_FC_NONE; > + rc =3D ROC_NIX_FC_NONE; > + goto exit; > } >=20 > req =3D mbox_alloc_msg_cgx_cfg_pause_frm(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->set =3D 0; >=20 > rc =3D mbox_process_msg(mbox, (void *)&rsp); > @@ -360,17 +380,19 @@ roc_nix_fc_mode_get(struct roc_nix *roc_nix) >=20 > nix->rx_pause =3D rsp->rx_pause; > nix->tx_pause =3D rsp->tx_pause; > - return mode; > + rc =3D mode; >=20 > exit: > - return ROC_NIX_FC_NONE; > + mbox_put(mbox); > + return rc; > } >=20 > int > roc_nix_fc_mode_set(struct roc_nix *roc_nix, enum roc_nix_fc_mode mode) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct cgx_pause_frm_cfg *req; > uint8_t tx_pause, rx_pause; > int rc =3D -ENOSPC; > @@ -382,12 +404,13 @@ roc_nix_fc_mode_set(struct roc_nix *roc_nix, enum > roc_nix_fc_mode mode) > if (roc_nix_is_lbk(roc_nix)) { > nix->rx_pause =3D rx_pause; > nix->tx_pause =3D tx_pause; > - return 0; > + rc =3D 0; > + goto exit; > } >=20 > req =3D mbox_alloc_msg_cgx_cfg_pause_frm(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->set =3D 1; > req->rx_pause =3D rx_pause; > req->tx_pause =3D tx_pause; > @@ -400,6 +423,7 @@ roc_nix_fc_mode_set(struct roc_nix *roc_nix, enum > roc_nix_fc_mode mode) > nix->tx_pause =3D tx_pause; >=20 > exit: > + mbox_put(mbox); > return rc; > } >=20 > @@ -421,11 +445,11 @@ roc_nix_fc_npa_bp_cfg(struct roc_nix *roc_nix, uint= 64_t pool_id, > uint8_t ena, >=20 > if (!lf) > return; > - mbox =3D lf->mbox; > + mbox =3D mbox_get(lf->mbox); >=20 > req =3D mbox_alloc_msg_npa_aq_enq(mbox); > if (req =3D=3D NULL) > - return; > + goto exit; >=20 > req->aura_id =3D roc_npa_aura_handle_to_aura(pool_id); > req->ctype =3D NPA_AQ_CTYPE_AURA; > @@ -433,7 +457,7 @@ roc_nix_fc_npa_bp_cfg(struct roc_nix *roc_nix, uint64= _t pool_id, > uint8_t ena, >=20 > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return; > + goto exit; >=20 > limit =3D rsp->aura.limit; > shift =3D rsp->aura.shift; > @@ -454,7 +478,7 @@ roc_nix_fc_npa_bp_cfg(struct roc_nix *roc_nix, uint64= _t pool_id, > uint8_t ena, > !force) { > req =3D mbox_alloc_msg_npa_aq_enq(mbox); > if (req =3D=3D NULL) > - return; > + goto exit; >=20 > plt_info("Disabling BP/FC on aura 0x%" PRIx64 > " as it shared across ports or tc", > @@ -472,16 +496,16 @@ roc_nix_fc_npa_bp_cfg(struct roc_nix *roc_nix, uint= 64_t pool_id, > uint8_t ena, > if ((nix1 !=3D nix->is_nix1) || (bpid !=3D nix->bpid[tc])) > plt_info("Ignoring aura 0x%" PRIx64 "->%u bpid mapping", > pool_id, nix->bpid[tc]); > - return; > + goto exit; > } >=20 > /* BP was previously enabled but now disabled skip. */ > if (rsp->aura.bp && ena) > - return; > + goto exit; >=20 > req =3D mbox_alloc_msg_npa_aq_enq(mbox); > if (req =3D=3D NULL) > - return; > + goto exit; >=20 > req->aura_id =3D roc_npa_aura_handle_to_aura(pool_id); > req->ctype =3D NPA_AQ_CTYPE_AURA; > @@ -506,20 +530,26 @@ roc_nix_fc_npa_bp_cfg(struct roc_nix *roc_nix, uint= 64_t pool_id, > uint8_t ena, > req->aura_mask.bp_ena =3D ~(req->aura_mask.bp_ena); >=20 > mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return; > } >=20 > int > roc_nix_pfc_mode_set(struct roc_nix *roc_nix, struct roc_nix_pfc_cfg *pf= c_cfg) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > uint8_t tx_pause, rx_pause; > struct cgx_pfc_cfg *req; > struct cgx_pfc_rsp *rsp; > int rc =3D -ENOSPC; >=20 > - if (roc_nix_is_lbk(roc_nix)) > - return NIX_ERR_OP_NOTSUP; > + if (roc_nix_is_lbk(roc_nix)) { > + rc =3D NIX_ERR_OP_NOTSUP; > + goto exit; > + } >=20 > rx_pause =3D (pfc_cfg->mode =3D=3D ROC_NIX_FC_FULL) || > (pfc_cfg->mode =3D=3D ROC_NIX_FC_RX); > @@ -546,6 +576,7 @@ roc_nix_pfc_mode_set(struct roc_nix *roc_nix, struct > roc_nix_pfc_cfg *pfc_cfg) > nix->cev &=3D ~BIT(pfc_cfg->tc); >=20 > exit: > + mbox_put(mbox); > return rc; > } >=20 > diff --git a/drivers/common/cnxk/roc_nix_inl.c b/drivers/common/cnxk/roc_= nix_inl.c > index 782536db4c..70b4ae9277 100644 > --- a/drivers/common/cnxk/roc_nix_inl.c > +++ b/drivers/common/cnxk/roc_nix_inl.c > @@ -422,19 +422,19 @@ nix_inl_rq_mask_cfg(struct roc_nix *roc_nix, bool e= nable) > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > struct nix_rq_cpt_field_mask_cfg_req *msk_req; > struct idev_cfg *idev =3D idev_get_cfg(); > - struct mbox *mbox =3D (&nix->dev)->mbox; > + struct mbox *mbox =3D mbox_get((&nix->dev)->mbox); > struct idev_nix_inl_cfg *inl_cfg; > uint64_t aura_handle; > int rc =3D -ENOSPC; > int i; >=20 > if (!idev) > - return rc; > + goto exit; >=20 > inl_cfg =3D &idev->inl_cfg; > msk_req =3D mbox_alloc_msg_nix_lf_inline_rq_cfg(mbox); > if (msk_req =3D=3D NULL) > - return rc; > + goto exit; >=20 > for (i =3D 0; i < RQ_CTX_MASK_MAX; i++) > msk_req->rq_ctx_word_mask[i] =3D 0xFFFFFFFFFFFFFFFF; > @@ -479,7 +479,10 @@ nix_inl_rq_mask_cfg(struct roc_nix *roc_nix, bool en= able) > msk_req->ipsec_cfg1.spb_cpt_sizem1 =3D (inl_cfg->buf_sz >> 7) - 1; > msk_req->ipsec_cfg1.spb_cpt_enable =3D enable; >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > bool > @@ -853,6 +856,7 @@ roc_nix_inl_dev_rq_get(struct roc_nix_rq *rq, bool en= able) > struct nix_inl_dev *inl_dev; > struct roc_nix_rq *inl_rq; > uint16_t inl_rq_id; > + struct mbox *mbox; > struct dev *dev; > int rc; >=20 > @@ -950,20 +954,24 @@ roc_nix_inl_dev_rq_get(struct roc_nix_rq *rq, bool = enable) > inl_rq->sso_ena =3D true; >=20 > /* Prepare and send RQ init mbox */ > + mbox =3D mbox_get(dev->mbox); > if (roc_model_is_cn9k()) > rc =3D nix_rq_cn9k_cfg(dev, inl_rq, inl_dev->qints, false, enable); > else > rc =3D nix_rq_cfg(dev, inl_rq, inl_dev->qints, false, enable); > if (rc) { > plt_err("Failed to prepare aq_enq msg, rc=3D%d", rc); > + mbox_put(mbox); > return rc; > } >=20 > rc =3D mbox_process(dev->mbox); > if (rc) { > plt_err("Failed to send aq_enq msg, rc=3D%d", rc); > + mbox_put(mbox); > return rc; > } > + mbox_put(mbox); >=20 > /* Check meta aura */ > if (enable && nix->need_meta_aura) { > diff --git a/drivers/common/cnxk/roc_nix_inl_dev.c > b/drivers/common/cnxk/roc_nix_inl_dev.c > index c3d94dd0da..a4a50bc423 100644 > --- a/drivers/common/cnxk/roc_nix_inl_dev.c > +++ b/drivers/common/cnxk/roc_nix_inl_dev.c > @@ -111,27 +111,36 @@ nix_inl_selftest(void) > static int > nix_inl_cpt_ctx_cache_sync(struct nix_inl_dev *inl_dev) > { > - struct mbox *mbox =3D (&inl_dev->dev)->mbox; > + struct mbox *mbox =3D mbox_get((&inl_dev->dev)->mbox); > struct msg_req *req; > + int rc; >=20 > req =3D mbox_alloc_msg_cpt_ctx_cache_sync(mbox); > - if (req =3D=3D NULL) > - return -ENOSPC; > + if (req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > static int > nix_inl_nix_ipsec_cfg(struct nix_inl_dev *inl_dev, bool ena) > { > struct nix_inline_ipsec_lf_cfg *lf_cfg; > - struct mbox *mbox =3D (&inl_dev->dev)->mbox; > + struct mbox *mbox =3D mbox_get((&inl_dev->dev)->mbox); > uint64_t max_sa; > uint32_t sa_w; > + int rc; >=20 > lf_cfg =3D mbox_alloc_msg_nix_inline_ipsec_lf_cfg(mbox); > - if (lf_cfg =3D=3D NULL) > - return -ENOSPC; > + if (lf_cfg =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > if (ena) { >=20 > @@ -156,7 +165,10 @@ nix_inl_nix_ipsec_cfg(struct nix_inl_dev *inl_dev, b= ool ena) > lf_cfg->enable =3D 0; > } >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > static int > @@ -343,9 +355,11 @@ nix_inl_nix_setup(struct nix_inl_dev *inl_dev) > max_sa =3D plt_align32pow2(ipsec_in_max_spi - ipsec_in_min_spi + 1); >=20 > /* Alloc NIX LF needed for single RQ */ > - req =3D mbox_alloc_msg_nix_lf_alloc(mbox); > - if (req =3D=3D NULL) > + req =3D mbox_alloc_msg_nix_lf_alloc(mbox_get(mbox)); > + if (req =3D=3D NULL) { > + mbox_put(mbox); > return rc; > + } > /* We will have per-port RQ if it is not with channel masking */ > req->rq_cnt =3D inl_dev->nb_rqs; > req->sq_cnt =3D 1; > @@ -366,6 +380,7 @@ nix_inl_nix_setup(struct nix_inl_dev *inl_dev) > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) { > plt_err("Failed to alloc lf, rc=3D%d", rc); > + mbox_put(mbox); > return rc; > } >=20 > @@ -373,16 +388,19 @@ nix_inl_nix_setup(struct nix_inl_dev *inl_dev) > inl_dev->lf_rx_stats =3D rsp->lf_rx_stats; > inl_dev->qints =3D rsp->qints; > inl_dev->cints =3D rsp->cints; > + mbox_put(mbox); >=20 > /* Get VWQE info if supported */ > if (roc_model_is_cn10k()) { > - mbox_alloc_msg_nix_get_hw_info(mbox); > + mbox_alloc_msg_nix_get_hw_info(mbox_get(mbox)); > rc =3D mbox_process_msg(mbox, (void *)&hw_info); > if (rc) { > plt_err("Failed to get HW info, rc=3D%d", rc); > + mbox_put(mbox); > goto lf_free; > } > inl_dev->vwqe_interval =3D hw_info->vwqe_delay; > + mbox_put(mbox); > } >=20 > /* Register nix interrupts */ > @@ -438,8 +456,9 @@ nix_inl_nix_setup(struct nix_inl_dev *inl_dev) > unregister_irqs: > nix_inl_nix_unregister_irqs(inl_dev); > lf_free: > - mbox_alloc_msg_nix_lf_free(mbox); > + mbox_alloc_msg_nix_lf_free(mbox_get(mbox)); > rc |=3D mbox_process(mbox); > + mbox_put(mbox); > return rc; > } >=20 > @@ -458,25 +477,33 @@ nix_inl_nix_release(struct nix_inl_dev *inl_dev) > plt_err("Failed to disable Inbound IPSec, rc=3D%d", rc); >=20 > /* Sync NDC-NIX for LF */ > - ndc_req =3D mbox_alloc_msg_ndc_sync_op(mbox); > - if (ndc_req =3D=3D NULL) > + ndc_req =3D mbox_alloc_msg_ndc_sync_op(mbox_get(mbox)); > + if (ndc_req =3D=3D NULL) { > + mbox_put(mbox); > return rc; > + } > ndc_req->nix_lf_rx_sync =3D 1; > rc =3D mbox_process(mbox); > if (rc) > plt_err("Error on NDC-NIX-RX LF sync, rc %d", rc); > + mbox_put(mbox); >=20 > /* Unregister IRQs */ > nix_inl_nix_unregister_irqs(inl_dev); >=20 > /* By default all associated mcam rules are deleted */ > - req =3D mbox_alloc_msg_nix_lf_free(mbox); > - if (req =3D=3D NULL) > + req =3D mbox_alloc_msg_nix_lf_free(mbox_get(mbox)); > + if (req =3D=3D NULL) { > + mbox_put(mbox); > return -ENOSPC; > + } >=20 > rc =3D mbox_process(mbox); > - if (rc) > + if (rc) { > + mbox_put(mbox); > return rc; > + } > + mbox_put(mbox); >=20 > plt_free(inl_dev->rqs); > plt_free(inl_dev->inb_sa_base); > @@ -490,14 +517,14 @@ nix_inl_lf_attach(struct nix_inl_dev *inl_dev) > { > struct msix_offset_rsp *msix_rsp; > struct dev *dev =3D &inl_dev->dev; > - struct mbox *mbox =3D dev->mbox; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct rsrc_attach_req *req; > uint64_t nix_blkaddr; > int rc =3D -ENOSPC; >=20 > req =3D mbox_alloc_msg_attach_resources(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->modify =3D true; > /* Attach 1 NIXLF, SSO HWS and SSO HWGRP */ > req->nixlf =3D true; > @@ -510,13 +537,13 @@ nix_inl_lf_attach(struct nix_inl_dev *inl_dev) >=20 > rc =3D mbox_process(dev->mbox); > if (rc) > - return rc; > + goto exit; >=20 > /* Get MSIX vector offsets */ > mbox_alloc_msg_msix_offset(mbox); > rc =3D mbox_process_msg(dev->mbox, (void **)&msix_rsp); > if (rc) > - return rc; > + goto exit; >=20 > inl_dev->nix_msixoff =3D msix_rsp->nix_msixoff; > inl_dev->ssow_msixoff =3D msix_rsp->ssow_msixoff[0]; > @@ -532,27 +559,33 @@ nix_inl_lf_attach(struct nix_inl_dev *inl_dev) > inl_dev->sso_base =3D dev->bar2 + (RVU_BLOCK_ADDR_SSO << 20); > inl_dev->cpt_base =3D dev->bar2 + (RVU_BLOCK_ADDR_CPT0 << 20); >=20 > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > static int > nix_inl_lf_detach(struct nix_inl_dev *inl_dev) > { > struct dev *dev =3D &inl_dev->dev; > - struct mbox *mbox =3D dev->mbox; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct rsrc_detach_req *req; > int rc =3D -ENOSPC; >=20 > req =3D mbox_alloc_msg_detach_resources(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->partial =3D true; > req->nixlf =3D true; > req->ssow =3D true; > req->sso =3D true; > req->cptlfs =3D !!inl_dev->attach_cptlf; >=20 > - return mbox_process(dev->mbox); > + rc =3D mbox_process(dev->mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > static int > diff --git a/drivers/common/cnxk/roc_nix_mac.c b/drivers/common/cnxk/roc_= nix_mac.c > index 36259941c9..ac30fb52d1 100644 > --- a/drivers/common/cnxk/roc_nix_mac.c > +++ b/drivers/common/cnxk/roc_nix_mac.c > @@ -5,82 +5,104 @@ > #include "roc_api.h" > #include "roc_priv.h" >=20 > -static inline struct mbox * > -nix_to_mbox(struct nix *nix) > -{ > - struct dev *dev =3D &nix->dev; > - > - return dev->mbox; > -} > - > int > roc_nix_mac_rxtx_start_stop(struct roc_nix *roc_nix, bool start) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct mbox *mbox =3D nix_to_mbox(nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > + int rc; >=20 > - if (roc_nix_is_vf_or_sdp(roc_nix)) > - return NIX_ERR_OP_NOTSUP; > + if (roc_nix_is_vf_or_sdp(roc_nix)) { > + rc =3D NIX_ERR_OP_NOTSUP; > + goto exit; > + } >=20 > if (start) > mbox_alloc_msg_cgx_start_rxtx(mbox); > else > mbox_alloc_msg_cgx_stop_rxtx(mbox); >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > roc_nix_mac_link_event_start_stop(struct roc_nix *roc_nix, bool start) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct mbox *mbox =3D nix_to_mbox(nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > + int rc; >=20 > - if (roc_nix_is_vf_or_sdp(roc_nix)) > - return NIX_ERR_OP_NOTSUP; > + if (roc_nix_is_vf_or_sdp(roc_nix)) { > + rc =3D NIX_ERR_OP_NOTSUP; > + goto exit; > + } >=20 > if (start) > mbox_alloc_msg_cgx_start_linkevents(mbox); > else > mbox_alloc_msg_cgx_stop_linkevents(mbox); >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > roc_nix_mac_loopback_enable(struct roc_nix *roc_nix, bool enable) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct mbox *mbox =3D nix_to_mbox(nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > + int rc; >=20 > - if (enable && roc_nix_is_vf_or_sdp(roc_nix)) > - return NIX_ERR_OP_NOTSUP; > + if (enable && roc_nix_is_vf_or_sdp(roc_nix)) { > + rc =3D NIX_ERR_OP_NOTSUP; > + goto exit; > + } >=20 > if (enable) > mbox_alloc_msg_cgx_intlbk_enable(mbox); > else > mbox_alloc_msg_cgx_intlbk_disable(mbox); >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > roc_nix_mac_addr_set(struct roc_nix *roc_nix, const uint8_t addr[]) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct mbox *mbox =3D nix_to_mbox(nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct cgx_mac_addr_set_or_get *req; > + int rc; >=20 > - if (roc_nix_is_vf_or_sdp(roc_nix)) > - return NIX_ERR_OP_NOTSUP; > + if (roc_nix_is_vf_or_sdp(roc_nix)) { > + rc =3D NIX_ERR_OP_NOTSUP; > + goto exit; > + } >=20 > - if (dev_active_vfs(&nix->dev)) > - return NIX_ERR_OP_NOTSUP; > + if (dev_active_vfs(&nix->dev)) { > + rc =3D NIX_ERR_OP_NOTSUP; > + goto exit; > + } >=20 > req =3D mbox_alloc_msg_cgx_mac_addr_set(mbox); > mbox_memcpy(req->mac_addr, addr, PLT_ETHER_ADDR_LEN); >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -88,79 +110,106 @@ roc_nix_mac_max_entries_get(struct roc_nix *roc_nix= ) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > struct cgx_max_dmac_entries_get_rsp *rsp; > - struct mbox *mbox =3D nix_to_mbox(nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > int rc; >=20 > - if (roc_nix_is_vf_or_sdp(roc_nix)) > - return NIX_ERR_OP_NOTSUP; > + if (roc_nix_is_vf_or_sdp(roc_nix)) { > + rc =3D NIX_ERR_OP_NOTSUP; > + goto exit; > + } >=20 > mbox_alloc_msg_cgx_mac_max_entries_get(mbox); > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; >=20 > - return rsp->max_dmac_filters ? rsp->max_dmac_filters : 1; > + rc =3D rsp->max_dmac_filters ? rsp->max_dmac_filters : 1; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > roc_nix_mac_addr_add(struct roc_nix *roc_nix, uint8_t addr[]) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct mbox *mbox =3D nix_to_mbox(nix); > struct cgx_mac_addr_add_req *req; > struct cgx_mac_addr_add_rsp *rsp; > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > int rc; >=20 > - if (roc_nix_is_vf_or_sdp(roc_nix)) > - return NIX_ERR_OP_NOTSUP; > + if (roc_nix_is_vf_or_sdp(roc_nix)) { > + rc =3D NIX_ERR_OP_NOTSUP; > + goto exit; > + } >=20 > - if (dev_active_vfs(&nix->dev)) > - return NIX_ERR_OP_NOTSUP; > + if (dev_active_vfs(&nix->dev)) { > + rc =3D NIX_ERR_OP_NOTSUP; > + goto exit; > + } >=20 > req =3D mbox_alloc_msg_cgx_mac_addr_add(mbox); > mbox_memcpy(req->mac_addr, addr, PLT_ETHER_ADDR_LEN); >=20 > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc < 0) > - return rc; > + goto exit; >=20 > - return rsp->index; > + rc =3D rsp->index; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > roc_nix_mac_addr_del(struct roc_nix *roc_nix, uint32_t index) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct mbox *mbox =3D nix_to_mbox(nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct cgx_mac_addr_del_req *req; > int rc =3D -ENOSPC; >=20 > - if (roc_nix_is_vf_or_sdp(roc_nix)) > - return NIX_ERR_OP_NOTSUP; > + if (roc_nix_is_vf_or_sdp(roc_nix)) { > + rc =3D NIX_ERR_OP_NOTSUP; > + goto exit; > + } >=20 > req =3D mbox_alloc_msg_cgx_mac_addr_del(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->index =3D index; >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > roc_nix_mac_promisc_mode_enable(struct roc_nix *roc_nix, int enable) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct mbox *mbox =3D nix_to_mbox(nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > + int rc; >=20 > - if (roc_nix_is_vf_or_sdp(roc_nix)) > - return NIX_ERR_OP_NOTSUP; > + if (roc_nix_is_vf_or_sdp(roc_nix)) { > + rc =3D NIX_ERR_OP_NOTSUP; > + goto exit; > + } >=20 > if (enable) > mbox_alloc_msg_cgx_promisc_enable(mbox); > else > mbox_alloc_msg_cgx_promisc_disable(mbox); >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -168,14 +217,15 @@ roc_nix_mac_link_info_get(struct roc_nix *roc_nix, > struct roc_nix_link_info *link_info) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct mbox *mbox =3D nix_to_mbox(nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct cgx_link_info_msg *rsp; > int rc; >=20 > mbox_alloc_msg_cgx_get_linkinfo(mbox); > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; >=20 > link_info->status =3D rsp->link_info.link_up; > link_info->full_duplex =3D rsp->link_info.full_duplex; > @@ -185,22 +235,29 @@ roc_nix_mac_link_info_get(struct roc_nix *roc_nix, > link_info->fec =3D rsp->link_info.fec; > link_info->port =3D rsp->link_info.port; >=20 > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > roc_nix_mac_link_state_set(struct roc_nix *roc_nix, uint8_t up) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct mbox *mbox =3D nix_to_mbox(nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct cgx_set_link_state_msg *req; > int rc =3D -ENOSPC; >=20 > req =3D mbox_alloc_msg_cgx_set_link_state(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->enable =3D up; > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -208,29 +265,37 @@ roc_nix_mac_link_info_set(struct roc_nix *roc_nix, > struct roc_nix_link_info *link_info) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct mbox *mbox =3D nix_to_mbox(nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct cgx_set_link_mode_req *req; > int rc; >=20 > rc =3D roc_nix_mac_link_state_set(roc_nix, link_info->status); > if (rc) > - return rc; > + goto exit; >=20 > req =3D mbox_alloc_msg_cgx_set_link_mode(mbox); > - if (req =3D=3D NULL) > - return -ENOSPC; > + if (req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } > req->args.speed =3D link_info->speed; > req->args.duplex =3D link_info->full_duplex; > req->args.an =3D link_info->autoneg; >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > + > } >=20 > int > roc_nix_mac_mtu_set(struct roc_nix *roc_nix, uint16_t mtu) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct mbox *mbox =3D nix_to_mbox(nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct nix_frs_cfg *req; > bool sdp_link =3D false; > int rc =3D -ENOSPC; > @@ -240,25 +305,29 @@ roc_nix_mac_mtu_set(struct roc_nix *roc_nix, uint16= _t mtu) >=20 > req =3D mbox_alloc_msg_nix_set_hw_frs(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->maxlen =3D mtu; > req->update_smq =3D true; > req->sdp_link =3D sdp_link; >=20 > rc =3D mbox_process(mbox); > if (rc) > - return rc; > + goto exit; >=20 > /* Save MTU for later use */ > nix->mtu =3D mtu; > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > roc_nix_mac_max_rx_len_set(struct roc_nix *roc_nix, uint16_t maxlen) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct mbox *mbox =3D nix_to_mbox(nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct nix_frs_cfg *req; > bool sdp_link =3D false; > int rc =3D -ENOSPC; > @@ -268,11 +337,14 @@ roc_nix_mac_max_rx_len_set(struct roc_nix *roc_nix,= uint16_t > maxlen) >=20 > req =3D mbox_alloc_msg_nix_set_hw_frs(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->sdp_link =3D sdp_link; > req->maxlen =3D maxlen; >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > diff --git a/drivers/common/cnxk/roc_nix_mcast.c > b/drivers/common/cnxk/roc_nix_mcast.c > index 87d083ebb3..3d74111274 100644 > --- a/drivers/common/cnxk/roc_nix_mcast.c > +++ b/drivers/common/cnxk/roc_nix_mcast.c > @@ -5,53 +5,54 @@ > #include "roc_api.h" > #include "roc_priv.h" >=20 > -static inline struct mbox * > -get_mbox(struct roc_nix *roc_nix) > -{ > - struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct dev *dev =3D &nix->dev; > - > - return dev->mbox; > -} > - > int > roc_nix_mcast_mcam_entry_alloc(struct roc_nix *roc_nix, uint16_t nb_entr= ies, > uint8_t priority, uint16_t index[]) > { > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct npc_mcam_alloc_entry_req *req; > struct npc_mcam_alloc_entry_rsp *rsp; > int rc =3D -ENOSPC, i; >=20 > req =3D mbox_alloc_msg_npc_mcam_alloc_entry(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->priority =3D priority; > req->count =3D nb_entries; >=20 > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; >=20 > for (i =3D 0; i < rsp->count; i++) > index[i] =3D rsp->entry_list[i]; >=20 > - return rsp->count; > + rc =3D rsp->count; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > roc_nix_mcast_mcam_entry_free(struct roc_nix *roc_nix, uint32_t index) > { > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct npc_mcam_free_entry_req *req; > int rc =3D -ENOSPC; >=20 > req =3D mbox_alloc_msg_npc_mcam_free_entry(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->entry =3D index; >=20 > - return mbox_process_msg(mbox, NULL); > + rc =3D mbox_process_msg(mbox, NULL); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -59,20 +60,25 @@ roc_nix_mcast_mcam_entry_write(struct roc_nix *roc_ni= x, > struct mcam_entry *entry, uint32_t index, > uint8_t intf, uint64_t action) > { > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct npc_mcam_write_entry_req *req; > int rc =3D -ENOSPC; >=20 > req =3D mbox_alloc_msg_npc_mcam_write_entry(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->entry =3D index; > req->intf =3D intf; > req->enable_entry =3D true; > mbox_memcpy(&req->entry_data, entry, sizeof(struct mcam_entry)); > req->entry_data.action =3D action; >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -80,19 +86,24 @@ roc_nix_mcast_mcam_entry_ena_dis(struct roc_nix *roc_= nix, > uint32_t index, > bool enable) > { > struct npc_mcam_ena_dis_entry_req *req; > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > int rc =3D -ENOSPC; >=20 > if (enable) { > req =3D mbox_alloc_msg_npc_mcam_ena_entry(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > } else { > req =3D mbox_alloc_msg_npc_mcam_dis_entry(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > } >=20 > req->entry =3D index; > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } > diff --git a/drivers/common/cnxk/roc_nix_npc.c b/drivers/common/cnxk/roc_= nix_npc.c > index ad8839dde8..8c4a5753ee 100644 > --- a/drivers/common/cnxk/roc_nix_npc.c > +++ b/drivers/common/cnxk/roc_nix_npc.c > @@ -5,66 +5,76 @@ > #include "roc_api.h" > #include "roc_priv.h" >=20 > -static inline struct mbox * > -get_mbox(struct roc_nix *roc_nix) > -{ > - struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct dev *dev =3D &nix->dev; > - > - return dev->mbox; > -} > - > int > roc_nix_npc_promisc_ena_dis(struct roc_nix *roc_nix, int enable) > { > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct nix_rx_mode *req; > int rc =3D -ENOSPC; >=20 > - if (roc_nix_is_vf_or_sdp(roc_nix)) > - return NIX_ERR_PARAM; > + if (roc_nix_is_vf_or_sdp(roc_nix)) { > + rc =3D NIX_ERR_PARAM; > + goto exit; > + } >=20 > req =3D mbox_alloc_msg_nix_set_rx_mode(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; >=20 > if (enable) > req->mode =3D NIX_RX_MODE_UCAST | NIX_RX_MODE_PROMISC; >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > roc_nix_npc_mac_addr_set(struct roc_nix *roc_nix, uint8_t addr[]) > { > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct nix_set_mac_addr *req; > + int rc; >=20 > req =3D mbox_alloc_msg_nix_set_mac_addr(mbox); > mbox_memcpy(req->mac_addr, addr, PLT_ETHER_ADDR_LEN); > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > + mbox_put(mbox); > + return rc; > } >=20 > int > roc_nix_npc_mac_addr_get(struct roc_nix *roc_nix, uint8_t *addr) > { > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct nix_get_mac_addr_rsp *rsp; > int rc; >=20 > mbox_alloc_msg_nix_get_mac_addr(mbox); > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; >=20 > mbox_memcpy(addr, rsp->mac_addr, PLT_ETHER_ADDR_LEN); > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > roc_nix_npc_rx_ena_dis(struct roc_nix *roc_nix, bool enable) > { > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > int rc; >=20 > if (enable) > @@ -75,6 +85,8 @@ roc_nix_npc_rx_ena_dis(struct roc_nix *roc_nix, bool en= able) > rc =3D mbox_process(mbox); > if (!rc) > roc_nix->io_enabled =3D enable; > + > + mbox_put(mbox); > return rc; > } >=20 > @@ -83,21 +95,28 @@ roc_nix_npc_mcast_config(struct roc_nix *roc_nix, boo= l > mcast_enable, > bool prom_enable) >=20 > { > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct nix_rx_mode *req; > int rc =3D -ENOSPC; >=20 > - if (roc_nix_is_vf_or_sdp(roc_nix)) > - return 0; > + if (roc_nix_is_vf_or_sdp(roc_nix)) { > + rc =3D 0; > + goto exit; > + } >=20 > req =3D mbox_alloc_msg_nix_set_rx_mode(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; >=20 > if (mcast_enable) > req->mode =3D NIX_RX_MODE_ALLMULTI; > if (prom_enable) > req->mode =3D NIX_RX_MODE_PROMISC; >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } > diff --git a/drivers/common/cnxk/roc_nix_ops.c b/drivers/common/cnxk/roc_= nix_ops.c > index 8d3cddf2a6..fc7a955fc1 100644 > --- a/drivers/common/cnxk/roc_nix_ops.c > +++ b/drivers/common/cnxk/roc_nix_ops.c > @@ -5,15 +5,6 @@ > #include "roc_api.h" > #include "roc_priv.h" >=20 > -static inline struct mbox * > -get_mbox(struct roc_nix *roc_nix) > -{ > - struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct dev *dev =3D &nix->dev; > - > - return dev->mbox; > -} > - > static void > nix_lso_tcp(struct nix_lso_format_cfg *req, bool v4) > { > @@ -172,17 +163,21 @@ int > roc_nix_lso_custom_fmt_setup(struct roc_nix *roc_nix, > struct nix_lso_format *fields, uint16_t nb_fields) > { > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct nix_lso_format_cfg_rsp *rsp; > struct nix_lso_format_cfg *req; > int rc =3D -ENOSPC; >=20 > - if (nb_fields > NIX_LSO_FIELD_MAX) > - return -EINVAL; > + if (nb_fields > NIX_LSO_FIELD_MAX) { > + rc =3D -EINVAL; > + goto exit; > + } >=20 > req =3D mbox_alloc_msg_nix_lso_format_cfg(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; >=20 > req->field_mask =3D NIX_LSO_FIELD_MASK; > mbox_memcpy(req->fields, fields, > @@ -190,17 +185,21 @@ roc_nix_lso_custom_fmt_setup(struct roc_nix *roc_ni= x, >=20 > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; >=20 > plt_nix_dbg("Setup custom format %u", rsp->lso_format_idx); > - return rsp->lso_format_idx; > + rc =3D rsp->lso_format_idx; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > roc_nix_lso_fmt_setup(struct roc_nix *roc_nix) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct nix_lso_format_cfg_rsp *rsp; > struct nix_lso_format_cfg *req; > int rc =3D -ENOSPC; > @@ -210,14 +209,16 @@ roc_nix_lso_fmt_setup(struct roc_nix *roc_nix) > */ > req =3D mbox_alloc_msg_nix_lso_format_cfg(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > nix_lso_tcp(req, true); > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; >=20 > - if (rsp->lso_format_idx !=3D NIX_LSO_FORMAT_IDX_TSOV4) > - return NIX_ERR_INTERNAL; > + if (rsp->lso_format_idx !=3D NIX_LSO_FORMAT_IDX_TSOV4) { > + rc =3D NIX_ERR_INTERNAL; > + goto exit; > + } >=20 > plt_nix_dbg("tcpv4 lso fmt=3D%u\n", rsp->lso_format_idx); >=20 > @@ -225,15 +226,19 @@ roc_nix_lso_fmt_setup(struct roc_nix *roc_nix) > * IPv6/TCP LSO > */ > req =3D mbox_alloc_msg_nix_lso_format_cfg(mbox); > - if (req =3D=3D NULL) > - return -ENOSPC; > + if (req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } > nix_lso_tcp(req, false); > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; >=20 > - if (rsp->lso_format_idx !=3D NIX_LSO_FORMAT_IDX_TSOV6) > - return NIX_ERR_INTERNAL; > + if (rsp->lso_format_idx !=3D NIX_LSO_FORMAT_IDX_TSOV6) { > + rc =3D NIX_ERR_INTERNAL; > + goto exit; > + } >=20 > plt_nix_dbg("tcpv6 lso fmt=3D%u\n", rsp->lso_format_idx); >=20 > @@ -241,12 +246,14 @@ roc_nix_lso_fmt_setup(struct roc_nix *roc_nix) > * IPv4/UDP/TUN HDR/IPv4/TCP LSO > */ > req =3D mbox_alloc_msg_nix_lso_format_cfg(mbox); > - if (req =3D=3D NULL) > - return -ENOSPC; > + if (req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } > nix_lso_udp_tun_tcp(req, true, true); > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; >=20 > nix->lso_udp_tun_idx[ROC_NIX_LSO_TUN_V4V4] =3D rsp->lso_format_idx; > plt_nix_dbg("udp tun v4v4 fmt=3D%u\n", rsp->lso_format_idx); > @@ -255,12 +262,14 @@ roc_nix_lso_fmt_setup(struct roc_nix *roc_nix) > * IPv4/UDP/TUN HDR/IPv6/TCP LSO > */ > req =3D mbox_alloc_msg_nix_lso_format_cfg(mbox); > - if (req =3D=3D NULL) > - return -ENOSPC; > + if (req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } > nix_lso_udp_tun_tcp(req, true, false); > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; >=20 > nix->lso_udp_tun_idx[ROC_NIX_LSO_TUN_V4V6] =3D rsp->lso_format_idx; > plt_nix_dbg("udp tun v4v6 fmt=3D%u\n", rsp->lso_format_idx); > @@ -269,12 +278,14 @@ roc_nix_lso_fmt_setup(struct roc_nix *roc_nix) > * IPv6/UDP/TUN HDR/IPv4/TCP LSO > */ > req =3D mbox_alloc_msg_nix_lso_format_cfg(mbox); > - if (req =3D=3D NULL) > - return -ENOSPC; > + if (req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } > nix_lso_udp_tun_tcp(req, false, true); > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; >=20 > nix->lso_udp_tun_idx[ROC_NIX_LSO_TUN_V6V4] =3D rsp->lso_format_idx; > plt_nix_dbg("udp tun v6v4 fmt=3D%u\n", rsp->lso_format_idx); > @@ -283,12 +294,14 @@ roc_nix_lso_fmt_setup(struct roc_nix *roc_nix) > * IPv6/UDP/TUN HDR/IPv6/TCP LSO > */ > req =3D mbox_alloc_msg_nix_lso_format_cfg(mbox); > - if (req =3D=3D NULL) > - return -ENOSPC; > + if (req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } > nix_lso_udp_tun_tcp(req, false, false); > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; >=20 > nix->lso_udp_tun_idx[ROC_NIX_LSO_TUN_V6V6] =3D rsp->lso_format_idx; > plt_nix_dbg("udp tun v6v6 fmt=3D%u\n", rsp->lso_format_idx); > @@ -297,12 +310,14 @@ roc_nix_lso_fmt_setup(struct roc_nix *roc_nix) > * IPv4/TUN HDR/IPv4/TCP LSO > */ > req =3D mbox_alloc_msg_nix_lso_format_cfg(mbox); > - if (req =3D=3D NULL) > - return -ENOSPC; > + if (req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } > nix_lso_tun_tcp(req, true, true); > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; >=20 > nix->lso_tun_idx[ROC_NIX_LSO_TUN_V4V4] =3D rsp->lso_format_idx; > plt_nix_dbg("tun v4v4 fmt=3D%u\n", rsp->lso_format_idx); > @@ -311,12 +326,14 @@ roc_nix_lso_fmt_setup(struct roc_nix *roc_nix) > * IPv4/TUN HDR/IPv6/TCP LSO > */ > req =3D mbox_alloc_msg_nix_lso_format_cfg(mbox); > - if (req =3D=3D NULL) > - return -ENOSPC; > + if (req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } > nix_lso_tun_tcp(req, true, false); > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; >=20 > nix->lso_tun_idx[ROC_NIX_LSO_TUN_V4V6] =3D rsp->lso_format_idx; > plt_nix_dbg("tun v4v6 fmt=3D%u\n", rsp->lso_format_idx); > @@ -325,12 +342,14 @@ roc_nix_lso_fmt_setup(struct roc_nix *roc_nix) > * IPv6/TUN HDR/IPv4/TCP LSO > */ > req =3D mbox_alloc_msg_nix_lso_format_cfg(mbox); > - if (req =3D=3D NULL) > - return -ENOSPC; > + if (req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } > nix_lso_tun_tcp(req, false, true); > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; >=20 > nix->lso_tun_idx[ROC_NIX_LSO_TUN_V6V4] =3D rsp->lso_format_idx; > plt_nix_dbg("tun v6v4 fmt=3D%u\n", rsp->lso_format_idx); > @@ -339,16 +358,22 @@ roc_nix_lso_fmt_setup(struct roc_nix *roc_nix) > * IPv6/TUN HDR/IPv6/TCP LSO > */ > req =3D mbox_alloc_msg_nix_lso_format_cfg(mbox); > - if (req =3D=3D NULL) > - return -ENOSPC; > + if (req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } > + goto exit; [Nithin] Please remove this extra goto statement > nix_lso_tun_tcp(req, false, false); > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; >=20 > nix->lso_tun_idx[ROC_NIX_LSO_TUN_V6V6] =3D rsp->lso_format_idx; > plt_nix_dbg("tun v6v6 fmt=3D%u\n", rsp->lso_format_idx); > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -369,7 +394,9 @@ roc_nix_switch_hdr_set(struct roc_nix *roc_nix, uint6= 4_t > switch_header_type, > uint8_t pre_l2_size_offset_mask, > uint8_t pre_l2_size_shift_dir) > { > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct npc_set_pkind *req; > struct msg_resp *rsp; > int rc =3D -ENOSPC; > @@ -386,24 +413,27 @@ roc_nix_switch_hdr_set(struct roc_nix *roc_nix, uin= t64_t > switch_header_type, > switch_header_type !=3D ROC_PRIV_FLAGS_PRE_L2 && > switch_header_type !=3D ROC_PRIV_FLAGS_CUSTOM) { > plt_err("switch header type is not supported"); > - return NIX_ERR_PARAM; > + rc =3D NIX_ERR_PARAM; > + goto exit; > } >=20 > if (switch_header_type =3D=3D ROC_PRIV_FLAGS_LEN_90B && > !roc_nix_is_sdp(roc_nix)) { > plt_err("chlen90b is not supported on non-SDP device"); > - return NIX_ERR_PARAM; > + rc =3D NIX_ERR_PARAM; > + goto exit; > } >=20 > if (switch_header_type =3D=3D ROC_PRIV_FLAGS_HIGIG && > roc_nix_is_vf_or_sdp(roc_nix)) { > plt_err("higig2 is supported on PF devices only"); > - return NIX_ERR_PARAM; > + rc =3D NIX_ERR_PARAM; > + goto exit; > } >=20 > req =3D mbox_alloc_msg_npc_set_pkind(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->mode =3D switch_header_type; >=20 > if (switch_header_type =3D=3D ROC_PRIV_FLAGS_LEN_90B) { > @@ -426,56 +456,70 @@ roc_nix_switch_hdr_set(struct roc_nix *roc_nix, uin= t64_t > switch_header_type, > req->dir =3D PKIND_RX; > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; >=20 > req =3D mbox_alloc_msg_npc_set_pkind(mbox); > - if (req =3D=3D NULL) > - return -ENOSPC; > + if (req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } > req->mode =3D switch_header_type; > req->dir =3D PKIND_TX; > - return mbox_process_msg(mbox, (void *)&rsp); > + rc =3D mbox_process_msg(mbox, (void *)&rsp); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > roc_nix_eeprom_info_get(struct roc_nix *roc_nix, > struct roc_nix_eeprom_info *info) > { > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct cgx_fw_data *rsp =3D NULL; > int rc; >=20 > if (!info) { > plt_err("Input buffer is NULL"); > - return NIX_ERR_PARAM; > + rc =3D NIX_ERR_PARAM; > + goto exit; > } >=20 > mbox_alloc_msg_cgx_get_aux_link_info(mbox); > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) { > plt_err("Failed to get fw data: %d", rc); > - return rc; > + goto exit; > } >=20 > info->sff_id =3D rsp->fwdata.sfp_eeprom.sff_id; > mbox_memcpy(info->buf, rsp->fwdata.sfp_eeprom.buf, SFP_EEPROM_SIZE); > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > roc_nix_rx_drop_re_set(struct roc_nix *roc_nix, bool ena) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct nix_rx_cfg *req; > int rc =3D -EIO; >=20 > /* No-op if no change */ > - if (ena =3D=3D !!(nix->rx_cfg & ROC_NIX_LF_RX_CFG_DROP_RE)) > - return 0; > + if (ena =3D=3D !!(nix->rx_cfg & ROC_NIX_LF_RX_CFG_DROP_RE)) { > + rc =3D 0; > + goto exit; > + } >=20 > req =3D mbox_alloc_msg_nix_set_rx_cfg(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; >=20 > if (ena) > req->len_verify |=3D NIX_RX_DROP_RE; > @@ -491,11 +535,14 @@ roc_nix_rx_drop_re_set(struct roc_nix *roc_nix, boo= l ena) >=20 > rc =3D mbox_process(mbox); > if (rc) > - return rc; > + goto exit; >=20 > if (ena) > nix->rx_cfg |=3D ROC_NIX_LF_RX_CFG_DROP_RE; > else > nix->rx_cfg &=3D ~ROC_NIX_LF_RX_CFG_DROP_RE; > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } > diff --git a/drivers/common/cnxk/roc_nix_ptp.c b/drivers/common/cnxk/roc_= nix_ptp.c > index 05e4211de9..187e6c8d4f 100644 > --- a/drivers/common/cnxk/roc_nix_ptp.c > +++ b/drivers/common/cnxk/roc_nix_ptp.c > @@ -7,64 +7,73 @@ >=20 > #define PTP_FREQ_ADJUST (1 << 9) >=20 > -static inline struct mbox * > -get_mbox(struct roc_nix *roc_nix) > -{ > - struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct dev *dev =3D &nix->dev; > - > - return dev->mbox; > -} > - > int > roc_nix_ptp_rx_ena_dis(struct roc_nix *roc_nix, int enable) > { > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > + int rc; >=20 > - if (roc_nix_is_vf_or_sdp(roc_nix) || roc_nix_is_lbk(roc_nix)) > - return NIX_ERR_PARAM; > + if (roc_nix_is_vf_or_sdp(roc_nix) || roc_nix_is_lbk(roc_nix)) { > + rc =3D NIX_ERR_PARAM; > + goto exit; > + } >=20 > if (enable) > mbox_alloc_msg_cgx_ptp_rx_enable(mbox); > else > mbox_alloc_msg_cgx_ptp_rx_disable(mbox); >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > roc_nix_ptp_tx_ena_dis(struct roc_nix *roc_nix, int enable) > { > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > + int rc; >=20 > - if (roc_nix_is_vf_or_sdp(roc_nix) || roc_nix_is_lbk(roc_nix)) > - return NIX_ERR_PARAM; > + if (roc_nix_is_vf_or_sdp(roc_nix) || roc_nix_is_lbk(roc_nix)) { > + rc =3D NIX_ERR_PARAM; > + goto exit; > + } >=20 > if (enable) > mbox_alloc_msg_nix_lf_ptp_tx_enable(mbox); > else > mbox_alloc_msg_nix_lf_ptp_tx_disable(mbox); >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > roc_nix_ptp_clock_read(struct roc_nix *roc_nix, uint64_t *clock, uint64_= t *tsc, > uint8_t is_pmu) > { > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct ptp_req *req; > struct ptp_rsp *rsp; > int rc =3D -ENOSPC; >=20 > req =3D mbox_alloc_msg_ptp_op(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->op =3D PTP_OP_GET_CLOCK; > req->is_pmu =3D is_pmu; > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; >=20 > if (clock) > *clock =3D rsp->clk; > @@ -72,30 +81,42 @@ roc_nix_ptp_clock_read(struct roc_nix *roc_nix, uint6= 4_t *clock, > uint64_t *tsc, > if (tsc) > *tsc =3D rsp->tsc; >=20 > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > roc_nix_ptp_sync_time_adjust(struct roc_nix *roc_nix, int64_t delta) > { > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct ptp_req *req; > struct ptp_rsp *rsp; > int rc =3D -ENOSPC; >=20 > - if (roc_nix_is_vf_or_sdp(roc_nix) || roc_nix_is_lbk(roc_nix)) > - return NIX_ERR_PARAM; > + if (roc_nix_is_vf_or_sdp(roc_nix) || roc_nix_is_lbk(roc_nix)) { > + rc =3D NIX_ERR_PARAM; > + goto exit; > + } >=20 > - if ((delta <=3D -PTP_FREQ_ADJUST) || (delta >=3D PTP_FREQ_ADJUST)) > - return NIX_ERR_INVALID_RANGE; > + if ((delta <=3D -PTP_FREQ_ADJUST) || (delta >=3D PTP_FREQ_ADJUST)) { > + rc =3D NIX_ERR_INVALID_RANGE; > + goto exit; > + } >=20 > req =3D mbox_alloc_msg_ptp_op(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->op =3D PTP_OP_ADJFINE; > req->scaled_ppm =3D delta; >=20 > - return mbox_process_msg(mbox, (void *)&rsp); > + rc =3D mbox_process_msg(mbox, (void *)&rsp); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > diff --git a/drivers/common/cnxk/roc_nix_queue.c > b/drivers/common/cnxk/roc_nix_queue.c > index 1cb1fd2101..9dbda54871 100644 > --- a/drivers/common/cnxk/roc_nix_queue.c > +++ b/drivers/common/cnxk/roc_nix_queue.c > @@ -47,15 +47,18 @@ nix_rq_vwqe_flush(struct roc_nix_rq *rq, uint16_t vwq= e_interval) > int > nix_rq_ena_dis(struct dev *dev, struct roc_nix_rq *rq, bool enable) > { > - struct mbox *mbox =3D dev->mbox; > + struct mbox *mbox =3D mbox_get(dev->mbox); > + int rc; >=20 > /* Pkts will be dropped silently if RQ is disabled */ > if (roc_model_is_cn9k()) { > struct nix_aq_enq_req *aq; >=20 > aq =3D mbox_alloc_msg_nix_aq_enq(mbox); > - if (!aq) > - return -ENOSPC; > + if (!aq) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > aq->qidx =3D rq->qid; > aq->ctype =3D NIX_AQ_CTYPE_RQ; > @@ -67,8 +70,10 @@ nix_rq_ena_dis(struct dev *dev, struct roc_nix_rq *rq,= bool enable) > struct nix_cn10k_aq_enq_req *aq; >=20 > aq =3D mbox_alloc_msg_nix_cn10k_aq_enq(mbox); > - if (!aq) > - return -ENOSPC; > + if (!aq) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > aq->qidx =3D rq->qid; > aq->ctype =3D NIX_AQ_CTYPE_RQ; > @@ -78,7 +83,10 @@ nix_rq_ena_dis(struct dev *dev, struct roc_nix_rq *rq,= bool enable) > aq->rq_mask.ena =3D ~(aq->rq_mask.ena); > } >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -103,7 +111,7 @@ roc_nix_rq_is_sso_enable(struct roc_nix *roc_nix, uin= t32_t qid) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > struct dev *dev =3D &nix->dev; > - struct mbox *mbox =3D dev->mbox; > + struct mbox *mbox =3D mbox_get(dev->mbox); > bool sso_enable; > int rc; >=20 > @@ -112,15 +120,17 @@ roc_nix_rq_is_sso_enable(struct roc_nix *roc_nix, u= int32_t qid) > struct nix_aq_enq_req *aq; >=20 > aq =3D mbox_alloc_msg_nix_aq_enq(mbox); > - if (!aq) > - return -ENOSPC; > + if (!aq) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > aq->qidx =3D qid; > aq->ctype =3D NIX_AQ_CTYPE_RQ; > aq->op =3D NIX_AQ_INSTOP_READ; > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; >=20 > sso_enable =3D rsp->rq.sso_ena; > } else { > @@ -128,8 +138,10 @@ roc_nix_rq_is_sso_enable(struct roc_nix *roc_nix, ui= nt32_t qid) > struct nix_cn10k_aq_enq_req *aq; >=20 > aq =3D mbox_alloc_msg_nix_cn10k_aq_enq(mbox); > - if (!aq) > - return -ENOSPC; > + if (!aq) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > aq->qidx =3D qid; > aq->ctype =3D NIX_AQ_CTYPE_RQ; > @@ -137,12 +149,15 @@ roc_nix_rq_is_sso_enable(struct roc_nix *roc_nix, u= int32_t qid) >=20 > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; >=20 > sso_enable =3D rsp->rq.sso_ena; > } >=20 > - return sso_enable ? true : false; > + rc =3D sso_enable ? true : false; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > static int > @@ -170,36 +185,45 @@ nix_rq_aura_buf_type_update(struct roc_nix_rq *rq, = bool set) > struct nix_aq_enq_rsp *rsp; > struct nix_aq_enq_req *aq; >=20 > - aq =3D mbox_alloc_msg_nix_aq_enq(mbox); > - if (!aq) > + aq =3D mbox_alloc_msg_nix_aq_enq(mbox_get(mbox)); > + if (!aq) { > + mbox_put(mbox); > return -ENOSPC; > + } >=20 > aq->qidx =3D rq->qid; > aq->ctype =3D NIX_AQ_CTYPE_RQ; > aq->op =3D NIX_AQ_INSTOP_READ; > rc =3D mbox_process_msg(mbox, (void *)&rsp); > - if (rc) > + if (rc) { > + mbox_put(mbox); > return rc; > + } >=20 > /* Get aura handle from aura */ > lpb_aura =3D roc_npa_aura_handle_gen(rsp->rq.lpb_aura, aura_base); > if (rsp->rq.spb_ena) > spb_aura =3D roc_npa_aura_handle_gen(rsp->rq.spb_aura, > aura_base); > + mbox_put(mbox); > } else { > struct nix_cn10k_aq_enq_rsp *rsp; > struct nix_cn10k_aq_enq_req *aq; >=20 > - aq =3D mbox_alloc_msg_nix_cn10k_aq_enq(mbox); > - if (!aq) > + aq =3D mbox_alloc_msg_nix_cn10k_aq_enq(mbox_get(mbox)); > + if (!aq) { > + mbox_put(mbox); > return -ENOSPC; > + } >=20 > aq->qidx =3D rq->qid; > aq->ctype =3D NIX_AQ_CTYPE_RQ; > aq->op =3D NIX_AQ_INSTOP_READ; >=20 > rc =3D mbox_process_msg(mbox, (void *)&rsp); > - if (rc) > + if (rc) { > + mbox_put(mbox); > return rc; > + } >=20 > /* Get aura handle from aura */ > lpb_aura =3D roc_npa_aura_handle_gen(rsp->rq.lpb_aura, aura_base); > @@ -207,6 +231,8 @@ nix_rq_aura_buf_type_update(struct roc_nix_rq *rq, bo= ol set) > spb_aura =3D roc_npa_aura_handle_gen(rsp->rq.spb_aura, > aura_base); > if (rsp->rq.vwqe_ena) > vwqe_aura =3D roc_npa_aura_handle_gen(rsp->rq.wqe_aura, > aura_base); > + > + mbox_put(mbox); > } >=20 > skip_ctx_read: > @@ -238,12 +264,15 @@ nix_rq_aura_buf_type_update(struct roc_nix_rq *rq, = bool set) > static int > nix_rq_cn9k_cman_cfg(struct dev *dev, struct roc_nix_rq *rq) > { > - struct mbox *mbox =3D dev->mbox; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct nix_aq_enq_req *aq; > + int rc; >=20 > aq =3D mbox_alloc_msg_nix_aq_enq(mbox); > - if (!aq) > - return -ENOSPC; > + if (!aq) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > aq->qidx =3D rq->qid; > aq->ctype =3D NIX_AQ_CTYPE_RQ; > @@ -272,7 +301,10 @@ nix_rq_cn9k_cman_cfg(struct dev *dev, struct roc_nix= _rq *rq) > aq->rq_mask.xqe_pass =3D ~(aq->rq_mask.xqe_pass); > } >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -573,11 +605,14 @@ static int > nix_rq_cman_cfg(struct dev *dev, struct roc_nix_rq *rq) > { > struct nix_cn10k_aq_enq_req *aq; > - struct mbox *mbox =3D dev->mbox; > + struct mbox *mbox =3D mbox_get(dev->mbox); > + int rc; >=20 > aq =3D mbox_alloc_msg_nix_cn10k_aq_enq(mbox); > - if (!aq) > - return -ENOSPC; > + if (!aq) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > aq->qidx =3D rq->qid; > aq->ctype =3D NIX_AQ_CTYPE_RQ; > @@ -606,23 +641,30 @@ nix_rq_cman_cfg(struct dev *dev, struct roc_nix_rq = *rq) > aq->rq_mask.xqe_pass =3D ~(aq->rq_mask.xqe_pass); > } >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > roc_nix_rq_init(struct roc_nix *roc_nix, struct roc_nix_rq *rq, bool ena= ) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct mbox *mbox =3D (&nix->dev)->mbox; > + struct mbox *mbox =3D mbox_get((&nix->dev)->mbox); > bool is_cn9k =3D roc_model_is_cn9k(); > struct dev *dev =3D &nix->dev; > int rc; >=20 > - if (roc_nix =3D=3D NULL || rq =3D=3D NULL) > + if (roc_nix =3D=3D NULL || rq =3D=3D NULL) { > + mbox_put(mbox); > return NIX_ERR_PARAM; > + } >=20 > - if (rq->qid >=3D nix->nb_rx_queues) > + if (rq->qid >=3D nix->nb_rx_queues) { > + mbox_put(mbox); > return NIX_ERR_QUEUE_INVALID_RANGE; > + } >=20 > rq->roc_nix =3D roc_nix; >=20 > @@ -631,12 +673,17 @@ roc_nix_rq_init(struct roc_nix *roc_nix, struct roc= _nix_rq *rq, > bool ena) > else > rc =3D nix_rq_cfg(dev, rq, nix->qints, false, ena); >=20 > - if (rc) > + if (rc) { > + mbox_put(mbox); > return rc; > + } >=20 > rc =3D mbox_process(mbox); > - if (rc) > + if (rc) { > + mbox_put(mbox); > return rc; > + } > + mbox_put(mbox); >=20 > /* Update aura buf type to indicate its use */ > nix_rq_aura_buf_type_update(rq, true); > @@ -655,9 +702,10 @@ int > roc_nix_rq_modify(struct roc_nix *roc_nix, struct roc_nix_rq *rq, bool e= na) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct mbox *mbox =3D (&nix->dev)->mbox; > + struct mbox *m_box =3D (&nix->dev)->mbox; > bool is_cn9k =3D roc_model_is_cn9k(); > struct dev *dev =3D &nix->dev; > + struct mbox *mbox; > int rc; >=20 > if (roc_nix =3D=3D NULL || rq =3D=3D NULL) > @@ -671,17 +719,23 @@ roc_nix_rq_modify(struct roc_nix *roc_nix, struct r= oc_nix_rq *rq, > bool ena) >=20 > rq->roc_nix =3D roc_nix; >=20 > + mbox =3D mbox_get(m_box); > if (is_cn9k) > rc =3D nix_rq_cn9k_cfg(dev, rq, nix->qints, true, ena); > else > rc =3D nix_rq_cfg(dev, rq, nix->qints, true, ena); >=20 > - if (rc) > + if (rc) { > + mbox_put(mbox); > return rc; > + } >=20 > rc =3D mbox_process(mbox); > - if (rc) > + if (rc) { > + mbox_put(mbox); > return rc; > + } > + mbox_put(mbox); >=20 > /* Update aura attribute to indicate its use */ > nix_rq_aura_buf_type_update(rq, true); > @@ -769,9 +823,11 @@ roc_nix_cq_init(struct roc_nix *roc_nix, struct roc_= nix_cq *cq) > if (roc_model_is_cn9k()) { > struct nix_aq_enq_req *aq; >=20 > - aq =3D mbox_alloc_msg_nix_aq_enq(mbox); > - if (!aq) > + aq =3D mbox_alloc_msg_nix_aq_enq(mbox_get(mbox)); > + if (!aq) { > + mbox_put(mbox); > return -ENOSPC; > + } >=20 > aq->qidx =3D cq->qid; > aq->ctype =3D NIX_AQ_CTYPE_CQ; > @@ -780,9 +836,11 @@ roc_nix_cq_init(struct roc_nix *roc_nix, struct roc_= nix_cq *cq) > } else { > struct nix_cn10k_aq_enq_req *aq; >=20 > - aq =3D mbox_alloc_msg_nix_cn10k_aq_enq(mbox); > - if (!aq) > + aq =3D mbox_alloc_msg_nix_cn10k_aq_enq(mbox_get(mbox)); > + if (!aq) { > + mbox_put(mbox); > return -ENOSPC; > + } >=20 > aq->qidx =3D cq->qid; > aq->ctype =3D NIX_AQ_CTYPE_CQ; > @@ -831,6 +889,7 @@ roc_nix_cq_init(struct roc_nix *roc_nix, struct roc_n= ix_cq *cq) > } >=20 > rc =3D mbox_process(mbox); > + mbox_put(mbox); > if (rc) > goto free_mem; >=20 > @@ -853,15 +912,17 @@ roc_nix_cq_fini(struct roc_nix_cq *cq) > return NIX_ERR_PARAM; >=20 > nix =3D roc_nix_to_nix_priv(cq->roc_nix); > - mbox =3D (&nix->dev)->mbox; > + mbox =3D mbox_get((&nix->dev)->mbox); >=20 > /* Disable CQ */ > if (roc_model_is_cn9k()) { > struct nix_aq_enq_req *aq; >=20 > aq =3D mbox_alloc_msg_nix_aq_enq(mbox); > - if (!aq) > + if (!aq) { > + mbox_put(mbox); > return -ENOSPC; > + } >=20 > aq->qidx =3D cq->qid; > aq->ctype =3D NIX_AQ_CTYPE_CQ; > @@ -874,8 +935,10 @@ roc_nix_cq_fini(struct roc_nix_cq *cq) > struct nix_cn10k_aq_enq_req *aq; >=20 > aq =3D mbox_alloc_msg_nix_cn10k_aq_enq(mbox); > - if (!aq) > + if (!aq) { > + mbox_put(mbox); > return -ENOSPC; > + } >=20 > aq->qidx =3D cq->qid; > aq->ctype =3D NIX_AQ_CTYPE_CQ; > @@ -887,9 +950,12 @@ roc_nix_cq_fini(struct roc_nix_cq *cq) > } >=20 > rc =3D mbox_process(mbox); > - if (rc) > + if (rc) { > + mbox_put(mbox); > return rc; > + } >=20 > + mbox_put(mbox); > plt_free(cq->desc_base); > return 0; > } > @@ -1031,7 +1097,7 @@ sq_cn9k_init(struct nix *nix, struct roc_nix_sq *sq= , uint32_t > rr_quantum, > static int > sq_cn9k_fini(struct nix *nix, struct roc_nix_sq *sq) > { > - struct mbox *mbox =3D (&nix->dev)->mbox; > + struct mbox *mbox =3D mbox_get((&nix->dev)->mbox); > struct nix_aq_enq_rsp *rsp; > struct nix_aq_enq_req *aq; > uint16_t sqes_per_sqb; > @@ -1039,24 +1105,32 @@ sq_cn9k_fini(struct nix *nix, struct roc_nix_sq *= sq) > int rc, count; >=20 > aq =3D mbox_alloc_msg_nix_aq_enq(mbox); > - if (!aq) > + if (!aq) { > + mbox_put(mbox); > return -ENOSPC; > + } >=20 > aq->qidx =3D sq->qid; > aq->ctype =3D NIX_AQ_CTYPE_SQ; > aq->op =3D NIX_AQ_INSTOP_READ; > rc =3D mbox_process_msg(mbox, (void *)&rsp); > - if (rc) > + if (rc) { > + mbox_put(mbox); > return rc; > + } >=20 > /* Check if sq is already cleaned up */ > - if (!rsp->sq.ena) > + if (!rsp->sq.ena) { > + mbox_put(mbox); > return 0; > + } >=20 > /* Disable sq */ > aq =3D mbox_alloc_msg_nix_aq_enq(mbox); > - if (!aq) > + if (!aq) { > + mbox_put(mbox); > return -ENOSPC; > + } >=20 > aq->qidx =3D sq->qid; > aq->ctype =3D NIX_AQ_CTYPE_SQ; > @@ -1064,20 +1138,26 @@ sq_cn9k_fini(struct nix *nix, struct roc_nix_sq *= sq) > aq->sq_mask.ena =3D ~aq->sq_mask.ena; > aq->sq.ena =3D 0; > rc =3D mbox_process(mbox); > - if (rc) > + if (rc) { > + mbox_put(mbox); > return rc; > + } >=20 > /* Read SQ and free sqb's */ > aq =3D mbox_alloc_msg_nix_aq_enq(mbox); > - if (!aq) > + if (!aq) { > + mbox_put(mbox); > return -ENOSPC; > + } >=20 > aq->qidx =3D sq->qid; > aq->ctype =3D NIX_AQ_CTYPE_SQ; > aq->op =3D NIX_AQ_INSTOP_READ; > rc =3D mbox_process_msg(mbox, (void *)&rsp); > - if (rc) > + if (rc) { > + mbox_put(mbox); > return rc; > + } >=20 > if (aq->sq.smq_pend) > plt_err("SQ has pending SQE's"); > @@ -1100,6 +1180,7 @@ sq_cn9k_fini(struct nix *nix, struct roc_nix_sq *sq= ) > /* Free next to use sqb */ > if (rsp->sq.next_sqb) > roc_npa_aura_op_free(sq->aura_handle, 1, rsp->sq.next_sqb); > + mbox_put(mbox); > return 0; > } >=20 > @@ -1148,7 +1229,7 @@ sq_init(struct nix *nix, struct roc_nix_sq *sq, uin= t32_t > rr_quantum, > static int > sq_fini(struct nix *nix, struct roc_nix_sq *sq) > { > - struct mbox *mbox =3D (&nix->dev)->mbox; > + struct mbox *mbox =3D mbox_get((&nix->dev)->mbox); > struct nix_cn10k_aq_enq_rsp *rsp; > struct nix_cn10k_aq_enq_req *aq; > uint16_t sqes_per_sqb; > @@ -1156,24 +1237,32 @@ sq_fini(struct nix *nix, struct roc_nix_sq *sq) > int rc, count; >=20 > aq =3D mbox_alloc_msg_nix_cn10k_aq_enq(mbox); > - if (!aq) > + if (!aq) { > + mbox_put(mbox); > return -ENOSPC; > + } >=20 > aq->qidx =3D sq->qid; > aq->ctype =3D NIX_AQ_CTYPE_SQ; > aq->op =3D NIX_AQ_INSTOP_READ; > rc =3D mbox_process_msg(mbox, (void *)&rsp); > - if (rc) > + if (rc) { > + mbox_put(mbox); > return rc; > + } >=20 > /* Check if sq is already cleaned up */ > - if (!rsp->sq.ena) > + if (!rsp->sq.ena) { > + mbox_put(mbox); > return 0; > + } >=20 > /* Disable sq */ > aq =3D mbox_alloc_msg_nix_cn10k_aq_enq(mbox); > - if (!aq) > + if (!aq) { > + mbox_put(mbox); > return -ENOSPC; > + } >=20 > aq->qidx =3D sq->qid; > aq->ctype =3D NIX_AQ_CTYPE_SQ; > @@ -1181,20 +1270,26 @@ sq_fini(struct nix *nix, struct roc_nix_sq *sq) > aq->sq_mask.ena =3D ~aq->sq_mask.ena; > aq->sq.ena =3D 0; > rc =3D mbox_process(mbox); > - if (rc) > + if (rc) { > + mbox_put(mbox); > return rc; > + } >=20 > /* Read SQ and free sqb's */ > aq =3D mbox_alloc_msg_nix_cn10k_aq_enq(mbox); > - if (!aq) > + if (!aq) { > + mbox_put(mbox); > return -ENOSPC; > + } >=20 > aq->qidx =3D sq->qid; > aq->ctype =3D NIX_AQ_CTYPE_SQ; > aq->op =3D NIX_AQ_INSTOP_READ; > rc =3D mbox_process_msg(mbox, (void *)&rsp); > - if (rc) > + if (rc) { > + mbox_put(mbox); > return rc; > + } >=20 > if (aq->sq.smq_pend) > plt_err("SQ has pending SQE's"); > @@ -1217,6 +1312,7 @@ sq_fini(struct nix *nix, struct roc_nix_sq *sq) > /* Free next to use sqb */ > if (rsp->sq.next_sqb) > roc_npa_aura_op_free(sq->aura_handle, 1, rsp->sq.next_sqb); > + mbox_put(mbox); > return 0; > } >=20 > @@ -1224,9 +1320,10 @@ int > roc_nix_sq_init(struct roc_nix *roc_nix, struct roc_nix_sq *sq) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct mbox *mbox =3D (&nix->dev)->mbox; > + struct mbox *m_box =3D (&nix->dev)->mbox; > uint16_t qid, smq =3D UINT16_MAX; > uint32_t rr_quantum =3D 0; > + struct mbox *mbox; > int rc; >=20 > if (sq =3D=3D NULL) > @@ -1257,18 +1354,25 @@ roc_nix_sq_init(struct roc_nix *roc_nix, struct r= oc_nix_sq *sq) > goto nomem; > } >=20 > + mbox =3D mbox_get(m_box); > /* Init SQ context */ > if (roc_model_is_cn9k()) > rc =3D sq_cn9k_init(nix, sq, rr_quantum, smq); > else > rc =3D sq_init(nix, sq, rr_quantum, smq); >=20 > - if (rc) > + if (rc) { > + mbox_put(mbox); > goto nomem; > + } > + >=20 > rc =3D mbox_process(mbox); > - if (rc) > + if (rc) { > + mbox_put(mbox); > goto nomem; > + } > + mbox_put(mbox); >=20 > nix->sqs[qid] =3D sq; > sq->io_addr =3D nix->base + NIX_LF_OP_SENDX(0); > @@ -1313,12 +1417,15 @@ roc_nix_sq_fini(struct roc_nix_sq *sq) > rc |=3D sq_fini(roc_nix_to_nix_priv(sq->roc_nix), sq); >=20 > /* Sync NDC-NIX-TX for LF */ > - ndc_req =3D mbox_alloc_msg_ndc_sync_op(mbox); > - if (ndc_req =3D=3D NULL) > + ndc_req =3D mbox_alloc_msg_ndc_sync_op(mbox_get(mbox)); > + if (ndc_req =3D=3D NULL) { > + mbox_put(mbox); > return -ENOSPC; > + } > ndc_req->nix_lf_tx_sync =3D 1; > if (mbox_process(mbox)) > rc |=3D NIX_ERR_NDC_SYNC; > + mbox_put(mbox); >=20 > rc |=3D nix_tm_sq_flush_post(sq); >=20 > diff --git a/drivers/common/cnxk/roc_nix_rss.c b/drivers/common/cnxk/roc_= nix_rss.c > index 7de69aabeb..3599eb9bae 100644 > --- a/drivers/common/cnxk/roc_nix_rss.c > +++ b/drivers/common/cnxk/roc_nix_rss.c > @@ -54,7 +54,7 @@ static int > nix_cn9k_rss_reta_set(struct nix *nix, uint8_t group, > uint16_t reta[ROC_NIX_RSS_RETA_MAX], uint8_t lock_rx_ctx) > { > - struct mbox *mbox =3D (&nix->dev)->mbox; > + struct mbox *mbox =3D mbox_get((&nix->dev)->mbox); > struct nix_aq_enq_req *req; > uint16_t idx; > int rc; > @@ -67,10 +67,12 @@ nix_cn9k_rss_reta_set(struct nix *nix, uint8_t group, > */ > rc =3D mbox_process(mbox); > if (rc < 0) > - return rc; > + goto exit; > req =3D mbox_alloc_msg_nix_aq_enq(mbox); > - if (!req) > - return NIX_ERR_NO_MEM; > + if (!req) { > + rc =3D NIX_ERR_NO_MEM; > + goto exit; > + } > } > req->rss.rq =3D reta[idx]; > /* Fill AQ info */ > @@ -88,10 +90,12 @@ nix_cn9k_rss_reta_set(struct nix *nix, uint8_t group, > */ > rc =3D mbox_process(mbox); > if (rc < 0) > - return rc; > + goto exit; > req =3D mbox_alloc_msg_nix_aq_enq(mbox); > - if (!req) > - return NIX_ERR_NO_MEM; > + if (!req) { > + rc =3D NIX_ERR_NO_MEM; > + goto exit; > + } > } > req->rss.rq =3D reta[idx]; > /* Fill AQ info */ > @@ -102,16 +106,19 @@ nix_cn9k_rss_reta_set(struct nix *nix, uint8_t grou= p, >=20 > rc =3D mbox_process(mbox); > if (rc < 0) > - return rc; > + goto exit; >=20 > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > static int > nix_rss_reta_set(struct nix *nix, uint8_t group, > uint16_t reta[ROC_NIX_RSS_RETA_MAX], uint8_t lock_rx_ctx) > { > - struct mbox *mbox =3D (&nix->dev)->mbox; > + struct mbox *mbox =3D mbox_get((&nix->dev)->mbox); > struct nix_cn10k_aq_enq_req *req; > uint16_t idx; > int rc; > @@ -124,10 +131,12 @@ nix_rss_reta_set(struct nix *nix, uint8_t group, > */ > rc =3D mbox_process(mbox); > if (rc < 0) > - return rc; > + goto exit; > req =3D mbox_alloc_msg_nix_cn10k_aq_enq(mbox); > - if (!req) > - return NIX_ERR_NO_MEM; > + if (!req) { > + rc =3D NIX_ERR_NO_MEM; > + goto exit; > + } > } > req->rss.rq =3D reta[idx]; > /* Fill AQ info */ > @@ -145,10 +154,12 @@ nix_rss_reta_set(struct nix *nix, uint8_t group, > */ > rc =3D mbox_process(mbox); > if (rc < 0) > - return rc; > + goto exit; > req =3D mbox_alloc_msg_nix_cn10k_aq_enq(mbox); > - if (!req) > - return NIX_ERR_NO_MEM; > + if (!req) { > + rc =3D NIX_ERR_NO_MEM; > + goto exit; > + } > } > req->rss.rq =3D reta[idx]; > /* Fill AQ info */ > @@ -159,9 +170,12 @@ nix_rss_reta_set(struct nix *nix, uint8_t group, >=20 > rc =3D mbox_process(mbox); > if (rc < 0) > - return rc; > + goto exit; >=20 > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -205,25 +219,29 @@ roc_nix_rss_flowkey_set(struct roc_nix *roc_nix, ui= nt8_t > *alg_idx, > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > struct nix_rss_flowkey_cfg_rsp *rss_rsp; > - struct mbox *mbox =3D (&nix->dev)->mbox; > + struct mbox *mbox =3D mbox_get((&nix->dev)->mbox); > struct nix_rss_flowkey_cfg *cfg; > int rc =3D -ENOSPC; >=20 > - if (group >=3D ROC_NIX_RSS_GRPS) > - return NIX_ERR_PARAM; > + if (group >=3D ROC_NIX_RSS_GRPS) { > + rc =3D NIX_ERR_PARAM; > + goto exit; > + } >=20 > cfg =3D mbox_alloc_msg_nix_rss_flowkey_cfg(mbox); > if (cfg =3D=3D NULL) > - return rc; > + goto exit; > cfg->flowkey_cfg =3D flowkey; > cfg->mcam_index =3D mcam_index; /* -1 indicates default group */ > cfg->group =3D group; /* 0 is default group */ > rc =3D mbox_process_msg(mbox, (void *)&rss_rsp); > if (rc) > - return rc; > + goto exit; > if (alg_idx) > *alg_idx =3D rss_rsp->alg_idx; >=20 > +exit: > + mbox_put(mbox); > return rc; > } >=20 > diff --git a/drivers/common/cnxk/roc_nix_stats.c b/drivers/common/cnxk/ro= c_nix_stats.c > index 2e5071e1bb..6b5803af84 100644 > --- a/drivers/common/cnxk/roc_nix_stats.c > +++ b/drivers/common/cnxk/roc_nix_stats.c > @@ -65,12 +65,18 @@ int > roc_nix_stats_reset(struct roc_nix *roc_nix) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct mbox *mbox =3D (&nix->dev)->mbox; > + struct mbox *mbox =3D mbox_get((&nix->dev)->mbox); > + int rc; >=20 > - if (mbox_alloc_msg_nix_stats_rst(mbox) =3D=3D NULL) > - return -ENOMEM; > + if (mbox_alloc_msg_nix_stats_rst(mbox) =3D=3D NULL) { > + rc =3D -ENOMEM; > + goto exit; > + } >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > static int > @@ -141,15 +147,17 @@ nix_stat_tx_queue_get(struct nix *nix, uint16_t qid= , > static int > nix_stat_rx_queue_reset(struct nix *nix, uint16_t qid) > { > - struct mbox *mbox =3D (&nix->dev)->mbox; > + struct mbox *mbox =3D mbox_get((&nix->dev)->mbox); > int rc; >=20 > if (roc_model_is_cn9k()) { > struct nix_aq_enq_req *aq; >=20 > aq =3D mbox_alloc_msg_nix_aq_enq(mbox); > - if (!aq) > - return -ENOSPC; > + if (!aq) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > aq->qidx =3D qid; > aq->ctype =3D NIX_AQ_CTYPE_RQ; > @@ -170,8 +178,10 @@ nix_stat_rx_queue_reset(struct nix *nix, uint16_t qi= d) > struct nix_cn10k_aq_enq_req *aq; >=20 > aq =3D mbox_alloc_msg_nix_cn10k_aq_enq(mbox); > - if (!aq) > - return -ENOSPC; > + if (!aq) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > aq->qidx =3D qid; > aq->ctype =3D NIX_AQ_CTYPE_RQ; > @@ -191,21 +201,26 @@ nix_stat_rx_queue_reset(struct nix *nix, uint16_t q= id) > } >=20 > rc =3D mbox_process(mbox); > - return rc ? NIX_ERR_AQ_WRITE_FAILED : 0; > + rc =3D rc ? NIX_ERR_AQ_WRITE_FAILED : 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > static int > nix_stat_tx_queue_reset(struct nix *nix, uint16_t qid) > { > - struct mbox *mbox =3D (&nix->dev)->mbox; > + struct mbox *mbox =3D mbox_get((&nix->dev)->mbox); > int rc; >=20 > if (roc_model_is_cn9k()) { > struct nix_aq_enq_req *aq; >=20 > aq =3D mbox_alloc_msg_nix_aq_enq(mbox); > - if (!aq) > - return -ENOSPC; > + if (!aq) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > aq->qidx =3D qid; > aq->ctype =3D NIX_AQ_CTYPE_SQ; > @@ -223,8 +238,10 @@ nix_stat_tx_queue_reset(struct nix *nix, uint16_t qi= d) > struct nix_cn10k_aq_enq_req *aq; >=20 > aq =3D mbox_alloc_msg_nix_cn10k_aq_enq(mbox); > - if (!aq) > - return -ENOSPC; > + if (!aq) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > aq->qidx =3D qid; > aq->ctype =3D NIX_AQ_CTYPE_SQ; > @@ -243,7 +260,10 @@ nix_stat_tx_queue_reset(struct nix *nix, uint16_t qi= d) > } >=20 > rc =3D mbox_process(mbox); > - return rc ? NIX_ERR_AQ_WRITE_FAILED : 0; > + rc =3D rc ? NIX_ERR_AQ_WRITE_FAILED : 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -363,15 +383,17 @@ roc_nix_xstats_get(struct roc_nix *roc_nix, struct = roc_nix_xstat > *xstats, > return count; >=20 > if (roc_model_is_cn9k()) { > - req =3D mbox_alloc_msg_cgx_stats(mbox); > - if (!req) > - return -ENOSPC; > + req =3D mbox_alloc_msg_cgx_stats(mbox_get(mbox)); > + if (!req) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > req->hdr.pcifunc =3D roc_nix_get_pf_func(roc_nix); >=20 > rc =3D mbox_process_msg(mbox, (void *)&cgx_resp); > if (rc) > - return rc; > + goto exit; >=20 > for (i =3D 0; i < roc_nix_num_rx_xstats(); i++) { > xstats[count].value =3D > @@ -387,15 +409,17 @@ roc_nix_xstats_get(struct roc_nix *roc_nix, struct = roc_nix_xstat > *xstats, > count++; > } > } else { > - req =3D mbox_alloc_msg_rpm_stats(mbox); > - if (!req) > - return -ENOSPC; > + req =3D mbox_alloc_msg_rpm_stats(mbox_get(mbox)); > + if (!req) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > req->hdr.pcifunc =3D roc_nix_get_pf_func(roc_nix); >=20 > rc =3D mbox_process_msg(mbox, (void *)&rpm_resp); > if (rc) > - return rc; > + goto exit; >=20 > for (i =3D 0; i < roc_nix_num_rx_xstats(); i++) { > xstats[count].value =3D > @@ -412,7 +436,10 @@ roc_nix_xstats_get(struct roc_nix *roc_nix, struct r= oc_nix_xstat > *xstats, > } > } >=20 > - return count; > + rc =3D count; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > diff --git a/drivers/common/cnxk/roc_nix_tm.c b/drivers/common/cnxk/roc_n= ix_tm.c > index be8da714cd..eecaf3e070 100644 > --- a/drivers/common/cnxk/roc_nix_tm.c > +++ b/drivers/common/cnxk/roc_nix_tm.c > @@ -52,13 +52,14 @@ nix_tm_node_reg_conf(struct nix *nix, struct nix_tm_n= ode *node) > /* Need this trigger to configure TL1 */ > if (!nix_tm_have_tl1_access(nix) && hw_lvl =3D=3D NIX_TXSCH_LVL_TL2) { > /* Prepare default conf for TL1 */ > - req =3D mbox_alloc_msg_nix_txschq_cfg(mbox); > + req =3D mbox_alloc_msg_nix_txschq_cfg(mbox_get(mbox)); > req->lvl =3D NIX_TXSCH_LVL_TL1; >=20 > k =3D nix_tm_tl1_default_prep(nix, node->parent_hw_id, req->reg, > req->regval); > req->num_regs =3D k; > rc =3D mbox_process(mbox); > + mbox_put(mbox); > if (rc) > goto error; > } > @@ -76,7 +77,7 @@ nix_tm_node_reg_conf(struct nix *nix, struct nix_tm_nod= e *node) > return 0; >=20 > /* Copy and send config mbox */ > - req =3D mbox_alloc_msg_nix_txschq_cfg(mbox); > + req =3D mbox_alloc_msg_nix_txschq_cfg(mbox_get(mbox)); > req->lvl =3D hw_lvl; > req->num_regs =3D k; >=20 > @@ -85,6 +86,7 @@ nix_tm_node_reg_conf(struct nix *nix, struct nix_tm_nod= e *node) > mbox_memcpy(req->regval_mask, regval_mask, sizeof(uint64_t) * k); >=20 > rc =3D mbox_process(mbox); > + mbox_put(mbox); > if (rc) > goto error; >=20 > @@ -279,7 +281,7 @@ nix_tm_node_add(struct roc_nix *roc_nix, struct nix_t= m_node > *node) > int > nix_tm_clear_path_xoff(struct nix *nix, struct nix_tm_node *node) > { > - struct mbox *mbox =3D (&nix->dev)->mbox; > + struct mbox *mbox =3D mbox_get((&nix->dev)->mbox); > struct nix_txschq_config *req; > struct nix_tm_node *p; > int rc; > @@ -298,14 +300,17 @@ nix_tm_clear_path_xoff(struct nix *nix, struct nix_= tm_node > *node) > req->regval); > rc =3D mbox_process(mbox); > if (rc) > - return rc; > + goto exit; >=20 > p->flags |=3D NIX_TM_NODE_ENABLED; > } > p =3D p->parent; > } >=20 > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -395,7 +400,7 @@ nix_tm_bp_config_set(struct roc_nix *roc_nix, uint16_= t sq, uint16_t > tc, >=20 > /* Allocating TL3 resources */ > if (!req) { > - req =3D mbox_alloc_msg_nix_txschq_cfg(mbox); > + req =3D mbox_alloc_msg_nix_txschq_cfg(mbox_get(mbox)); > req->lvl =3D nix->tm_link_cfg_lvl; > k =3D 0; > } > @@ -417,10 +422,13 @@ nix_tm_bp_config_set(struct roc_nix *roc_nix, uint1= 6_t sq, > uint16_t tc, > if (enable && sq_s->tc =3D=3D ROC_NIX_PFC_CLASS_INVALID) > parent->tc_refcnt++; >=20 > - return 0; > + rc =3D 0; > + goto exit; > err: > plt_err("Failed to %s bp on link %u, rc=3D%d(%s)", > enable ? "enable" : "disable", link, rc, roc_error_msg_get(rc)); > +exit: > + mbox_put(mbox); > return rc; > } >=20 > @@ -430,7 +438,7 @@ nix_tm_bp_config_get(struct roc_nix *roc_nix, bool *i= s_enabled) > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > struct nix_txschq_config *req =3D NULL, *rsp; > enum roc_nix_tm_tree tree =3D nix->tm_tree; > - struct mbox *mbox =3D (&nix->dev)->mbox; > + struct mbox *mbox =3D mbox_get((&nix->dev)->mbox); > struct nix_tm_node_list *list; > struct nix_tm_node *node; > bool found =3D false; > @@ -484,10 +492,13 @@ nix_tm_bp_config_get(struct roc_nix *roc_nix, bool = *is_enabled) > } >=20 > *is_enabled =3D found ? !!enable : false; > - return 0; > + rc =3D 0; > + goto exit; > err: > plt_err("Failed to get bp status on link %u, rc=3D%d(%s)", link, rc, > roc_error_msg_get(rc)); > +exit: > + mbox_put(mbox); > return rc; > } >=20 > @@ -507,7 +518,7 @@ nix_tm_smq_xoff(struct nix *nix, struct nix_tm_node *= node, bool > enable) > if (rc) > return rc; >=20 > - req =3D mbox_alloc_msg_nix_txschq_cfg(mbox); > + req =3D mbox_alloc_msg_nix_txschq_cfg(mbox_get(mbox)); > req->lvl =3D NIX_TXSCH_LVL_SMQ; > req->num_regs =3D 1; >=20 > @@ -516,7 +527,9 @@ nix_tm_smq_xoff(struct nix *nix, struct nix_tm_node *= node, bool > enable) > req->regval_mask[0] =3D > enable ? ~(BIT_ULL(50) | BIT_ULL(49)) : ~BIT_ULL(50); >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -645,12 +658,14 @@ nix_tm_sq_flush_pre(struct roc_nix_sq *sq) > /* Though it enables both RX MCAM Entries and CGX Link > * we assume all the rx queues are stopped way back. > */ > - mbox_alloc_msg_nix_lf_start_rx(mbox); > + mbox_alloc_msg_nix_lf_start_rx(mbox_get(mbox)); > rc =3D mbox_process(mbox); > if (rc) { > + mbox_put(mbox); > plt_err("cgx start failed, rc=3D%d", rc); > return rc; > } > + mbox_put(mbox); > } >=20 > /* Disable backpressure */ > @@ -706,16 +721,20 @@ nix_tm_sq_flush_pre(struct roc_nix_sq *sq) > goto cleanup; > } >=20 > - req =3D mbox_alloc_msg_nix_rx_sw_sync(mbox); > - if (!req) > + req =3D mbox_alloc_msg_nix_rx_sw_sync(mbox_get(mbox)); > + if (!req) { > + mbox_put(mbox); > return -ENOSPC; > + } >=20 > rc =3D mbox_process(mbox); > + mbox_put(mbox); > cleanup: > /* Restore cgx state */ > if (!roc_nix->io_enabled) { > - mbox_alloc_msg_nix_lf_stop_rx(mbox); > + mbox_alloc_msg_nix_lf_stop_rx(mbox_get(mbox)); > rc |=3D mbox_process(mbox); > + mbox_put(mbox); > } >=20 > return rc; > @@ -802,7 +821,7 @@ int > nix_tm_sq_sched_conf(struct nix *nix, struct nix_tm_node *node, > bool rr_quantum_only) > { > - struct mbox *mbox =3D (&nix->dev)->mbox; > + struct mbox *mbox =3D mbox_get((&nix->dev)->mbox); > uint16_t qid =3D node->id, smq; > uint64_t rr_quantum; > int rc; > @@ -817,15 +836,19 @@ nix_tm_sq_sched_conf(struct nix *nix, struct nix_tm= _node > *node, > plt_tm_dbg("Enabling sq(%u)->smq(%u), rr_quantum 0x%" PRIx64, > qid, smq, rr_quantum); >=20 > - if (qid > nix->nb_tx_queues) > - return -EFAULT; > + if (qid > nix->nb_tx_queues) { > + rc =3D -EFAULT; > + goto exit; > + } >=20 > if (roc_model_is_cn9k()) { > struct nix_aq_enq_req *aq; >=20 > aq =3D mbox_alloc_msg_nix_aq_enq(mbox); > - if (!aq) > - return -ENOSPC; > + if (!aq) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > aq->qidx =3D qid; > aq->ctype =3D NIX_AQ_CTYPE_SQ; > @@ -842,8 +865,10 @@ nix_tm_sq_sched_conf(struct nix *nix, struct nix_tm_= node *node, > struct nix_cn10k_aq_enq_req *aq; >=20 > aq =3D mbox_alloc_msg_nix_cn10k_aq_enq(mbox); > - if (!aq) > - return -ENOSPC; > + if (!aq) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > aq->qidx =3D qid; > aq->ctype =3D NIX_AQ_CTYPE_SQ; > @@ -861,6 +886,8 @@ nix_tm_sq_sched_conf(struct nix *nix, struct nix_tm_n= ode *node, > rc =3D mbox_process(mbox); > if (rc) > plt_err("Failed to set smq, rc=3D%d", rc); > +exit: > + mbox_put(mbox); > return rc; > } >=20 > @@ -902,9 +929,11 @@ nix_tm_release_resources(struct nix *nix, uint8_t hw= _lvl, bool > contig, > schq +=3D pos; >=20 > /* Free to AF */ > - req =3D mbox_alloc_msg_nix_txsch_free(mbox); > - if (req =3D=3D NULL) > + req =3D mbox_alloc_msg_nix_txsch_free(mbox_get(mbox)); > + if (req =3D=3D NULL) { > + mbox_put(mbox); > return rc; > + } > req->flags =3D 0; > req->schq_lvl =3D hw_lvl; > req->schq =3D schq; > @@ -912,9 +941,10 @@ nix_tm_release_resources(struct nix *nix, uint8_t hw= _lvl, bool > contig, > if (rc) { > plt_err("failed to release hwres %s(%u) rc %d", > nix_tm_hwlvl2str(hw_lvl), schq, rc); > + mbox_put(mbox); > return rc; > } > - > + mbox_put(mbox); > plt_tm_dbg("Released hwres %s(%u)", nix_tm_hwlvl2str(hw_lvl), > schq); > plt_bitmap_clear(bmp, schq); > @@ -932,7 +962,7 @@ nix_tm_release_resources(struct nix *nix, uint8_t hw_= lvl, bool > contig, > int > nix_tm_free_node_resource(struct nix *nix, struct nix_tm_node *node) > { > - struct mbox *mbox =3D (&nix->dev)->mbox; > + struct mbox *mbox =3D mbox_get((&nix->dev)->mbox); > struct nix_txsch_free_req *req; > struct plt_bitmap *bmp; > uint16_t avail, hw_id; > @@ -958,13 +988,14 @@ nix_tm_free_node_resource(struct nix *nix, struct n= ix_tm_node > *node) > plt_bitmap_set(bmp, hw_id); > node->hw_id =3D NIX_TM_HW_ID_INVALID; > node->flags &=3D ~NIX_TM_NODE_HWRES; > - return 0; > + rc =3D 0; > + goto exit; > } >=20 > /* Free to AF */ > req =3D mbox_alloc_msg_nix_txsch_free(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->flags =3D 0; > req->schq_lvl =3D node->hw_lvl; > req->schq =3D hw_id; > @@ -972,7 +1003,7 @@ nix_tm_free_node_resource(struct nix *nix, struct ni= x_tm_node > *node) > if (rc) { > plt_err("failed to release hwres %s(%u) rc %d", > nix_tm_hwlvl2str(node->hw_lvl), hw_id, rc); > - return rc; > + goto exit; > } >=20 > /* Mark parent as dirty for reallocing it's children */ > @@ -983,7 +1014,10 @@ nix_tm_free_node_resource(struct nix *nix, struct n= ix_tm_node > *node) > node->flags &=3D ~NIX_TM_NODE_HWRES; > plt_tm_dbg("Released hwres %s(%u) to af", > nix_tm_hwlvl2str(node->hw_lvl), hw_id); > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -1280,8 +1314,9 @@ nix_tm_alloc_txschq(struct nix *nix, enum roc_nix_t= m_tree tree) > /* Alloc as needed */ > do { > pend =3D false; > - req =3D mbox_alloc_msg_nix_txsch_alloc(mbox); > + req =3D mbox_alloc_msg_nix_txsch_alloc(mbox_get(mbox)); > if (!req) { > + mbox_put(mbox); > rc =3D -ENOMEM; > goto alloc_err; > } > @@ -1306,9 +1341,11 @@ nix_tm_alloc_txschq(struct nix *nix, enum roc_nix_= tm_tree > tree) > } >=20 > rc =3D mbox_process_msg(mbox, (void *)&rsp); > - if (rc) > + if (rc) { > + mbox_put(mbox); > goto alloc_err; > - > + } > + mbox_put(mbox); > nix_tm_copy_rsp_to_nix(nix, rsp); > } while (pend); >=20 > diff --git a/drivers/common/cnxk/roc_nix_tm_mark.c > b/drivers/common/cnxk/roc_nix_tm_mark.c > index d37292e8b9..e9a7604e79 100644 > --- a/drivers/common/cnxk/roc_nix_tm_mark.c > +++ b/drivers/common/cnxk/roc_nix_tm_mark.c > @@ -109,9 +109,11 @@ nix_tm_update_red_algo(struct nix *nix, bool red_sen= d) > tm_node->red_algo =3D NIX_REDALG_STD; >=20 > /* Update txschq config */ > - req =3D mbox_alloc_msg_nix_txschq_cfg(mbox); > - if (req =3D=3D NULL) > + req =3D mbox_alloc_msg_nix_txschq_cfg(mbox_get(mbox)); > + if (req =3D=3D NULL) { > + mbox_put(mbox); > return -ENOSPC; > + } >=20 > req->lvl =3D tm_node->hw_lvl; > k =3D prepare_tm_shaper_red_algo(tm_node, req->reg, req->regval, > @@ -119,8 +121,11 @@ nix_tm_update_red_algo(struct nix *nix, bool red_sen= d) > req->num_regs =3D k; >=20 > rc =3D mbox_process(mbox); > - if (rc) > + if (rc) { > + mbox_put(mbox); > return rc; > + } > + mbox_put(mbox); > } > return 0; > } > @@ -200,19 +205,23 @@ nix_tm_update_markfmt(struct nix *nix, enum roc_nix= _tm_mark > type, > int > nix_tm_mark_init(struct nix *nix) > { > - struct mbox *mbox =3D (&nix->dev)->mbox; > + struct mbox *mbox =3D mbox_get((&nix->dev)->mbox); > struct nix_mark_format_cfg_rsp *rsp; > struct nix_mark_format_cfg *req; > int rc, i, j; >=20 > /* Check for supported revisions */ > - if (roc_model_is_cn96_ax() || roc_model_is_cn95_a0()) > - return 0; > + if (roc_model_is_cn96_ax() || roc_model_is_cn95_a0()) { > + rc =3D 0; > + goto exit; > + } >=20 > /* Null mark format */ > req =3D mbox_alloc_msg_nix_mark_format_cfg(mbox); > - if (req =3D=3D NULL) > - return -ENOSPC; > + if (req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) { > @@ -268,6 +277,7 @@ nix_tm_mark_init(struct nix *nix) > nix_tm_update_markfmt(nix, ROC_NIX_TM_MARK_IPV6_DSCP, 0, 0); > nix_tm_update_markfmt(nix, ROC_NIX_TM_MARK_IPV6_ECN, 0, 0); > exit: > + mbox_put(mbox); > return rc; > } >=20 > diff --git a/drivers/common/cnxk/roc_nix_tm_ops.c > b/drivers/common/cnxk/roc_nix_tm_ops.c > index 4bf7b1e104..f31e6d02bf 100644 > --- a/drivers/common/cnxk/roc_nix_tm_ops.c > +++ b/drivers/common/cnxk/roc_nix_tm_ops.c > @@ -22,12 +22,12 @@ roc_nix_tm_sq_aura_fc(struct roc_nix_sq *sq, bool ena= ble) > if (!lf) > return NPA_ERR_DEVICE_NOT_BOUNDED; >=20 > - mbox =3D lf->mbox; > + mbox =3D mbox_get(lf->mbox); > /* Set/clear sqb aura fc_ena */ > aura_handle =3D sq->aura_handle; > req =3D mbox_alloc_msg_npa_aq_enq(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; >=20 > req->aura_id =3D roc_npa_aura_handle_to_aura(aura_handle); > req->ctype =3D NPA_AQ_CTYPE_AURA; > @@ -48,12 +48,14 @@ roc_nix_tm_sq_aura_fc(struct roc_nix_sq *sq, bool ena= ble) >=20 > rc =3D mbox_process(mbox); > if (rc) > - return rc; > + goto exit; >=20 > /* Read back npa aura ctx */ > req =3D mbox_alloc_msg_npa_aq_enq(mbox); > - if (req =3D=3D NULL) > - return -ENOSPC; > + if (req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > req->aura_id =3D roc_npa_aura_handle_to_aura(aura_handle); > req->ctype =3D NPA_AQ_CTYPE_AURA; > @@ -61,7 +63,7 @@ roc_nix_tm_sq_aura_fc(struct roc_nix_sq *sq, bool enabl= e) >=20 > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; >=20 > /* Init when enabled as there might be no triggers */ > if (enable) > @@ -70,7 +72,10 @@ roc_nix_tm_sq_aura_fc(struct roc_nix_sq *sq, bool enab= le) > *(volatile uint64_t *)sq->fc =3D sq->aura_sqb_bufs; > /* Sync write barrier */ > plt_wmb(); > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -443,12 +448,14 @@ roc_nix_tm_hierarchy_disable(struct roc_nix *roc_ni= x) > /* Though it enables both RX MCAM Entries and CGX Link > * we assume all the rx queues are stopped way back. > */ > - mbox_alloc_msg_nix_lf_start_rx(mbox); > + mbox_alloc_msg_nix_lf_start_rx(mbox_get(mbox)); > rc =3D mbox_process(mbox); > if (rc) { > + mbox_put(mbox); > plt_err("cgx start failed, rc=3D%d", rc); > return rc; > } > + mbox_put(mbox); > } >=20 > /* XON all SMQ's */ > @@ -543,8 +550,9 @@ roc_nix_tm_hierarchy_disable(struct roc_nix *roc_nix) > cleanup: > /* Restore cgx state */ > if (!roc_nix->io_enabled) { > - mbox_alloc_msg_nix_lf_stop_rx(mbox); > + mbox_alloc_msg_nix_lf_stop_rx(mbox_get(mbox)); > rc |=3D mbox_process(mbox); > + mbox_put(mbox); > } > return rc; > } > @@ -687,12 +695,13 @@ roc_nix_tm_node_suspend_resume(struct roc_nix *roc_= nix, > uint32_t node_id, > return 0; >=20 > /* send mbox for state change */ > - req =3D mbox_alloc_msg_nix_txschq_cfg(mbox); > + req =3D mbox_alloc_msg_nix_txschq_cfg(mbox_get(mbox)); >=20 > req->lvl =3D node->hw_lvl; > req->num_regs =3D > nix_tm_sw_xoff_prep(node, suspend, req->reg, req->regval); > rc =3D mbox_process(mbox); > + mbox_put(mbox); > if (!rc) > node->flags =3D flags; > return rc; > @@ -715,30 +724,40 @@ roc_nix_tm_prealloc_res(struct roc_nix *roc_nix, ui= nt8_t lvl, >=20 > /* Preallocate contiguous */ > if (nix->contig_rsvd[hw_lvl] < contig) { > - req =3D mbox_alloc_msg_nix_txsch_alloc(mbox); > - if (req =3D=3D NULL) > + req =3D mbox_alloc_msg_nix_txsch_alloc(mbox_get(mbox)); > + if (req =3D=3D NULL) { > + mbox_put(mbox); > return rc; > + } > req->schq_contig[hw_lvl] =3D contig - nix->contig_rsvd[hw_lvl]; >=20 > rc =3D mbox_process_msg(mbox, (void *)&rsp); > - if (rc) > + if (rc) { > + mbox_put(mbox); > return rc; > + } >=20 > nix_tm_copy_rsp_to_nix(nix, rsp); > + mbox_put(mbox); > } >=20 > /* Preallocate contiguous */ > if (nix->discontig_rsvd[hw_lvl] < discontig) { > - req =3D mbox_alloc_msg_nix_txsch_alloc(mbox); > - if (req =3D=3D NULL) > + req =3D mbox_alloc_msg_nix_txsch_alloc(mbox_get(mbox)); > + if (req =3D=3D NULL) { > + mbox_put(mbox); > return -ENOSPC; > + } > req->schq[hw_lvl] =3D discontig - nix->discontig_rsvd[hw_lvl]; >=20 > rc =3D mbox_process_msg(mbox, (void *)&rsp); > - if (rc) > + if (rc) { > + mbox_put(mbox); > return rc; > + } >=20 > nix_tm_copy_rsp_to_nix(nix, rsp); > + mbox_put(mbox); > } >=20 > /* Save thresholds */ > @@ -802,17 +821,20 @@ roc_nix_tm_node_shaper_update(struct roc_nix *roc_n= ix, > uint32_t node_id, > node->flags &=3D ~NIX_TM_NODE_ENABLED; >=20 > /* Flush the specific node with SW_XOFF */ > - req =3D mbox_alloc_msg_nix_txschq_cfg(mbox); > + req =3D mbox_alloc_msg_nix_txschq_cfg(mbox_get(mbox)); > req->lvl =3D node->hw_lvl; > k =3D nix_tm_sw_xoff_prep(node, true, req->reg, req->regval); > req->num_regs =3D k; >=20 > rc =3D mbox_process(mbox); > - if (rc) > + if (rc) { > + mbox_put(mbox); > return rc; > + } > + mbox_put(mbox); >=20 > /* Update the PIR/CIR and clear SW XOFF */ > - req =3D mbox_alloc_msg_nix_txschq_cfg(mbox); > + req =3D mbox_alloc_msg_nix_txschq_cfg(mbox_get(mbox)); > req->lvl =3D node->hw_lvl; >=20 > k =3D nix_tm_shaper_reg_prep(node, profile, req->reg, req->regval); > @@ -821,6 +843,7 @@ roc_nix_tm_node_shaper_update(struct roc_nix *roc_nix= , uint32_t > node_id, >=20 > req->num_regs =3D k; > rc =3D mbox_process(mbox); > + mbox_put(mbox); > if (!rc) > node->flags |=3D NIX_TM_NODE_ENABLED; > return rc; > @@ -875,16 +898,17 @@ roc_nix_tm_node_parent_update(struct roc_nix *roc_n= ix, > uint32_t node_id, > return NIX_ERR_TM_SQ_UPDATE_FAIL; > } else { > /* XOFF Parent node */ > - req =3D mbox_alloc_msg_nix_txschq_cfg(mbox); > + req =3D mbox_alloc_msg_nix_txschq_cfg(mbox_get(mbox)); > req->lvl =3D node->parent->hw_lvl; > req->num_regs =3D nix_tm_sw_xoff_prep(node->parent, true, > req->reg, req->regval); > rc =3D mbox_process(mbox); > + mbox_put(mbox); > if (rc) > return rc; >=20 > /* XOFF this node and all other siblings */ > - req =3D mbox_alloc_msg_nix_txschq_cfg(mbox); > + req =3D mbox_alloc_msg_nix_txschq_cfg(mbox_get(mbox)); > req->lvl =3D node->hw_lvl; >=20 > k =3D 0; > @@ -895,10 +919,11 @@ roc_nix_tm_node_parent_update(struct roc_nix *roc_n= ix, > uint32_t node_id, > if (k >=3D MAX_REGS_PER_MBOX_MSG) { > req->num_regs =3D k; > rc =3D mbox_process(mbox); > + mbox_put(mbox); > if (rc) > return rc; > k =3D 0; > - req =3D mbox_alloc_msg_nix_txschq_cfg(mbox); > + req =3D mbox_alloc_msg_nix_txschq_cfg(mbox_get(mbox)); > req->lvl =3D node->hw_lvl; > } > } > @@ -906,20 +931,22 @@ roc_nix_tm_node_parent_update(struct roc_nix *roc_n= ix, > uint32_t node_id, > if (k) { > req->num_regs =3D k; > rc =3D mbox_process(mbox); > + mbox_put(mbox); > if (rc) > return rc; > /* Update new weight for current node */ > - req =3D mbox_alloc_msg_nix_txschq_cfg(mbox); > + req =3D mbox_alloc_msg_nix_txschq_cfg(mbox_get(mbox)); > } >=20 > req->lvl =3D node->hw_lvl; > req->num_regs =3D nix_tm_sched_reg_prep(nix, node, req->reg, req- > >regval); > rc =3D mbox_process(mbox); > + mbox_put(mbox); > if (rc) > return rc; >=20 > /* XON this node and all other siblings */ > - req =3D mbox_alloc_msg_nix_txschq_cfg(mbox); > + req =3D mbox_alloc_msg_nix_txschq_cfg(mbox_get(mbox)); > req->lvl =3D node->hw_lvl; >=20 > k =3D 0; > @@ -930,10 +957,11 @@ roc_nix_tm_node_parent_update(struct roc_nix *roc_n= ix, > uint32_t node_id, > if (k >=3D MAX_REGS_PER_MBOX_MSG) { > req->num_regs =3D k; > rc =3D mbox_process(mbox); > + mbox_put(mbox); > if (rc) > return rc; > k =3D 0; > - req =3D mbox_alloc_msg_nix_txschq_cfg(mbox); > + req =3D mbox_alloc_msg_nix_txschq_cfg(mbox_get(mbox)); > req->lvl =3D node->hw_lvl; > } > } > @@ -941,15 +969,17 @@ roc_nix_tm_node_parent_update(struct roc_nix *roc_n= ix, > uint32_t node_id, > if (k) { > req->num_regs =3D k; > rc =3D mbox_process(mbox); > + mbox_put(mbox); > if (rc) > return rc; > /* XON Parent node */ > - req =3D mbox_alloc_msg_nix_txschq_cfg(mbox); > + req =3D mbox_alloc_msg_nix_txschq_cfg(mbox_get(mbox)); > } >=20 > req->lvl =3D node->parent->hw_lvl; > req->num_regs =3D nix_tm_sw_xoff_prep(node->parent, false, req->reg, > req->regval); > rc =3D mbox_process(mbox); > + mbox_put(mbox); > if (rc) > return rc; > } > @@ -1001,20 +1031,22 @@ roc_nix_tm_rlimit_sq(struct roc_nix *roc_nix, uin= t16_t qid, > uint64_t rate) > int rc; >=20 > if ((nix->tm_tree =3D=3D ROC_NIX_TM_USER) || > - !(nix->tm_flags & NIX_TM_HIERARCHY_ENA)) > + !(nix->tm_flags & NIX_TM_HIERARCHY_ENA)) { > return NIX_ERR_TM_INVALID_TREE; > + } >=20 > node =3D nix_tm_node_search(nix, qid, nix->tm_tree); >=20 > /* check if we found a valid leaf node */ > if (!node || !nix_tm_is_leaf(nix, node->lvl) || !node->parent || > - node->parent->hw_id =3D=3D NIX_TM_HW_ID_INVALID) > + node->parent->hw_id =3D=3D NIX_TM_HW_ID_INVALID) { > return NIX_ERR_TM_INVALID_NODE; > + } >=20 > parent =3D node->parent; > flags =3D parent->flags; >=20 > - req =3D mbox_alloc_msg_nix_txschq_cfg(mbox); > + req =3D mbox_alloc_msg_nix_txschq_cfg(mbox_get(mbox)); > req->lvl =3D NIX_TXSCH_LVL_MDQ; > reg =3D req->reg; > regval =3D req->regval; > @@ -1043,6 +1075,7 @@ roc_nix_tm_rlimit_sq(struct roc_nix *roc_nix, uint1= 6_t qid, > uint64_t rate) > exit: > req->num_regs =3D k; > rc =3D mbox_process(mbox); > + mbox_put(mbox); > if (rc) > return rc; >=20 > @@ -1068,14 +1101,17 @@ roc_nix_tm_fini(struct roc_nix *roc_nix) > plt_err("Failed to freeup existing nodes or rsrcs, rc=3D%d", rc); >=20 > /* Free all other hw resources */ > - req =3D mbox_alloc_msg_nix_txsch_free(mbox); > - if (req =3D=3D NULL) > + req =3D mbox_alloc_msg_nix_txsch_free(mbox_get(mbox)); > + if (req =3D=3D NULL) { > + mbox_put(mbox); > return; > + } >=20 > req->flags =3D TXSCHQ_FREE_ALL; > rc =3D mbox_process(mbox); > if (rc) > plt_err("Failed to freeup all res, rc=3D%d", rc); > + mbox_put(mbox); >=20 > for (hw_lvl =3D 0; hw_lvl < NIX_TXSCH_LVL_CNT; hw_lvl++) { > plt_bitmap_reset(nix->schq_bmp[hw_lvl]); > @@ -1094,7 +1130,7 @@ int > roc_nix_tm_rsrc_count(struct roc_nix *roc_nix, uint16_t schq[ROC_TM_LVL_= MAX]) > { > struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct mbox *mbox =3D (&nix->dev)->mbox; > + struct mbox *mbox =3D mbox_get((&nix->dev)->mbox); > struct free_rsrcs_rsp *rsp; > uint8_t hw_lvl; > int rc, i; > @@ -1103,7 +1139,7 @@ roc_nix_tm_rsrc_count(struct roc_nix *roc_nix, uint= 16_t > schq[ROC_TM_LVL_MAX]) > mbox_alloc_msg_free_rsrc_cnt(mbox); > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; >=20 > for (i =3D 0; i < ROC_TM_LVL_MAX; i++) { > hw_lvl =3D nix_tm_lvl2nix(nix, i); > @@ -1114,7 +1150,10 @@ roc_nix_tm_rsrc_count(struct roc_nix *roc_nix, uin= t16_t > schq[ROC_TM_LVL_MAX]) > rsp->schq[hw_lvl]); > } >=20 > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > void > diff --git a/drivers/common/cnxk/roc_nix_tm_utils.c > b/drivers/common/cnxk/roc_nix_tm_utils.c > index d33e793664..a52b897713 100644 > --- a/drivers/common/cnxk/roc_nix_tm_utils.c > +++ b/drivers/common/cnxk/roc_nix_tm_utils.c > @@ -1166,7 +1166,7 @@ roc_nix_tm_node_stats_get(struct roc_nix *roc_nix, = uint32_t > node_id, bool clear, >=20 > memset(n_stats, 0, sizeof(struct roc_nix_tm_node_stats)); >=20 > - req =3D mbox_alloc_msg_nix_txschq_cfg(mbox); > + req =3D mbox_alloc_msg_nix_txschq_cfg(mbox_get(mbox)); > req->read =3D 1; > req->lvl =3D NIX_TXSCH_LVL_TL1; >=20 > @@ -1182,8 +1182,10 @@ roc_nix_tm_node_stats_get(struct roc_nix *roc_nix,= uint32_t > node_id, bool clear, > req->num_regs =3D i; >=20 > rc =3D mbox_process_msg(mbox, (void **)&rsp); > - if (rc) > + if (rc) { > + mbox_put(mbox); > return rc; > + } >=20 > /* Return stats */ > n_stats->stats[ROC_NIX_TM_NODE_PKTS_DROPPED] =3D rsp->regval[0]; > @@ -1194,13 +1196,14 @@ roc_nix_tm_node_stats_get(struct roc_nix *roc_nix= , uint32_t > node_id, bool clear, > n_stats->stats[ROC_NIX_TM_NODE_YELLOW_BYTES] =3D rsp->regval[5]; > n_stats->stats[ROC_NIX_TM_NODE_RED_PKTS] =3D rsp->regval[6]; > n_stats->stats[ROC_NIX_TM_NODE_RED_BYTES] =3D rsp->regval[7]; > + mbox_put(mbox); >=20 > clear_stats: > if (!clear) > return 0; >=20 > /* Clear all the stats */ > - req =3D mbox_alloc_msg_nix_txschq_cfg(mbox); > + req =3D mbox_alloc_msg_nix_txschq_cfg(mbox_get(mbox)); > req->lvl =3D NIX_TXSCH_LVL_TL1; > i =3D 0; > req->reg[i++] =3D NIX_AF_TL1X_DROPPED_PACKETS(schq); > @@ -1213,7 +1216,9 @@ roc_nix_tm_node_stats_get(struct roc_nix *roc_nix, = uint32_t > node_id, bool clear, > req->reg[i++] =3D NIX_AF_TL1X_RED_BYTES(schq); > req->num_regs =3D i; >=20 > - return mbox_process_msg(mbox, (void **)&rsp); > + rc =3D mbox_process_msg(mbox, (void **)&rsp); > + mbox_put(mbox); > + return rc; > } >=20 > bool > diff --git a/drivers/common/cnxk/roc_nix_vlan.c b/drivers/common/cnxk/roc= _nix_vlan.c > index 66bf8adbb3..abd2eb0571 100644 > --- a/drivers/common/cnxk/roc_nix_vlan.c > +++ b/drivers/common/cnxk/roc_nix_vlan.c > @@ -5,29 +5,25 @@ > #include "roc_api.h" > #include "roc_priv.h" >=20 > -static inline struct mbox * > -get_mbox(struct roc_nix *roc_nix) > -{ > - struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > - struct dev *dev =3D &nix->dev; > - > - return dev->mbox; > -} > - > int > roc_nix_vlan_mcam_entry_read(struct roc_nix *roc_nix, uint32_t index, > struct npc_mcam_read_entry_rsp **rsp) > { > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct npc_mcam_read_entry_req *req; > int rc =3D -ENOSPC; >=20 > req =3D mbox_alloc_msg_npc_mcam_read_entry(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->entry =3D index; >=20 > - return mbox_process_msg(mbox, (void **)rsp); > + rc =3D mbox_process_msg(mbox, (void **)rsp); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -35,20 +31,25 @@ roc_nix_vlan_mcam_entry_write(struct roc_nix *roc_nix= , uint32_t > index, > struct mcam_entry *entry, uint8_t intf, > uint8_t enable) > { > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct npc_mcam_write_entry_req *req; > struct msghdr *rsp; > int rc =3D -ENOSPC; >=20 > req =3D mbox_alloc_msg_npc_mcam_write_entry(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->entry =3D index; > req->intf =3D intf; > req->enable_entry =3D enable; > mbox_memcpy(&req->entry_data, entry, sizeof(struct mcam_entry)); >=20 > - return mbox_process_msg(mbox, (void *)&rsp); > + rc =3D mbox_process_msg(mbox, (void *)&rsp); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -58,12 +59,14 @@ roc_nix_vlan_mcam_entry_alloc_and_write(struct roc_ni= x *roc_nix, > { > struct npc_mcam_alloc_and_write_entry_req *req; > struct npc_mcam_alloc_and_write_entry_rsp *rsp; > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > int rc =3D -ENOSPC; >=20 > req =3D mbox_alloc_msg_npc_mcam_alloc_and_write_entry(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->priority =3D priority; > req->ref_entry =3D ref_entry; > req->intf =3D intf; > @@ -72,24 +75,32 @@ roc_nix_vlan_mcam_entry_alloc_and_write(struct roc_ni= x *roc_nix, >=20 > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; >=20 > - return rsp->entry; > + rc =3D rsp->entry; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > roc_nix_vlan_mcam_entry_free(struct roc_nix *roc_nix, uint32_t index) > { > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct npc_mcam_free_entry_req *req; > int rc =3D -ENOSPC; >=20 > req =3D mbox_alloc_msg_npc_mcam_free_entry(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->entry =3D index; >=20 > - return mbox_process_msg(mbox, NULL); > + rc =3D mbox_process_msg(mbox, NULL); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -97,33 +108,40 @@ roc_nix_vlan_mcam_entry_ena_dis(struct roc_nix *roc_= nix, > uint32_t index, > const int enable) > { > struct npc_mcam_ena_dis_entry_req *req; > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > int rc =3D -ENOSPC; >=20 > if (enable) { > req =3D mbox_alloc_msg_npc_mcam_ena_entry(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > } else { > req =3D mbox_alloc_msg_npc_mcam_dis_entry(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > } >=20 > req->entry =3D index; > - return mbox_process_msg(mbox, NULL); > + rc =3D mbox_process_msg(mbox, NULL); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > roc_nix_vlan_strip_vtag_ena_dis(struct roc_nix *roc_nix, bool enable) > { > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct nix_vtag_config *vtag_cfg; > int rc =3D -ENOSPC; >=20 > vtag_cfg =3D mbox_alloc_msg_nix_vtag_cfg(mbox); > if (vtag_cfg =3D=3D NULL) > - return rc; > + goto exit; > vtag_cfg->vtag_size =3D NIX_VTAGSIZE_T4; > vtag_cfg->cfg_type =3D 1; /* Rx VLAN configuration */ > vtag_cfg->rx.capture_vtag =3D 1; /* Always capture */ > @@ -134,7 +152,10 @@ roc_nix_vlan_strip_vtag_ena_dis(struct roc_nix *roc_= nix, bool > enable) > else > vtag_cfg->rx.strip_vtag =3D 0; >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -142,14 +163,16 @@ roc_nix_vlan_insert_ena_dis(struct roc_nix *roc_nix= , > struct roc_nix_vlan_config *vlan_cfg, > uint64_t *mcam_index, bool enable) > { > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct nix_vtag_config *vtag_cfg; > struct nix_vtag_config_rsp *rsp; > int rc =3D -ENOSPC; >=20 > vtag_cfg =3D mbox_alloc_msg_nix_vtag_cfg(mbox); > if (vtag_cfg =3D=3D NULL) > - return rc; > + goto exit; > vtag_cfg->cfg_type =3D 0; /* Tx VLAN configuration */ > vtag_cfg->vtag_size =3D NIX_VTAGSIZE_T4; >=20 > @@ -175,25 +198,30 @@ roc_nix_vlan_insert_ena_dis(struct roc_nix *roc_nix= , >=20 > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; >=20 > if (enable) > *mcam_index =3D > (((uint64_t)rsp->vtag1_idx << 32) | rsp->vtag0_idx); >=20 > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > roc_nix_vlan_tpid_set(struct roc_nix *roc_nix, uint32_t type, uint16_t t= pid) > { > - struct mbox *mbox =3D get_mbox(roc_nix); > + struct nix *nix =3D roc_nix_to_nix_priv(roc_nix); > + struct dev *dev =3D &nix->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct nix_set_vlan_tpid *tpid_cfg; > int rc =3D -ENOSPC; >=20 > tpid_cfg =3D mbox_alloc_msg_nix_set_vlan_tpid(mbox); > if (tpid_cfg =3D=3D NULL) > - return rc; > + goto exit; > tpid_cfg->tpid =3D tpid; >=20 > if (type & ROC_NIX_VLAN_TYPE_OUTER) > @@ -201,5 +229,8 @@ roc_nix_vlan_tpid_set(struct roc_nix *roc_nix, uint32= _t type, > uint16_t tpid) > else > tpid_cfg->vlan_type =3D NIX_VLAN_TYPE_INNER; >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } > diff --git a/drivers/common/cnxk/roc_npa.c b/drivers/common/cnxk/roc_npa.= c > index ee42434c38..1a5debcf76 100644 > --- a/drivers/common/cnxk/roc_npa.c > +++ b/drivers/common/cnxk/roc_npa.c > @@ -40,17 +40,19 @@ roc_npa_aura_op_range_set(uint64_t aura_handle, uint6= 4_t > start_iova, > } >=20 > static int > -npa_aura_pool_init(struct mbox *mbox, uint32_t aura_id, struct npa_aura_= s *aura, > +npa_aura_pool_init(struct mbox *m_box, uint32_t aura_id, struct npa_aura= _s *aura, > struct npa_pool_s *pool) > { > struct npa_aq_enq_req *aura_init_req, *pool_init_req; > struct npa_aq_enq_rsp *aura_init_rsp, *pool_init_rsp; > - struct mbox_dev *mdev =3D &mbox->dev[0]; > + struct mbox_dev *mdev =3D &m_box->dev[0]; > int rc =3D -ENOSPC, off; > + struct mbox *mbox; >=20 > + mbox =3D mbox_get(m_box); > aura_init_req =3D mbox_alloc_msg_npa_aq_enq(mbox); > if (aura_init_req =3D=3D NULL) > - return rc; > + goto exit; > aura_init_req->aura_id =3D aura_id; > aura_init_req->ctype =3D NPA_AQ_CTYPE_AURA; > aura_init_req->op =3D NPA_AQ_INSTOP_INIT; > @@ -58,7 +60,7 @@ npa_aura_pool_init(struct mbox *mbox, uint32_t aura_id,= struct > npa_aura_s *aura, >=20 > pool_init_req =3D mbox_alloc_msg_npa_aq_enq(mbox); > if (pool_init_req =3D=3D NULL) > - return rc; > + goto exit; > pool_init_req->aura_id =3D aura_id; > pool_init_req->ctype =3D NPA_AQ_CTYPE_POOL; > pool_init_req->op =3D NPA_AQ_INSTOP_INIT; > @@ -66,7 +68,7 @@ npa_aura_pool_init(struct mbox *mbox, uint32_t aura_id,= struct > npa_aura_s *aura, >=20 > rc =3D mbox_process(mbox); > if (rc < 0) > - return rc; > + goto exit; >=20 > off =3D mbox->rx_start + > PLT_ALIGN(sizeof(struct mbox_hdr), MBOX_MSG_ALIGN); > @@ -75,19 +77,23 @@ npa_aura_pool_init(struct mbox *mbox, uint32_t aura_i= d, struct > npa_aura_s *aura, > pool_init_rsp =3D (struct npa_aq_enq_rsp *)((uintptr_t)mdev->mbase + of= f); >=20 > if (aura_init_rsp->hdr.rc =3D=3D 0 && pool_init_rsp->hdr.rc =3D=3D 0) > - return 0; > + rc =3D 0; > else > - return NPA_ERR_AURA_POOL_INIT; > + rc =3D NPA_ERR_AURA_POOL_INIT; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > static int > -npa_aura_pool_fini(struct mbox *mbox, uint32_t aura_id, uint64_t aura_ha= ndle) > +npa_aura_pool_fini(struct mbox *m_box, uint32_t aura_id, uint64_t aura_h= andle) > { > struct npa_aq_enq_req *aura_req, *pool_req; > struct npa_aq_enq_rsp *aura_rsp, *pool_rsp; > - struct mbox_dev *mdev =3D &mbox->dev[0]; > + struct mbox_dev *mdev =3D &m_box->dev[0]; > struct ndc_sync_op *ndc_req; > int rc =3D -ENOSPC, off; > + struct mbox *mbox; > uint64_t ptr; >=20 > /* Procedure for disabling an aura/pool */ > @@ -98,9 +104,10 @@ npa_aura_pool_fini(struct mbox *mbox, uint32_t aura_i= d, uint64_t > aura_handle) > ptr =3D roc_npa_aura_op_alloc(aura_handle, 0); > } while (ptr); >=20 > + mbox =3D mbox_get(m_box); > pool_req =3D mbox_alloc_msg_npa_aq_enq(mbox); > if (pool_req =3D=3D NULL) > - return rc; > + goto exit; > pool_req->aura_id =3D aura_id; > pool_req->ctype =3D NPA_AQ_CTYPE_POOL; > pool_req->op =3D NPA_AQ_INSTOP_WRITE; > @@ -109,7 +116,7 @@ npa_aura_pool_fini(struct mbox *mbox, uint32_t aura_i= d, uint64_t > aura_handle) >=20 > aura_req =3D mbox_alloc_msg_npa_aq_enq(mbox); > if (aura_req =3D=3D NULL) > - return rc; > + goto exit; > aura_req->aura_id =3D aura_id; > aura_req->ctype =3D NPA_AQ_CTYPE_AURA; > aura_req->op =3D NPA_AQ_INSTOP_WRITE; > @@ -118,7 +125,7 @@ npa_aura_pool_fini(struct mbox *mbox, uint32_t aura_i= d, uint64_t > aura_handle) >=20 > rc =3D mbox_process(mbox); > if (rc < 0) > - return rc; > + goto exit; >=20 > off =3D mbox->rx_start + > PLT_ALIGN(sizeof(struct mbox_hdr), MBOX_MSG_ALIGN); > @@ -132,15 +139,21 @@ npa_aura_pool_fini(struct mbox *mbox, uint32_t aura= _id, > uint64_t aura_handle) >=20 > /* Sync NDC-NPA for LF */ > ndc_req =3D mbox_alloc_msg_ndc_sync_op(mbox); > - if (ndc_req =3D=3D NULL) > - return -ENOSPC; > + if (ndc_req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } > ndc_req->npa_lf_sync =3D 1; > rc =3D mbox_process(mbox); > if (rc) { > plt_err("Error on NDC-NPA LF sync, rc %d", rc); > - return NPA_ERR_AURA_POOL_FINI; > + rc =3D NPA_ERR_AURA_POOL_FINI; > + goto exit; > } > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -157,13 +170,13 @@ roc_npa_pool_op_pc_reset(uint64_t aura_handle) > if (lf =3D=3D NULL) > return NPA_ERR_PARAM; >=20 > - mbox =3D lf->mbox; > + mbox =3D mbox_get(lf->mbox); > mdev =3D &mbox->dev[0]; > plt_npa_dbg("lf=3D%p aura_handle=3D0x%" PRIx64, lf, aura_handle); >=20 > pool_req =3D mbox_alloc_msg_npa_aq_enq(mbox); > if (pool_req =3D=3D NULL) > - return rc; > + goto exit; > pool_req->aura_id =3D roc_npa_aura_handle_to_aura(aura_handle); > pool_req->ctype =3D NPA_AQ_CTYPE_POOL; > pool_req->op =3D NPA_AQ_INSTOP_WRITE; > @@ -172,26 +185,34 @@ roc_npa_pool_op_pc_reset(uint64_t aura_handle) >=20 > rc =3D mbox_process(mbox); > if (rc < 0) > - return rc; > + goto exit; >=20 > off =3D mbox->rx_start + > PLT_ALIGN(sizeof(struct mbox_hdr), MBOX_MSG_ALIGN); > pool_rsp =3D (struct npa_aq_enq_rsp *)((uintptr_t)mdev->mbase + off); >=20 > - if (pool_rsp->hdr.rc !=3D 0) > - return NPA_ERR_AURA_POOL_FINI; > + if (pool_rsp->hdr.rc !=3D 0) { > + rc =3D NPA_ERR_AURA_POOL_FINI; > + goto exit; > + } >=20 > /* Sync NDC-NPA for LF */ > ndc_req =3D mbox_alloc_msg_ndc_sync_op(mbox); > - if (ndc_req =3D=3D NULL) > - return -ENOSPC; > + if (ndc_req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } > ndc_req->npa_lf_sync =3D 1; > rc =3D mbox_process(mbox); > if (rc) { > plt_err("Error on NDC-NPA LF sync, rc %d", rc); > - return NPA_ERR_AURA_POOL_FINI; > + rc =3D NPA_ERR_AURA_POOL_FINI; > + goto exit; > } > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -199,15 +220,18 @@ roc_npa_aura_drop_set(uint64_t aura_handle, uint64_= t limit, > bool ena) > { > struct npa_aq_enq_req *aura_req; > struct npa_lf *lf; > + struct mbox *mbox; > int rc; >=20 > lf =3D idev_npa_obj_get(); > if (lf =3D=3D NULL) > return NPA_ERR_DEVICE_NOT_BOUNDED; > - > - aura_req =3D mbox_alloc_msg_npa_aq_enq(lf->mbox); > - if (aura_req =3D=3D NULL) > - return -ENOMEM; > + mbox =3D mbox_get(lf->mbox); > + aura_req =3D mbox_alloc_msg_npa_aq_enq(mbox); > + if (aura_req =3D=3D NULL) { > + rc =3D -ENOMEM; > + goto exit; > + } > aura_req->aura_id =3D roc_npa_aura_handle_to_aura(aura_handle); > aura_req->ctype =3D NPA_AQ_CTYPE_AURA; > aura_req->op =3D NPA_AQ_INSTOP_WRITE; > @@ -217,8 +241,10 @@ roc_npa_aura_drop_set(uint64_t aura_handle, uint64_t= limit, bool > ena) > aura_req->aura_mask.aura_drop_ena =3D > ~(aura_req->aura_mask.aura_drop_ena); > aura_req->aura_mask.aura_drop =3D ~(aura_req->aura_mask.aura_drop); > - rc =3D mbox_process(lf->mbox); > + rc =3D mbox_process(mbox); >=20 > +exit: > + mbox_put(mbox); > return rc; > } >=20 > @@ -326,12 +352,16 @@ npa_aura_pool_pair_alloc(struct npa_lf *lf, const u= int32_t > block_size, > return NPA_ERR_INVALID_BLOCK_SZ; >=20 > /* Get aura_id from resource bitmap */ > + roc_npa_dev_lock(); > aura_id =3D find_free_aura(lf, flags); > - if (aura_id < 0) > + if (aura_id < 0) { > + roc_npa_dev_unlock(); > return NPA_ERR_AURA_ID_ALLOC; > + } >=20 > /* Mark pool as reserved */ > plt_bitmap_clear(lf->npa_bmp, aura_id); > + roc_npa_dev_unlock(); >=20 > /* Configuration based on each aura has separate pool(aura-pool pair) *= / > pool_id =3D aura_id; > @@ -401,7 +431,9 @@ npa_aura_pool_pair_alloc(struct npa_lf *lf, const uin= t32_t > block_size, > stack_mem_free: > plt_memzone_free(mz); > aura_res_put: > + roc_npa_dev_lock(); > plt_bitmap_set(lf->npa_bmp, aura_id); > + roc_npa_dev_unlock(); > exit: > return rc; > } > @@ -466,23 +498,28 @@ roc_npa_aura_limit_modify(uint64_t aura_handle, uin= t16_t > aura_limit) > { > struct npa_aq_enq_req *aura_req; > struct npa_lf *lf; > + struct mbox *mbox; > int rc; >=20 > lf =3D idev_npa_obj_get(); > if (lf =3D=3D NULL) > return NPA_ERR_DEVICE_NOT_BOUNDED; >=20 > - aura_req =3D mbox_alloc_msg_npa_aq_enq(lf->mbox); > - if (aura_req =3D=3D NULL) > - return -ENOMEM; > + mbox =3D mbox_get(lf->mbox); > + aura_req =3D mbox_alloc_msg_npa_aq_enq(mbox); > + if (aura_req =3D=3D NULL) { > + rc =3D -ENOMEM; > + goto exit; > + } > aura_req->aura_id =3D roc_npa_aura_handle_to_aura(aura_handle); > aura_req->ctype =3D NPA_AQ_CTYPE_AURA; > aura_req->op =3D NPA_AQ_INSTOP_WRITE; >=20 > aura_req->aura.limit =3D aura_limit; > aura_req->aura_mask.limit =3D ~(aura_req->aura_mask.limit); > - rc =3D mbox_process(lf->mbox); > - > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > return rc; > } >=20 > @@ -501,7 +538,9 @@ npa_aura_pool_pair_free(struct npa_lf *lf, uint64_t a= ura_handle) > rc |=3D npa_stack_dma_free(lf, name, pool_id); > memset(&lf->aura_attr[aura_id], 0, sizeof(struct npa_aura_attr)); >=20 > + roc_npa_dev_lock(); > plt_bitmap_set(lf->npa_bmp, aura_id); > + roc_npa_dev_unlock(); >=20 > return rc; > } > @@ -531,6 +570,7 @@ roc_npa_pool_range_update_check(uint64_t aura_handle) > __io struct npa_pool_s *pool; > struct npa_aq_enq_req *req; > struct npa_aq_enq_rsp *rsp; > + struct mbox *mbox; > int rc; >=20 > lf =3D idev_npa_obj_get(); > @@ -539,28 +579,35 @@ roc_npa_pool_range_update_check(uint64_t aura_handl= e) >=20 > lim =3D lf->aura_lim; >=20 > - req =3D mbox_alloc_msg_npa_aq_enq(lf->mbox); > - if (req =3D=3D NULL) > - return -ENOSPC; > + mbox =3D mbox_get(lf->mbox); > + req =3D mbox_alloc_msg_npa_aq_enq(mbox); > + if (req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > req->aura_id =3D aura_id; > req->ctype =3D NPA_AQ_CTYPE_POOL; > req->op =3D NPA_AQ_INSTOP_READ; >=20 > - rc =3D mbox_process_msg(lf->mbox, (void *)&rsp); > + rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) { > plt_err("Failed to get pool(0x%" PRIx64 ") context", aura_id); > - return rc; > + goto exit; > } >=20 > pool =3D &rsp->pool; > if (lim[aura_id].ptr_start !=3D pool->ptr_start || > lim[aura_id].ptr_end !=3D pool->ptr_end) { > plt_err("Range update failed on pool(0x%" PRIx64 ")", aura_id); > - return NPA_ERR_PARAM; > + rc =3D NPA_ERR_PARAM; > + goto exit; > } >=20 > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > uint64_t > @@ -584,78 +631,108 @@ roc_npa_zero_aura_handle(void) > } >=20 > static inline int > -npa_attach(struct mbox *mbox) > +npa_attach(struct mbox *m_box) > { > + struct mbox *mbox =3D mbox_get(m_box); > struct rsrc_attach_req *req; > + int rc; >=20 > req =3D mbox_alloc_msg_attach_resources(mbox); > - if (req =3D=3D NULL) > - return -ENOSPC; > + if (req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } > req->modify =3D true; > req->npalf =3D true; >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > static inline int > -npa_detach(struct mbox *mbox) > +npa_detach(struct mbox *m_box) > { > + struct mbox *mbox =3D mbox_get(m_box); > struct rsrc_detach_req *req; > + int rc; >=20 > req =3D mbox_alloc_msg_detach_resources(mbox); > - if (req =3D=3D NULL) > - return -ENOSPC; > + if (req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } > req->partial =3D true; > req->npalf =3D true; >=20 > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > static inline int > -npa_get_msix_offset(struct mbox *mbox, uint16_t *npa_msixoff) > +npa_get_msix_offset(struct mbox *m_box, uint16_t *npa_msixoff) > { > + struct mbox *mbox =3D mbox_get(m_box); > struct msix_offset_rsp *msix_rsp; > int rc; >=20 > + /* Initialize msixoff */ > + *npa_msixoff =3D 0; > /* Get NPA MSIX vector offsets */ > mbox_alloc_msg_msix_offset(mbox); > rc =3D mbox_process_msg(mbox, (void *)&msix_rsp); > if (rc =3D=3D 0) > *npa_msixoff =3D msix_rsp->npa_msixoff; >=20 > + mbox_put(mbox); > return rc; > } >=20 > static inline int > npa_lf_alloc(struct npa_lf *lf) > { > - struct mbox *mbox =3D lf->mbox; > + struct mbox *mbox =3D mbox_get(lf->mbox); > struct npa_lf_alloc_req *req; > struct npa_lf_alloc_rsp *rsp; > int rc; >=20 > req =3D mbox_alloc_msg_npa_lf_alloc(mbox); > - if (req =3D=3D NULL) > - return -ENOSPC; > + if (req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } > req->aura_sz =3D lf->aura_sz; > req->nr_pools =3D lf->nr_pools; >=20 > rc =3D mbox_process_msg(mbox, (void *)&rsp); > - if (rc) > - return NPA_ERR_ALLOC; > + if (rc) { > + rc =3D NPA_ERR_ALLOC; > + goto exit; > + } >=20 > lf->stack_pg_ptrs =3D rsp->stack_pg_ptrs; > lf->stack_pg_bytes =3D rsp->stack_pg_bytes; > lf->qints =3D rsp->qints; >=20 > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > static int > -npa_lf_free(struct mbox *mbox) > +npa_lf_free(struct mbox *mail_box) > { > + struct mbox *mbox =3D mbox_get(mail_box); > + int rc; > + > mbox_alloc_msg_npa_lf_free(mbox); > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > + mbox_put(mbox); > + return rc; > } >=20 > static inline uint32_t > @@ -921,3 +998,21 @@ roc_npa_dev_fini(struct roc_npa *roc_npa) > npa->dev.drv_inited =3D false; > return dev_fini(&npa->dev, npa->pci_dev); > } > + > +void > +roc_npa_dev_lock(void) > +{ > + struct idev_cfg *idev =3D idev_get_cfg(); > + > + if (idev !=3D NULL) > + plt_spinlock_lock(&idev->npa_dev_lock); > +} > + > +void > +roc_npa_dev_unlock(void) > +{ > + struct idev_cfg *idev =3D idev_get_cfg(); > + > + if (idev !=3D NULL) > + plt_spinlock_unlock(&idev->npa_dev_lock); > +} > diff --git a/drivers/common/cnxk/roc_npa.h b/drivers/common/cnxk/roc_npa.= h > index fed1942404..82596876f0 100644 > --- a/drivers/common/cnxk/roc_npa.h > +++ b/drivers/common/cnxk/roc_npa.h > @@ -763,4 +763,7 @@ int __roc_api roc_npa_pool_op_pc_reset(uint64_t aura_= handle); > int __roc_api roc_npa_aura_drop_set(uint64_t aura_handle, uint64_t limit= , > bool ena); >=20 > +void __roc_api roc_npa_dev_lock(void); > +void __roc_api roc_npa_dev_unlock(void); > + > #endif /* _ROC_NPA_H_ */ > diff --git a/drivers/common/cnxk/roc_npa_debug.c > b/drivers/common/cnxk/roc_npa_debug.c > index 798ace291c..173d32cd9b 100644 > --- a/drivers/common/cnxk/roc_npa_debug.c > +++ b/drivers/common/cnxk/roc_npa_debug.c > @@ -91,6 +91,7 @@ roc_npa_ctx_dump(void) > { > struct npa_aq_enq_req *aq; > struct npa_aq_enq_rsp *rsp; > + struct mbox *mbox; > struct npa_lf *lf; > uint32_t q; > int rc =3D 0; > @@ -98,23 +99,26 @@ roc_npa_ctx_dump(void) > lf =3D idev_npa_obj_get(); > if (lf =3D=3D NULL) > return NPA_ERR_DEVICE_NOT_BOUNDED; > + mbox =3D mbox_get(lf->mbox); >=20 > for (q =3D 0; q < lf->nr_pools; q++) { > /* Skip disabled POOL */ > if (plt_bitmap_get(lf->npa_bmp, q)) > continue; >=20 > - aq =3D mbox_alloc_msg_npa_aq_enq(lf->mbox); > - if (aq =3D=3D NULL) > - return -ENOSPC; > + aq =3D mbox_alloc_msg_npa_aq_enq(mbox); > + if (aq =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } > aq->aura_id =3D q; > aq->ctype =3D NPA_AQ_CTYPE_POOL; > aq->op =3D NPA_AQ_INSTOP_READ; >=20 > - rc =3D mbox_process_msg(lf->mbox, (void *)&rsp); > + rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) { > plt_err("Failed to get pool(%d) context", q); > - return rc; > + goto exit; > } > npa_dump("=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D pool=3D%d =3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n", q); > npa_pool_dump(&rsp->pool); > @@ -125,22 +129,26 @@ roc_npa_ctx_dump(void) > if (plt_bitmap_get(lf->npa_bmp, q)) > continue; >=20 > - aq =3D mbox_alloc_msg_npa_aq_enq(lf->mbox); > - if (aq =3D=3D NULL) > - return -ENOSPC; > + aq =3D mbox_alloc_msg_npa_aq_enq(mbox); > + if (aq =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } > aq->aura_id =3D q; > aq->ctype =3D NPA_AQ_CTYPE_AURA; > aq->op =3D NPA_AQ_INSTOP_READ; >=20 > - rc =3D mbox_process_msg(lf->mbox, (void *)&rsp); > + rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) { > plt_err("Failed to get aura(%d) context", q); > - return rc; > + goto exit; > } > npa_dump("=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D aura=3D%d =3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n", q); > npa_aura_dump(&rsp->aura); > } >=20 > +exit: > + mbox_put(mbox); > return rc; > } >=20 > diff --git a/drivers/common/cnxk/roc_npc.c b/drivers/common/cnxk/roc_npc.= c > index b38389b18a..2a2363033b 100644 > --- a/drivers/common/cnxk/roc_npc.c > +++ b/drivers/common/cnxk/roc_npc.c > @@ -947,13 +947,15 @@ npc_vtag_cfg_delete(struct roc_npc *roc_npc, struct > roc_npc_flow *flow) > } tx_vtag_action; >=20 > nix =3D roc_nix_to_nix_priv(roc_nix); > - mbox =3D (&nix->dev)->mbox; > + mbox =3D mbox_get((&nix->dev)->mbox); >=20 > tx_vtag_action.reg =3D flow->vtag_action; > vtag_cfg =3D mbox_alloc_msg_nix_vtag_cfg(mbox); >=20 > - if (vtag_cfg =3D=3D NULL) > - return -ENOSPC; > + if (vtag_cfg =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > vtag_cfg->cfg_type =3D VTAG_TX; > vtag_cfg->vtag_size =3D NIX_VTAGSIZE_T4; > @@ -967,9 +969,12 @@ npc_vtag_cfg_delete(struct roc_npc *roc_npc, struct = roc_npc_flow > *flow) >=20 > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; >=20 > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > static int > @@ -1063,10 +1068,12 @@ npc_vtag_insert_action_configure(struct mbox *mbo= x, struct > roc_npc_flow *flow, > struct nix_tx_vtag_action_s act; > } tx_vtag_action; >=20 > - vtag_cfg =3D mbox_alloc_msg_nix_vtag_cfg(mbox); > + vtag_cfg =3D mbox_alloc_msg_nix_vtag_cfg(mbox_get(mbox)); >=20 > - if (vtag_cfg =3D=3D NULL) > - return -ENOSPC; > + if (vtag_cfg =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > vtag_cfg->cfg_type =3D VTAG_TX; > vtag_cfg->vtag_size =3D NIX_VTAGSIZE_T4; > @@ -1086,12 +1093,13 @@ npc_vtag_insert_action_configure(struct mbox *mbo= x, struct > roc_npc_flow *flow, >=20 > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; >=20 > if (rsp->vtag0_idx < 0 || > ((flow->vtag_insert_count =3D=3D 2) && (rsp->vtag1_idx < 0))) { > plt_err("Failed to config TX VTAG action"); > - return -EINVAL; > + rc =3D -EINVAL; > + goto exit; > } >=20 > tx_vtag_action.reg =3D 0; > @@ -1116,7 +1124,10 @@ npc_vtag_insert_action_configure(struct mbox *mbox= , struct > roc_npc_flow *flow, >=20 > flow->vtag_action =3D tx_vtag_action.reg; >=20 > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > static int > @@ -1135,10 +1146,12 @@ npc_vtag_strip_action_configure(struct mbox *mbox= , > (*strip_cnt)++; > } >=20 > - vtag_cfg =3D mbox_alloc_msg_nix_vtag_cfg(mbox); > + vtag_cfg =3D mbox_alloc_msg_nix_vtag_cfg(mbox_get(mbox)); >=20 > - if (vtag_cfg =3D=3D NULL) > - return -ENOSPC; > + if (vtag_cfg =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > vtag_cfg->cfg_type =3D VTAG_RX; > vtag_cfg->rx.strip_vtag =3D 1; > @@ -1149,7 +1162,7 @@ npc_vtag_strip_action_configure(struct mbox *mbox, >=20 > rc =3D mbox_process(mbox); > if (rc) > - return rc; > + goto exit; >=20 > rx_vtag_action |=3D (NIX_RX_VTAGACTION_VTAG_VALID << 15); > rx_vtag_action |=3D ((uint64_t)NPC_LID_LB << 8); > @@ -1162,7 +1175,10 @@ npc_vtag_strip_action_configure(struct mbox *mbox, > } > flow->vtag_action =3D rx_vtag_action; >=20 > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > static int > @@ -1400,16 +1416,19 @@ roc_npc_mcam_merge_base_steering_rule(struct roc_= npc > *roc_npc, > struct npc_mcam_read_base_rule_rsp *base_rule_rsp; > struct npc *npc =3D roc_npc_to_npc_priv(roc_npc); > struct mcam_entry *base_entry; > + struct mbox *mbox =3D mbox_get(npc->mbox); > int idx, rc; >=20 > - if (roc_nix_is_pf(roc_npc->roc_nix)) > - return 0; > + if (roc_nix_is_pf(roc_npc->roc_nix)) { > + rc =3D 0; > + goto exit; > + } >=20 > - (void)mbox_alloc_msg_npc_read_base_steer_rule(npc->mbox); > - rc =3D mbox_process_msg(npc->mbox, (void *)&base_rule_rsp); > + (void)mbox_alloc_msg_npc_read_base_steer_rule(mbox); > + rc =3D mbox_process_msg(mbox, (void *)&base_rule_rsp); > if (rc) { > plt_err("Failed to fetch VF's base MCAM entry"); > - return rc; > + goto exit; > } > base_entry =3D &base_rule_rsp->entry_data; > for (idx =3D 0; idx < ROC_NPC_MAX_MCAM_WIDTH_DWORDS; idx++) { > @@ -1417,5 +1436,8 @@ roc_npc_mcam_merge_base_steering_rule(struct roc_np= c > *roc_npc, > flow->mcam_mask[idx] |=3D base_entry->kw_mask[idx]; > } >=20 > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } > diff --git a/drivers/common/cnxk/roc_npc_mcam.c > b/drivers/common/cnxk/roc_npc_mcam.c > index a725cabc57..33380ede10 100644 > --- a/drivers/common/cnxk/roc_npc_mcam.c > +++ b/drivers/common/cnxk/roc_npc_mcam.c > @@ -12,14 +12,16 @@ npc_mcam_alloc_counter(struct npc *npc, uint16_t *ctr= ) > struct mbox *mbox =3D npc->mbox; > int rc =3D -ENOSPC; >=20 > - req =3D mbox_alloc_msg_npc_mcam_alloc_counter(mbox); > + req =3D mbox_alloc_msg_npc_mcam_alloc_counter(mbox_get(mbox)); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->count =3D 1; > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; > *ctr =3D rsp->cntr_list[0]; > +exit: > + mbox_put(mbox); > return rc; > } >=20 > @@ -30,11 +32,14 @@ npc_mcam_free_counter(struct npc *npc, uint16_t ctr_i= d) > struct mbox *mbox =3D npc->mbox; > int rc =3D -ENOSPC; >=20 > - req =3D mbox_alloc_msg_npc_mcam_free_counter(mbox); > + req =3D mbox_alloc_msg_npc_mcam_free_counter(mbox_get(mbox)); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->cntr =3D ctr_id; > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -45,14 +50,16 @@ npc_mcam_read_counter(struct npc *npc, uint32_t ctr_i= d, uint64_t > *count) > struct mbox *mbox =3D npc->mbox; > int rc =3D -ENOSPC; >=20 > - req =3D mbox_alloc_msg_npc_mcam_counter_stats(mbox); > + req =3D mbox_alloc_msg_npc_mcam_counter_stats(mbox_get(mbox)); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->cntr =3D ctr_id; > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; > *count =3D rsp->stat; > +exit: > + mbox_put(mbox); > return rc; > } >=20 > @@ -63,11 +70,14 @@ npc_mcam_clear_counter(struct npc *npc, uint32_t ctr_= id) > struct mbox *mbox =3D npc->mbox; > int rc =3D -ENOSPC; >=20 > - req =3D mbox_alloc_msg_npc_mcam_clear_counter(mbox); > + req =3D mbox_alloc_msg_npc_mcam_clear_counter(mbox_get(mbox)); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->cntr =3D ctr_id; > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -77,11 +87,14 @@ npc_mcam_free_entry(struct npc *npc, uint32_t entry) > struct mbox *mbox =3D npc->mbox; > int rc =3D -ENOSPC; >=20 > - req =3D mbox_alloc_msg_npc_mcam_free_entry(mbox); > + req =3D mbox_alloc_msg_npc_mcam_free_entry(mbox_get(mbox)); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->entry =3D entry; > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -91,11 +104,14 @@ npc_mcam_free_all_entries(struct npc *npc) > struct mbox *mbox =3D npc->mbox; > int rc =3D -ENOSPC; >=20 > - req =3D mbox_alloc_msg_npc_mcam_free_entry(mbox); > + req =3D mbox_alloc_msg_npc_mcam_free_entry(mbox_get(mbox)); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->all =3D 1; > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > static int > @@ -315,9 +331,9 @@ npc_mcam_alloc_entries(struct npc *npc, int ref_mcam,= int > *alloc_entry, > int rc =3D -ENOSPC; > int i; >=20 > - req =3D mbox_alloc_msg_npc_mcam_alloc_entry(mbox); > + req =3D mbox_alloc_msg_npc_mcam_alloc_entry(mbox_get(mbox)); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->contig =3D 0; > req->count =3D req_count; > req->priority =3D prio; > @@ -325,11 +341,14 @@ npc_mcam_alloc_entries(struct npc *npc, int ref_mca= m, int > *alloc_entry, >=20 > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; > for (i =3D 0; i < rsp->count; i++) > alloc_entry[i] =3D rsp->entry_list[i]; > *resp_count =3D rsp->count; > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -341,9 +360,9 @@ npc_mcam_alloc_entry(struct npc *npc, struct roc_npc_= flow > *mcam, > struct mbox *mbox =3D npc->mbox; > int rc =3D -ENOSPC; >=20 > - req =3D mbox_alloc_msg_npc_mcam_alloc_entry(mbox); > + req =3D mbox_alloc_msg_npc_mcam_alloc_entry(mbox_get(mbox)); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->contig =3D 1; > req->count =3D 1; > req->priority =3D prio; > @@ -351,19 +370,22 @@ npc_mcam_alloc_entry(struct npc *npc, struct roc_np= c_flow > *mcam, >=20 > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; > memset(mcam, 0, sizeof(struct roc_npc_flow)); > mcam->mcam_id =3D rsp->entry; > mcam->nix_intf =3D ref_mcam->nix_intf; > *resp_count =3D rsp->count; > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > npc_mcam_ena_dis_entry(struct npc *npc, struct roc_npc_flow *mcam, bool = enable) > { > struct npc_mcam_ena_dis_entry_req *req; > - struct mbox *mbox =3D npc->mbox; > + struct mbox *mbox =3D mbox_get(npc->mbox); > int rc =3D -ENOSPC; >=20 > if (enable) > @@ -372,10 +394,13 @@ npc_mcam_ena_dis_entry(struct npc *npc, struct roc_= npc_flow > *mcam, bool enable) > req =3D mbox_alloc_msg_npc_mcam_dis_entry(mbox); >=20 > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->entry =3D mcam->mcam_id; > mcam->enable =3D enable; > - return mbox_process(mbox); > + rc =3D mbox_process(mbox); > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -399,8 +424,9 @@ npc_mcam_write_entry(struct npc *npc, struct roc_npc_= flow > *mcam) > return rc; > } >=20 > - req =3D mbox_alloc_msg_npc_mcam_write_entry(mbox); > + req =3D mbox_alloc_msg_npc_mcam_write_entry(mbox_get(mbox)); > if (req =3D=3D NULL) { > + mbox_put(mbox); > if (mcam->use_ctr) > npc_mcam_free_counter(npc, ctr); >=20 > @@ -420,7 +446,9 @@ npc_mcam_write_entry(struct npc *npc, struct roc_npc_= flow > *mcam) > req->entry_data.kw[i] =3D mcam->mcam_data[i]; > req->entry_data.kw_mask[i] =3D mcam->mcam_mask[i]; > } > - return mbox_process_msg(mbox, (void *)&rsp); > + rc =3D mbox_process_msg(mbox, (void *)&rsp); > + mbox_put(mbox); > + return rc; > } >=20 > static void > @@ -483,7 +511,7 @@ int > npc_mcam_fetch_kex_cfg(struct npc *npc) > { > struct npc_get_kex_cfg_rsp *kex_rsp; > - struct mbox *mbox =3D npc->mbox; > + struct mbox *mbox =3D mbox_get(npc->mbox); > int rc =3D 0; >=20 > mbox_alloc_msg_npc_get_kex_cfg(mbox); > @@ -499,6 +527,7 @@ npc_mcam_fetch_kex_cfg(struct npc *npc) > npc_mcam_process_mkex_cfg(npc, kex_rsp); >=20 > done: > + mbox_put(mbox); > return rc; > } >=20 > @@ -574,9 +603,11 @@ npc_mcam_alloc_and_write(struct npc *npc, struct roc= _npc_flow > *flow, > return NPC_ERR_MCAM_ALLOC; > } >=20 > - req =3D mbox_alloc_msg_npc_mcam_write_entry(mbox); > - if (req =3D=3D NULL) > - return -ENOSPC; > + req =3D mbox_alloc_msg_npc_mcam_write_entry(mbox_get(mbox)); > + if (req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } > req->set_cntr =3D flow->use_ctr; > req->cntr =3D flow->ctr_id; > req->entry =3D entry; > @@ -641,13 +672,16 @@ npc_mcam_alloc_and_write(struct npc *npc, struct ro= c_npc_flow > *flow, >=20 > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc !=3D 0) > - return rc; > + goto exit; >=20 > flow->mcam_id =3D entry; >=20 > if (flow->use_ctr) > flow->ctr_id =3D ctr; > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > static void > @@ -729,6 +763,7 @@ npc_program_mcam(struct npc *npc, struct npc_parse_st= ate *pst, > bool mcam_alloc) > struct idev_cfg *idev; > uint16_t layer_info; > uint64_t lt, flags; > + struct mbox *mbox; >=20 > /* Skip till Layer A data start */ > while (bit < NPC_PARSE_KEX_S_LA_OFFSET) { > @@ -800,12 +835,15 @@ npc_program_mcam(struct npc *npc, struct npc_parse_= state > *pst, bool mcam_alloc) > skip_base_rule =3D true; >=20 > if (pst->is_vf && pst->flow->nix_intf =3D=3D NIX_INTF_RX && !skip_base_= rule) { > - (void)mbox_alloc_msg_npc_read_base_steer_rule(npc->mbox); > - rc =3D mbox_process_msg(npc->mbox, (void *)&base_rule_rsp); > + mbox =3D mbox_get(npc->mbox); > + (void)mbox_alloc_msg_npc_read_base_steer_rule(mbox); > + rc =3D mbox_process_msg(mbox, (void *)&base_rule_rsp); > if (rc) { > + mbox_put(mbox); > plt_err("Failed to fetch VF's base MCAM entry"); > return rc; > } > + mbox_put(mbox); > base_entry =3D &base_rule_rsp->entry_data; > for (idx =3D 0; idx < ROC_NPC_MAX_MCAM_WIDTH_DWORDS; idx++) { > pst->flow->mcam_data[idx] |=3D base_entry->kw[idx]; > diff --git a/drivers/common/cnxk/roc_npc_mcam_dump.c > b/drivers/common/cnxk/roc_npc_mcam_dump.c > index fe57811a84..2aaa2ac671 100644 > --- a/drivers/common/cnxk/roc_npc_mcam_dump.c > +++ b/drivers/common/cnxk/roc_npc_mcam_dump.c > @@ -620,15 +620,17 @@ roc_npc_flow_mcam_dump(FILE *file, struct roc_npc *= roc_npc, > fprintf(file, "\tDW%d_Mask:%016lX\n", i, flow->mcam_mask[i]); > } >=20 > - mcam_read_req =3D mbox_alloc_msg_npc_mcam_read_entry(npc->mbox); > + mcam_read_req =3D mbox_alloc_msg_npc_mcam_read_entry(mbox_get(npc- > >mbox)); > if (mcam_read_req =3D=3D NULL) { > plt_err("Failed to alloc msg"); > + mbox_put(npc->mbox); > return; > } >=20 > mcam_read_req->entry =3D flow->mcam_id; > rc =3D mbox_process_msg(npc->mbox, (void *)&mcam_read_rsp); > if (rc) { > + mbox_put(npc->mbox); > plt_err("Failed to fetch MCAM entry:%d", flow->mcam_id); > return; > } > @@ -643,4 +645,5 @@ roc_npc_flow_mcam_dump(FILE *file, struct roc_npc *ro= c_npc, > } >=20 > fprintf(file, "\n"); > + mbox_put(npc->mbox); > } > diff --git a/drivers/common/cnxk/roc_npc_utils.c b/drivers/common/cnxk/ro= c_npc_utils.c > index 8bdabc116d..a9df62cee6 100644 > --- a/drivers/common/cnxk/roc_npc_utils.c > +++ b/drivers/common/cnxk/roc_npc_utils.c > @@ -269,11 +269,14 @@ npc_mcam_init(struct npc *npc, struct roc_npc_flow = *flow, int > mcam_id) > { > struct npc_mcam_write_entry_req *req; > struct npc_mcam_write_entry_rsq *rsp; > + struct mbox *mbox =3D mbox_get(npc->mbox); > int rc =3D 0, idx; >=20 > - req =3D mbox_alloc_msg_npc_mcam_write_entry(npc->mbox); > - if (req =3D=3D NULL) > - return -ENOSPC; > + req =3D mbox_alloc_msg_npc_mcam_write_entry(mbox); > + if (req =3D=3D NULL) { > + rc =3D -ENOSPC; > + goto exit; > + } > req->set_cntr =3D 0; > req->cntr =3D 0; > req->entry =3D mcam_id; > @@ -299,12 +302,15 @@ npc_mcam_init(struct npc *npc, struct roc_npc_flow = *flow, int > mcam_id) > req->entry_data.kw_mask[0] |=3D ((uint64_t)0xffff << 32); > } >=20 > - rc =3D mbox_process_msg(npc->mbox, (void *)&rsp); > + rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc !=3D 0) { > plt_err("npc: mcam initialisation write failed"); > - return rc; > + goto exit; > } > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -317,18 +323,21 @@ npc_mcam_move(struct mbox *mbox, uint16_t old_ent, = uint16_t > new_ent) > /* Old entry is disabled & it's contents are moved to new_entry, > * new entry is enabled finally. > */ > - req =3D mbox_alloc_msg_npc_mcam_shift_entry(mbox); > + req =3D mbox_alloc_msg_npc_mcam_shift_entry(mbox_get(mbox)); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->curr_entry[0] =3D old_ent; > req->new_entry[0] =3D new_ent; > req->shift_count =3D 1; >=20 > rc =3D mbox_process_msg(mbox, (void *)&rsp); > if (rc) > - return rc; > + goto exit; >=20 > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > enum SHIFT_DIR { > @@ -567,9 +576,9 @@ npc_allocate_mcam_entry(struct mbox *mbox, int prio, > struct npc_mcam_alloc_entry_rsp *rsp; > int rc =3D -ENOSPC; >=20 > - req =3D mbox_alloc_msg_npc_mcam_alloc_entry(mbox); > + req =3D mbox_alloc_msg_npc_mcam_alloc_entry(mbox_get(mbox)); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->contig =3D 1; > req->count =3D 1; > req->priority =3D prio; > @@ -577,14 +586,19 @@ npc_allocate_mcam_entry(struct mbox *mbox, int prio= , >=20 > rc =3D mbox_process_msg(mbox, (void *)&rsp_cmd); > if (rc) > - return rc; > + goto exit; >=20 > - if (!rsp_cmd->count) > - return -ENOSPC; > + if (!rsp_cmd->count) { > + rc =3D -ENOSPC; > + goto exit; > + } >=20 > mbox_memcpy(rsp_local, rsp_cmd, sizeof(*rsp)); >=20 > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > static void > diff --git a/drivers/common/cnxk/roc_sso.c b/drivers/common/cnxk/roc_sso.= c > index 6989884373..9920d0c604 100644 > --- a/drivers/common/cnxk/roc_sso.c > +++ b/drivers/common/cnxk/roc_sso.c > @@ -12,67 +12,79 @@ int > sso_lf_alloc(struct dev *dev, enum sso_lf_type lf_type, uint16_t nb_lf, > void **rsp) > { > + struct mbox *mbox =3D mbox_get(dev->mbox); > int rc =3D -ENOSPC; >=20 > switch (lf_type) { > case SSO_LF_TYPE_HWS: { > struct ssow_lf_alloc_req *req; >=20 > - req =3D mbox_alloc_msg_ssow_lf_alloc(dev->mbox); > + req =3D mbox_alloc_msg_ssow_lf_alloc(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->hws =3D nb_lf; > } break; > case SSO_LF_TYPE_HWGRP: { > struct sso_lf_alloc_req *req; >=20 > - req =3D mbox_alloc_msg_sso_lf_alloc(dev->mbox); > + req =3D mbox_alloc_msg_sso_lf_alloc(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->hwgrps =3D nb_lf; > } break; > default: > break; > } >=20 > - rc =3D mbox_process_msg(dev->mbox, rsp); > - if (rc) > - return -EIO; > + rc =3D mbox_process_msg(mbox, rsp); > + if (rc) { > + rc =3D -EIO; > + goto exit; > + } >=20 > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > sso_lf_free(struct dev *dev, enum sso_lf_type lf_type, uint16_t nb_lf) > { > + struct mbox *mbox =3D mbox_get(dev->mbox); > int rc =3D -ENOSPC; >=20 > switch (lf_type) { > case SSO_LF_TYPE_HWS: { > struct ssow_lf_free_req *req; >=20 > - req =3D mbox_alloc_msg_ssow_lf_free(dev->mbox); > + req =3D mbox_alloc_msg_ssow_lf_free(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->hws =3D nb_lf; > } break; > case SSO_LF_TYPE_HWGRP: { > struct sso_lf_free_req *req; >=20 > - req =3D mbox_alloc_msg_sso_lf_free(dev->mbox); > + req =3D mbox_alloc_msg_sso_lf_free(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->hwgrps =3D nb_lf; > } break; > default: > break; > } >=20 > - rc =3D mbox_process(dev->mbox); > - if (rc) > - return -EIO; > + rc =3D mbox_process(mbox); > + if (rc) { > + rc =3D -EIO; > + goto exit; > + } >=20 > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > static int > @@ -80,12 +92,13 @@ sso_rsrc_attach(struct roc_sso *roc_sso, enum sso_lf_= type lf_type, > uint16_t nb_lf) > { > struct dev *dev =3D &roc_sso_to_sso_priv(roc_sso)->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct rsrc_attach_req *req; > int rc =3D -ENOSPC; >=20 > - req =3D mbox_alloc_msg_attach_resources(dev->mbox); > + req =3D mbox_alloc_msg_attach_resources(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > switch (lf_type) { > case SSO_LF_TYPE_HWS: > req->ssow =3D nb_lf; > @@ -94,14 +107,20 @@ sso_rsrc_attach(struct roc_sso *roc_sso, enum sso_lf= _type > lf_type, > req->sso =3D nb_lf; > break; > default: > - return SSO_ERR_PARAM; > + rc =3D SSO_ERR_PARAM; > + goto exit; > } >=20 > req->modify =3D true; > - if (mbox_process(dev->mbox)) > - return -EIO; > + if (mbox_process(mbox)) { > + rc =3D -EIO; > + goto exit; > + } >=20 > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > static int > @@ -109,11 +128,12 @@ sso_rsrc_detach(struct roc_sso *roc_sso, enum sso_l= f_type > lf_type) > { > struct dev *dev =3D &roc_sso_to_sso_priv(roc_sso)->dev; > struct rsrc_detach_req *req; > + struct mbox *mbox =3D mbox_get(dev->mbox); > int rc =3D -ENOSPC; >=20 > - req =3D mbox_alloc_msg_detach_resources(dev->mbox); > + req =3D mbox_alloc_msg_detach_resources(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > switch (lf_type) { > case SSO_LF_TYPE_HWS: > req->ssow =3D true; > @@ -122,14 +142,20 @@ sso_rsrc_detach(struct roc_sso *roc_sso, enum sso_l= f_type > lf_type) > req->sso =3D true; > break; > default: > - return SSO_ERR_PARAM; > + rc =3D SSO_ERR_PARAM; > + goto exit; > } >=20 > req->partial =3D true; > - if (mbox_process(dev->mbox)) > - return -EIO; > + if (mbox_process(mbox)) { > + rc =3D -EIO; > + goto exit; > + } >=20 > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > static int > @@ -137,19 +163,24 @@ sso_rsrc_get(struct roc_sso *roc_sso) > { > struct dev *dev =3D &roc_sso_to_sso_priv(roc_sso)->dev; > struct free_rsrcs_rsp *rsrc_cnt; > + struct mbox *mbox =3D mbox_get(dev->mbox); > int rc; >=20 > - mbox_alloc_msg_free_rsrc_cnt(dev->mbox); > - rc =3D mbox_process_msg(dev->mbox, (void **)&rsrc_cnt); > + mbox_alloc_msg_free_rsrc_cnt(mbox); > + rc =3D mbox_process_msg(mbox, (void **)&rsrc_cnt); > if (rc) { > plt_err("Failed to get free resource count\n"); > - return -EIO; > + rc =3D -EIO; > + goto exit; > } >=20 > roc_sso->max_hwgrp =3D rsrc_cnt->sso; > roc_sso->max_hws =3D rsrc_cnt->ssow; >=20 > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > void > @@ -195,17 +226,22 @@ sso_msix_fill(struct roc_sso *roc_sso, uint16_t nb_= hws, uint16_t > nb_hwgrp) > struct dev *dev =3D &sso->dev; > int i, rc; >=20 > - mbox_alloc_msg_msix_offset(dev->mbox); > + mbox_alloc_msg_msix_offset(mbox_get(dev->mbox)); > rc =3D mbox_process_msg(dev->mbox, (void **)&rsp); > - if (rc) > - return -EIO; > + if (rc) { > + rc =3D -EIO; > + goto exit; > + } >=20 > for (i =3D 0; i < nb_hws; i++) > sso->hws_msix_offset[i] =3D rsp->ssow_msixoff[i]; > for (i =3D 0; i < nb_hwgrp; i++) > sso->hwgrp_msix_offset[i] =3D rsp->sso_msixoff[i]; >=20 > - return 0; > + rc =3D 0; > +exit: > + mbox_put(dev->mbox); > + return rc; > } >=20 > /* Public Functions. */ > @@ -288,26 +324,28 @@ roc_sso_hws_stats_get(struct roc_sso *roc_sso, uint= 8_t hws, > struct sso *sso =3D roc_sso_to_sso_priv(roc_sso); > struct sso_hws_stats *req_rsp; > struct dev *dev =3D &sso->dev; > + struct mbox *mbox; > int rc; >=20 > plt_spinlock_lock(&sso->mbox_lock); > + mbox =3D mbox_get(dev->mbox); > req_rsp =3D (struct sso_hws_stats *)mbox_alloc_msg_sso_hws_get_stats( > - dev->mbox); > + mbox); > if (req_rsp =3D=3D NULL) { > - rc =3D mbox_process(dev->mbox); > + rc =3D mbox_process(mbox); > if (rc) { > rc =3D -EIO; > goto fail; > } > req_rsp =3D (struct sso_hws_stats *) > - mbox_alloc_msg_sso_hws_get_stats(dev->mbox); > + mbox_alloc_msg_sso_hws_get_stats(mbox); > if (req_rsp =3D=3D NULL) { > rc =3D -ENOSPC; > goto fail; > } > } > req_rsp->hws =3D hws; > - rc =3D mbox_process_msg(dev->mbox, (void **)&req_rsp); > + rc =3D mbox_process_msg(mbox, (void **)&req_rsp); > if (rc) { > rc =3D -EIO; > goto fail; > @@ -315,6 +353,7 @@ roc_sso_hws_stats_get(struct roc_sso *roc_sso, uint8_= t hws, >=20 > stats->arbitration =3D req_rsp->arbitration; > fail: > + mbox_put(mbox); > plt_spinlock_unlock(&sso->mbox_lock); > return rc; > } > @@ -326,26 +365,28 @@ roc_sso_hwgrp_stats_get(struct roc_sso *roc_sso, ui= nt8_t hwgrp, > struct sso *sso =3D roc_sso_to_sso_priv(roc_sso); > struct sso_grp_stats *req_rsp; > struct dev *dev =3D &sso->dev; > + struct mbox *mbox; > int rc; >=20 > plt_spinlock_lock(&sso->mbox_lock); > + mbox =3D mbox_get(dev->mbox); > req_rsp =3D (struct sso_grp_stats *)mbox_alloc_msg_sso_grp_get_stats( > - dev->mbox); > + mbox); > if (req_rsp =3D=3D NULL) { > - rc =3D mbox_process(dev->mbox); > + rc =3D mbox_process(mbox); > if (rc) { > rc =3D -EIO; > goto fail; > } > req_rsp =3D (struct sso_grp_stats *) > - mbox_alloc_msg_sso_grp_get_stats(dev->mbox); > + mbox_alloc_msg_sso_grp_get_stats(mbox); > if (req_rsp =3D=3D NULL) { > rc =3D -ENOSPC; > goto fail; > } > } > req_rsp->grp =3D hwgrp; > - rc =3D mbox_process_msg(dev->mbox, (void **)&req_rsp); > + rc =3D mbox_process_msg(mbox, (void **)&req_rsp); > if (rc) { > rc =3D -EIO; > goto fail; > @@ -361,6 +402,7 @@ roc_sso_hwgrp_stats_get(struct roc_sso *roc_sso, uint= 8_t hwgrp, > stats->ws_pc =3D req_rsp->ws_pc; >=20 > fail: > + mbox_put(mbox); > plt_spinlock_unlock(&sso->mbox_lock); > return rc; > } > @@ -382,22 +424,24 @@ roc_sso_hwgrp_qos_config(struct roc_sso *roc_sso, s= truct > roc_sso_hwgrp_qos *qos, > struct sso *sso =3D roc_sso_to_sso_priv(roc_sso); > struct dev *dev =3D &sso->dev; > struct sso_grp_qos_cfg *req; > + struct mbox *mbox; > int i, rc; >=20 > plt_spinlock_lock(&sso->mbox_lock); > + mbox =3D mbox_get(dev->mbox); > for (i =3D 0; i < nb_qos; i++) { > uint8_t iaq_prcnt =3D qos[i].iaq_prcnt; > uint8_t taq_prcnt =3D qos[i].taq_prcnt; >=20 > - req =3D mbox_alloc_msg_sso_grp_qos_config(dev->mbox); > + req =3D mbox_alloc_msg_sso_grp_qos_config(mbox); > if (req =3D=3D NULL) { > - rc =3D mbox_process(dev->mbox); > + rc =3D mbox_process(mbox); > if (rc) { > rc =3D -EIO; > goto fail; > } >=20 > - req =3D mbox_alloc_msg_sso_grp_qos_config(dev->mbox); > + req =3D mbox_alloc_msg_sso_grp_qos_config(mbox); > if (req =3D=3D NULL) { > rc =3D -ENOSPC; > goto fail; > @@ -412,10 +456,11 @@ roc_sso_hwgrp_qos_config(struct roc_sso *roc_sso, s= truct > roc_sso_hwgrp_qos *qos, > 100; > } >=20 > - rc =3D mbox_process(dev->mbox); > + rc =3D mbox_process(mbox); > if (rc) > rc =3D -EIO; > fail: > + mbox_put(mbox); > plt_spinlock_unlock(&sso->mbox_lock); > return rc; > } > @@ -565,19 +610,25 @@ int > sso_hwgrp_alloc_xaq(struct dev *dev, uint32_t npa_aura_id, uint16_t hwgr= ps) > { > struct sso_hw_setconfig *req; > + struct mbox *mbox =3D mbox_get(dev->mbox); > int rc =3D -ENOSPC; >=20 > - req =3D mbox_alloc_msg_sso_hw_setconfig(dev->mbox); > + req =3D mbox_alloc_msg_sso_hw_setconfig(mbox); > if (req =3D=3D NULL) > - return rc; > + goto exit; > req->npa_pf_func =3D idev_npa_pffunc_get(); > req->npa_aura_id =3D npa_aura_id; > req->hwgrps =3D hwgrps; >=20 > - if (mbox_process(dev->mbox)) > - return -EIO; > + if (mbox_process(dev->mbox)) { > + rc =3D -EIO; > + goto exit; > + } >=20 > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -598,16 +649,25 @@ int > sso_hwgrp_release_xaq(struct dev *dev, uint16_t hwgrps) > { > struct sso_hw_xaq_release *req; > + struct mbox *mbox =3D mbox_get(dev->mbox); > + int rc; >=20 > - req =3D mbox_alloc_msg_sso_hw_release_xaq_aura(dev->mbox); > - if (req =3D=3D NULL) > - return -EINVAL; > + req =3D mbox_alloc_msg_sso_hw_release_xaq_aura(mbox); > + if (req =3D=3D NULL) { > + rc =3D -EINVAL; > + goto exit; > + } > req->hwgrps =3D hwgrps; >=20 > - if (mbox_process(dev->mbox)) > - return -EIO; > + if (mbox_process(mbox)) { > + rc =3D -EIO; > + goto exit; > + } >=20 > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > int > @@ -630,10 +690,12 @@ roc_sso_hwgrp_set_priority(struct roc_sso *roc_sso,= uint16_t > hwgrp, > struct sso *sso =3D roc_sso_to_sso_priv(roc_sso); > struct dev *dev =3D &sso->dev; > struct sso_grp_priority *req; > + struct mbox *mbox; > int rc =3D -ENOSPC; >=20 > plt_spinlock_lock(&sso->mbox_lock); > - req =3D mbox_alloc_msg_sso_grp_set_priority(dev->mbox); > + mbox =3D mbox_get(dev->mbox); > + req =3D mbox_alloc_msg_sso_grp_set_priority(mbox); > if (req =3D=3D NULL) > goto fail; > req->grp =3D hwgrp; > @@ -641,17 +703,19 @@ roc_sso_hwgrp_set_priority(struct roc_sso *roc_sso,= uint16_t > hwgrp, > req->affinity =3D affinity; > req->priority =3D priority; >=20 > - rc =3D mbox_process(dev->mbox); > + rc =3D mbox_process(mbox); > if (rc) { > rc =3D -EIO; > goto fail; > } > + mbox_put(mbox); > plt_spinlock_unlock(&sso->mbox_lock); > plt_sso_dbg("HWGRP %d weight %d affinity %d priority %d", hwgrp, weight= , > affinity, priority); >=20 > return 0; > fail: > + mbox_put(mbox); > plt_spinlock_unlock(&sso->mbox_lock); > return rc; > } > diff --git a/drivers/common/cnxk/roc_tim.c b/drivers/common/cnxk/roc_tim.= c > index 0f9209937b..90ce72cfa0 100644 > --- a/drivers/common/cnxk/roc_tim.c > +++ b/drivers/common/cnxk/roc_tim.c > @@ -12,17 +12,23 @@ tim_fill_msix(struct roc_tim *roc_tim, uint16_t nb_ri= ng) > struct tim *tim =3D roc_tim_to_tim_priv(roc_tim); > struct dev *dev =3D &sso->dev; > struct msix_offset_rsp *rsp; > + struct mbox *mbox =3D mbox_get(dev->mbox); > int i, rc; >=20 > - mbox_alloc_msg_msix_offset(dev->mbox); > - rc =3D mbox_process_msg(dev->mbox, (void **)&rsp); > - if (rc) > - return -EIO; > + mbox_alloc_msg_msix_offset(mbox); > + rc =3D mbox_process_msg(mbox, (void **)&rsp); > + if (rc) { > + rc =3D -EIO; > + goto exit; > + } >=20 > for (i =3D 0; i < nb_ring; i++) > tim->tim_msix_offsets[i] =3D rsp->timlf_msixoff[i]; >=20 > - return 0; > + rc =3D 0; > +exit: > + mbox_put(mbox); > + return rc; > } >=20 > static void > @@ -91,12 +97,12 @@ roc_tim_lf_enable(struct roc_tim *roc_tim, uint8_t ri= ng_id, uint64_t > *start_tsc, > { > struct sso *sso =3D roc_sso_to_sso_priv(roc_tim->roc_sso); > struct dev *dev =3D &sso->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct tim_enable_rsp *rsp; > struct tim_ring_req *req; > int rc =3D -ENOSPC; >=20 > - plt_spinlock_lock(&sso->mbox_lock); > - req =3D mbox_alloc_msg_tim_enable_ring(dev->mbox); > + req =3D mbox_alloc_msg_tim_enable_ring(mbox); > if (req =3D=3D NULL) > goto fail; > req->ring =3D ring_id; > @@ -114,7 +120,7 @@ roc_tim_lf_enable(struct roc_tim *roc_tim, uint8_t ri= ng_id, uint64_t > *start_tsc, > *start_tsc =3D rsp->timestarted; >=20 > fail: > - plt_spinlock_unlock(&sso->mbox_lock); > + mbox_put(mbox); > return rc; > } >=20 > @@ -123,11 +129,11 @@ roc_tim_lf_disable(struct roc_tim *roc_tim, uint8_t= ring_id) > { > struct sso *sso =3D roc_sso_to_sso_priv(roc_tim->roc_sso); > struct dev *dev =3D &sso->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct tim_ring_req *req; > int rc =3D -ENOSPC; >=20 > - plt_spinlock_lock(&sso->mbox_lock); > - req =3D mbox_alloc_msg_tim_disable_ring(dev->mbox); > + req =3D mbox_alloc_msg_tim_disable_ring(mbox); > if (req =3D=3D NULL) > goto fail; > req->ring =3D ring_id; > @@ -139,7 +145,7 @@ roc_tim_lf_disable(struct roc_tim *roc_tim, uint8_t r= ing_id) > } >=20 > fail: > - plt_spinlock_unlock(&sso->mbox_lock); > + mbox_put(mbox); > return rc; > } >=20 > @@ -159,11 +165,11 @@ roc_tim_lf_config(struct roc_tim *roc_tim, uint8_t = ring_id, > { > struct sso *sso =3D roc_sso_to_sso_priv(roc_tim->roc_sso); > struct dev *dev =3D &sso->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct tim_config_req *req; > int rc =3D -ENOSPC; >=20 > - plt_spinlock_lock(&sso->mbox_lock); > - req =3D mbox_alloc_msg_tim_config_ring(dev->mbox); > + req =3D mbox_alloc_msg_tim_config_ring(mbox); > if (req =3D=3D NULL) > goto fail; > req->ring =3D ring_id; > @@ -178,14 +184,14 @@ roc_tim_lf_config(struct roc_tim *roc_tim, uint8_t = ring_id, > req->clockfreq =3D clockfreq; > req->gpioedge =3D TIM_GPIO_LTOH_TRANS; >=20 > - rc =3D mbox_process(dev->mbox); > + rc =3D mbox_process(mbox); > if (rc) { > tim_err_desc(rc); > rc =3D -EIO; > } >=20 > fail: > - plt_spinlock_unlock(&sso->mbox_lock); > + mbox_put(mbox); > return rc; > } >=20 > @@ -196,12 +202,12 @@ roc_tim_lf_interval(struct roc_tim *roc_tim, enum > roc_tim_clk_src clk_src, > { > struct sso *sso =3D roc_sso_to_sso_priv(roc_tim->roc_sso); > struct dev *dev =3D &sso->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > struct tim_intvl_req *req; > struct tim_intvl_rsp *rsp; > int rc =3D -ENOSPC; >=20 > - plt_spinlock_lock(&sso->mbox_lock); > - req =3D mbox_alloc_msg_tim_get_min_intvl(dev->mbox); > + req =3D mbox_alloc_msg_tim_get_min_intvl(mbox); > if (req =3D=3D NULL) > goto fail; >=20 > @@ -218,7 +224,7 @@ roc_tim_lf_interval(struct roc_tim *roc_tim, enum roc= _tim_clk_src > clk_src, > *interval =3D rsp->intvl_cyc; >=20 > fail: > - plt_spinlock_unlock(&sso->mbox_lock); > + mbox_put(mbox); > return rc; > } >=20 > @@ -231,17 +237,17 @@ roc_tim_lf_alloc(struct roc_tim *roc_tim, uint8_t r= ing_id, uint64_t > *clk) > struct tim_lf_alloc_req *req; > struct tim_lf_alloc_rsp *rsp; > struct dev *dev =3D &sso->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); > int rc =3D -ENOSPC; >=20 > - plt_spinlock_lock(&sso->mbox_lock); > - req =3D mbox_alloc_msg_tim_lf_alloc(dev->mbox); > + req =3D mbox_alloc_msg_tim_lf_alloc(mbox); > if (req =3D=3D NULL) > goto fail; > req->npa_pf_func =3D idev_npa_pffunc_get(); > req->sso_pf_func =3D idev_sso_pffunc_get(); > req->ring =3D ring_id; >=20 > - rc =3D mbox_process_msg(dev->mbox, (void **)&rsp); > + rc =3D mbox_process_msg(mbox, (void **)&rsp); > if (rc) { > tim_err_desc(rc); > rc =3D -EIO; > @@ -255,19 +261,19 @@ roc_tim_lf_alloc(struct roc_tim *roc_tim, uint8_t r= ing_id, uint64_t > *clk) > tim->tim_msix_offsets[ring_id]); > if (rc < 0) { > plt_tim_dbg("Failed to register Ring[%d] IRQ", ring_id); > - free_req =3D mbox_alloc_msg_tim_lf_free(dev->mbox); > + free_req =3D mbox_alloc_msg_tim_lf_free(mbox); > if (free_req =3D=3D NULL) { > rc =3D -ENOSPC; > goto fail; > } > free_req->ring =3D ring_id; > - rc =3D mbox_process(dev->mbox); > + rc =3D mbox_process(mbox); > if (rc) > rc =3D -EIO; > } >=20 > fail: > - plt_spinlock_unlock(&sso->mbox_lock); > + mbox_put(dev->mbox); > return rc; > } >=20 > @@ -283,8 +289,7 @@ roc_tim_lf_free(struct roc_tim *roc_tim, uint8_t ring= _id) > tim_unregister_irq_priv(roc_tim, sso->pci_dev->intr_handle, ring_id, > tim->tim_msix_offsets[ring_id]); >=20 > - plt_spinlock_lock(&sso->mbox_lock); > - req =3D mbox_alloc_msg_tim_lf_free(dev->mbox); > + req =3D mbox_alloc_msg_tim_lf_free(mbox_get(dev->mbox)); > if (req =3D=3D NULL) > goto fail; > req->ring =3D ring_id; > @@ -293,11 +298,13 @@ roc_tim_lf_free(struct roc_tim *roc_tim, uint8_t ri= ng_id) > if (rc < 0) { > tim_err_desc(rc); > rc =3D -EIO; > + goto fail; > } > + rc =3D 0; >=20 > fail: > - plt_spinlock_unlock(&sso->mbox_lock); > - return 0; > + mbox_put(dev->mbox); > + return rc; > } >=20 > int > @@ -318,8 +325,7 @@ roc_tim_init(struct roc_tim *roc_tim) > dev =3D &sso->dev; > PLT_STATIC_ASSERT(sizeof(struct tim) <=3D TIM_MEM_SZ); > nb_lfs =3D roc_tim->nb_lfs; > - plt_spinlock_lock(&sso->mbox_lock); > - mbox_alloc_msg_free_rsrc_cnt(dev->mbox); > + mbox_alloc_msg_free_rsrc_cnt(mbox_get(dev->mbox)); > rc =3D mbox_process_msg(dev->mbox, (void *)&free_rsrc); > if (rc) { > plt_err("Unable to get free rsrc count."); > @@ -350,11 +356,12 @@ roc_tim_init(struct roc_tim *roc_tim) > goto fail; > } >=20 > + mbox_put(dev->mbox); > rc =3D tim_fill_msix(roc_tim, nb_lfs); > if (rc < 0) { > plt_err("Unable to get TIM MSIX vectors"); >=20 > - detach_req =3D mbox_alloc_msg_detach_resources(dev->mbox); > + detach_req =3D mbox_alloc_msg_detach_resources(mbox_get(dev- > >mbox)); > if (detach_req =3D=3D NULL) { > nb_lfs =3D 0; > goto fail; > @@ -363,10 +370,13 @@ roc_tim_init(struct roc_tim *roc_tim) > detach_req->timlfs =3D true; > mbox_process(dev->mbox); > nb_lfs =3D 0; > + } else { > + goto done; > } >=20 > fail: > - plt_spinlock_unlock(&sso->mbox_lock); > + mbox_put(dev->mbox); > +done: > return nb_lfs; > } >=20 > @@ -376,13 +386,13 @@ roc_tim_fini(struct roc_tim *roc_tim) > struct sso *sso =3D roc_sso_to_sso_priv(roc_tim->roc_sso); > struct rsrc_detach_req *detach_req; > struct dev *dev =3D &sso->dev; > + struct mbox *mbox =3D mbox_get(dev->mbox); >=20 > - plt_spinlock_lock(&sso->mbox_lock); > - detach_req =3D mbox_alloc_msg_detach_resources(dev->mbox); > + detach_req =3D mbox_alloc_msg_detach_resources(mbox); > PLT_ASSERT(detach_req); > detach_req->partial =3D true; > detach_req->timlfs =3D true; >=20 > - mbox_process(dev->mbox); > - plt_spinlock_unlock(&sso->mbox_lock); > + mbox_process(mbox); > + mbox_put(mbox); > } > diff --git a/drivers/common/cnxk/version.map b/drivers/common/cnxk/versio= n.map > index 17f0ec6b48..77bf3f2807 100644 > --- a/drivers/common/cnxk/version.map > +++ b/drivers/common/cnxk/version.map > @@ -321,6 +321,8 @@ INTERNAL { > roc_npa_ctx_dump; > roc_npa_dev_fini; > roc_npa_dev_init; > + roc_npa_dev_lock; > + roc_npa_dev_unlock; > roc_npa_dump; > roc_npa_lf_init_cb_register; > roc_npa_pool_create; > -- > 2.25.1