From patchwork Tue Apr 23 13:17:52 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Igor Russkikh X-Patchwork-Id: 1089386 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=aquantia.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=AQUANTIA1COM.onmicrosoft.com header.i=@AQUANTIA1COM.onmicrosoft.com header.b="lmbLv2sq"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 44pPCD0ssbz9sNr for ; Tue, 23 Apr 2019 23:18:16 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727909AbfDWNSP (ORCPT ); Tue, 23 Apr 2019 09:18:15 -0400 Received: from mail-eopbgr780082.outbound.protection.outlook.com ([40.107.78.82]:5312 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727824AbfDWNRz (ORCPT ); Tue, 23 Apr 2019 09:17:55 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=AQUANTIA1COM.onmicrosoft.com; s=selector1-aquantia-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nOj38R2Masl7kKfsQUDiyBbdii7Pf2omRivehdPG56s=; b=lmbLv2sqvMHOlnvqud5fsaB40UHn1omo504npjoWUXutQSbNUigWNYGwAzItenZuDzUskH64sGSfBKDkTIEenIaW05nt3i61/gDyEXtRLify+CMC6ujV8Do17U+Cg43QQAOzDEzGIZY6E85fTrRCy4J2Owh6d4vhTeHC1HTMY3s= Received: from DM6PR11MB3625.namprd11.prod.outlook.com (20.178.230.149) by DM6PR11MB3100.namprd11.prod.outlook.com (20.177.219.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1813.18; Tue, 23 Apr 2019 13:17:52 +0000 Received: from DM6PR11MB3625.namprd11.prod.outlook.com ([fe80::f035:2c20:5a61:7653]) by DM6PR11MB3625.namprd11.prod.outlook.com ([fe80::f035:2c20:5a61:7653%3]) with mapi id 15.20.1835.010; Tue, 23 Apr 2019 13:17:52 +0000 From: Igor Russkikh To: "David S . Miller" CC: "netdev@vger.kernel.org" , Nikita Danilov , Dmitry Bogdanov , Igor Russkikh , Nikita Danilov Subject: [PATCH v2 net-next 10/16] net: aquantia: introduce fwreq mutex Thread-Topic: [PATCH v2 net-next 10/16] net: aquantia: introduce fwreq mutex Thread-Index: AQHU+db0EW3Mx9c3ZkCmleIcpGwQTQ== Date: Tue, 23 Apr 2019 13:17:52 +0000 Message-ID: <3202cba7f44d08d55d874a276561148fa2aea023.1556024424.git.igor.russkikh@aquantia.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: BYAPR01CA0023.prod.exchangelabs.com (2603:10b6:a02:80::36) To DM6PR11MB3625.namprd11.prod.outlook.com (2603:10b6:5:13a::21) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Igor.Russkikh@aquantia.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.17.1 x-originating-ip: [95.79.108.179] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 9b87fc26-c3ec-4d68-1755-08d6c7ee172e x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600141)(711020)(4605104)(2017052603328)(7193020); SRVR:DM6PR11MB3100; x-ms-traffictypediagnostic: DM6PR11MB3100: x-microsoft-antispam-prvs: x-forefront-prvs: 0016DEFF96 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(376002)(396003)(39850400004)(346002)(366004)(189003)(199004)(52116002)(99286004)(8676002)(7736002)(6116002)(478600001)(76176011)(305945005)(3846002)(4326008)(97736004)(25786009)(316002)(118296001)(72206003)(53936002)(50226002)(107886003)(81166006)(81156014)(66066001)(14454004)(6512007)(54906003)(8936002)(5660300002)(446003)(68736007)(14444005)(386003)(186003)(6486002)(486006)(11346002)(476003)(2616005)(44832011)(26005)(36756003)(6506007)(2906002)(6436002)(102836004)(256004)(64756008)(66446008)(66556008)(66476007)(73956011)(66946007)(6916009)(71200400001)(86362001)(71190400001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM6PR11MB3100; H:DM6PR11MB3625.namprd11.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: aquantia.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: hnpvQXritVWlOVoNUK6DKW0Ly6B3Y1RYop7mqyVPV907HTC9rM141jOkT8vhZFBlc6cGTni6oon/YwF6AjI5bLA77OeeVJosIB/5cDJ8cOww53uFh07hI3w+ULZUz8gfoDumGvZGnDqoI0bjsds8AAR9kxnrQRCivF8WDSD0s5jWG1+nqhcVRz1MXgtode+txDOHLiLuJuOVBUxSwD5qTOVpj3vkUfLaXSQHFPxvkGyVdkaMuU+seriUlJ+0oexUpeTVrnLaT5ORFp79dEblTpdp8IedmXrjwnfaxddPAe0W5SGIge6rulvKtVLNKbQMMAFrRw9reEqRLiN5AEyFffnfSfqUmoY44z2FB9DbKEgbjhaU5hejcR/tqyOjnNqEpISPgxEIRjiauFDdjN9m2DG7pc8c6iJJBtlzIylhGRA= MIME-Version: 1.0 X-OriginatorOrg: aquantia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9b87fc26-c3ec-4d68-1755-08d6c7ee172e X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Apr 2019 13:17:52.7356 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 83e2e134-991c-4ede-8ced-34d47e38e6b1 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB3100 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Nikita Danilov Some of FW operations could be invoked simultaneously, from f.e. ethtool context and from service service activity work. Here we introduce a fw mutex to secure and serialize access to FW logic. Signed-off-by: Nikita Danilov Signed-off-by: Igor Russkikh --- drivers/net/ethernet/aquantia/atlantic/aq_nic.h | 2 ++ drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_nic.h b/drivers/net/ethernet/aquantia/atlantic/aq_nic.h index 0409cf5ca3ab..be56ace6274b 100644 --- a/drivers/net/ethernet/aquantia/atlantic/aq_nic.h +++ b/drivers/net/ethernet/aquantia/atlantic/aq_nic.h @@ -105,6 +105,8 @@ struct aq_nic_s { struct pci_dev *pdev; unsigned int msix_entry_mask; u32 irqvecs; + /* mutex to serialize FW interface access operations */ + struct mutex fwreq_mutex; struct aq_hw_rx_fltrs_s aq_hw_rx_fltrs; }; diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c b/drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c index 961e9777e66b..a607e25dfbff 100644 --- a/drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c +++ b/drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c @@ -231,6 +231,8 @@ static int aq_pci_probe(struct pci_dev *pdev, SET_NETDEV_DEV(ndev, &pdev->dev); pci_set_drvdata(pdev, self); + mutex_init(&self->fwreq_mutex); + err = aq_pci_probe_get_hw_by_id(pdev, &self->aq_hw_ops, &aq_nic_get_cfg(self)->aq_hw_caps); if (err)