From patchwork Fri Oct 7 17:43:35 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Boyer X-Patchwork-Id: 117614 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9F83BA04FD; Fri, 7 Oct 2022 19:48:16 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3AD1242BE8; Fri, 7 Oct 2022 19:45:18 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2077.outbound.protection.outlook.com [40.107.93.77]) by mails.dpdk.org (Postfix) with ESMTP id 6C46142C02 for ; Fri, 7 Oct 2022 19:45:13 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AHZfCOVM6t7mL3+Ey3iSTDdYp0mIrroED4/l1WW5UIbc1MEU2Y0psSxY6WOi+gnEJtHqLY+VsFFHVomM2hBPifElc6utC26gOL1JIu285IP8rgG5E8lPcx7cNu3OFUYDb44InKC4niWD4/CCC9fYfyk/aA2RraMAl/iiUtsMezRAB/Mo9mVvP6w7074YE0/vAXVv1nN+zlA7Z9o74Sqs74fHS0CIc7BDqPw+Qs9lGoaEF49d0kEki2EiYf6uxv4e7fRl4omVjzL2HA2P7+hkwSkBaiC/8G2BeFr0na5P+bdTMY5UU3aRUc68VleXnLhPN3a7nTLYaXsTkbvu7tpUuQ== 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=QynrXYAKqSJX6nAqGkgksxzCmA5AMFNLEBBUYxorZeQ=; b=RZ0872e9k+xFW8cya29jnce0fgmv0PDjLwXbOf/SokQNxq3KoC60Co04qOrTFew4hJkMV6w/rCuiJln1xbJ9+fyCewcUKdm0e0yBrVYuQG92AawEYMvNjK330haV9YodRkoL5Z4dVSyMQ3xhX+ezG8gVIGMsyWpF4dzI85gz83ZbjY1VtK9XzlfzIFnhV0vYDY0vLC5S2p04laYL3BpJr6nv9+gh8IjEzqNIOCKQwj+sIkXR4c2DjRKQZ+7K9tVij0VS06aZd3N3cpvaqdOQed6k+66YACNrXbtfli+n2CqUZKzuTq0/LuvzfySIUTbbIcnfI2XZjT7S/KVNL8CL1Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QynrXYAKqSJX6nAqGkgksxzCmA5AMFNLEBBUYxorZeQ=; b=PBKdCI2bsQ4NNHNSRtSFmEbxgaWQyry2knIDNus4UO5jK9p/iltIvs0hGKCLAWIbJ+ZHGFmWNc4VC2rO/H5OHzIR0/+A8e5tSDwiwO4gSfuhdcLLTeztw3LartmlauDfDjK07RRZL1HwQ6YpGSiLVttSzam+NB17SfGgDAKTUGA= Received: from MW4PR03CA0180.namprd03.prod.outlook.com (2603:10b6:303:8d::35) by BL1PR12MB5128.namprd12.prod.outlook.com (2603:10b6:208:316::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.20; Fri, 7 Oct 2022 17:45:11 +0000 Received: from CO1NAM11FT031.eop-nam11.prod.protection.outlook.com (2603:10b6:303:8d:cafe::d1) by MW4PR03CA0180.outlook.office365.com (2603:10b6:303:8d::35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24 via Frontend Transport; Fri, 7 Oct 2022 17:45:11 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT031.mail.protection.outlook.com (10.13.174.118) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5709.10 via Frontend Transport; Fri, 7 Oct 2022 17:45:10 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 7 Oct 2022 12:45:07 -0500 From: Andrew Boyer To: CC: Andrew Boyer Subject: [PATCH 34/35] net/ionic: retry init commands up to five times Date: Fri, 7 Oct 2022 10:43:35 -0700 Message-ID: <20221007174336.54354-35-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221007174336.54354-1-andrew.boyer@amd.com> References: <20221007174336.54354-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT031:EE_|BL1PR12MB5128:EE_ X-MS-Office365-Filtering-Correlation-Id: ff15f27b-03b2-43f8-06e4-08daa88baeb5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: EjLAdav4OxC8wZK2+4/mPOI85t0E5JZQLEjIKrbjeyxLVkRWkXyQEzGgCZL/+6csIz0icg5RMVtNPC4Oob8dpSgBd7rZPWCA8InjfJHeBl1G0yB2+24UAAALQ0ghyQSyHKDIx/sQtB/RN8xSsADgg55g2w83PyzqepfJIl2qdIeEeJx/tYUMAfE2ogXocNWIEmqXqB7/W7P20Dz70TUctO+Nnrbcjl9XSR1OZdKFtcKL7HHyNKBPJ8Gl7nO47TQaD4cDdTzo4jIlxnVGKHCiztfCj8Sp6o5Gk+YUg8nVLcPGzrASHhRPz1hN5n2KD4UhIGacJJR3vzNzGj03t7V99vWyByZNgsXaz/Zhgdtx3GtVneQFva22F4L0ngFukls2THhl9i7LtT5IKrESZlgH2b4JP96Llno87B+ZSAByvamQSAVPfQBLNKUK1wv5VPx5ywlcJuhI+TkBHWRfYjllqZw7MvW4bEHQ+VBvq9U2CDQ4RNeaBRVrMW1Sb4taRL58ljDWJs++Rk4SqA4MQyiBImzI7uvspuhn0bm0Lyg/Z0QfHF/GNyGAP5kn4JWoxut30DnFE4fNrYy27QS2IW8mEVgZDiNzzXME5YRTufyRC9OgmmXHK0Xy5iqUtqnDRlzrrg4C1RmZ53LvSr0QrnNXj53iIcSXCgTvQ3MJ8ofx7jwIkmafumtBfeeOG5aIhKSRYusnxLqXNS2tHDAB4luUkuHgRAVgQo6pkPzutOe1/+UbqDPwlWovNQKZkRvZpwG0dASlnsmSPaXU1PfFr+4YGyx8aL9vqDEYshmDQqd2JM6p4uVamB7hbnJvkMnY9PYs X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230022)(4636009)(136003)(346002)(376002)(39860400002)(396003)(451199015)(40470700004)(36840700001)(46966006)(5660300002)(26005)(82740400003)(6666004)(316002)(356005)(70206006)(40460700003)(8676002)(70586007)(81166007)(4326008)(478600001)(36756003)(1076003)(86362001)(82310400005)(36860700001)(186003)(336012)(83380400001)(47076005)(2616005)(16526019)(6916009)(426003)(2906002)(41300700001)(8936002)(44832011)(40480700001)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2022 17:45:10.9647 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ff15f27b-03b2-43f8-06e4-08daa88baeb5 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT031.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5128 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 In some configurations, the FW may return EAGAIN if it is not able to respond to commands immediately. Retry the init commands in this case to prevent errors from reaching the client. Fix up some return-code stuff while here, for clarity. Signed-off-by: Andrew Boyer --- drivers/net/ionic/ionic_dev.h | 1 + drivers/net/ionic/ionic_lif.c | 14 ++++++++++++++ drivers/net/ionic/ionic_main.c | 4 ++-- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/drivers/net/ionic/ionic_dev.h b/drivers/net/ionic/ionic_dev.h index d696de45e0..4d07d9206e 100644 --- a/drivers/net/ionic/ionic_dev.h +++ b/drivers/net/ionic/ionic_dev.h @@ -24,6 +24,7 @@ #define IONIC_DEVCMD_TIMEOUT 5 /* devcmd_timeout */ #define IONIC_DEVCMD_CHECK_PERIOD_US 10 /* devcmd status chk period */ +#define IONIC_DEVCMD_RETRY_WAIT_US 20000 #define IONIC_ALIGN 4096 diff --git a/drivers/net/ionic/ionic_lif.c b/drivers/net/ionic/ionic_lif.c index 0affdd9dc4..bc6de83d56 100644 --- a/drivers/net/ionic/ionic_lif.c +++ b/drivers/net/ionic/ionic_lif.c @@ -1423,10 +1423,17 @@ ionic_lif_adminq_init(struct ionic_lif *lif) struct ionic_admin_qcq *aqcq = lif->adminqcq; struct ionic_queue *q = &aqcq->qcq.q; struct ionic_q_init_comp comp; + uint32_t retries = 5; int err; +retry_adminq_init: ionic_dev_cmd_adminq_init(idev, &aqcq->qcq); err = ionic_dev_cmd_wait_check(idev, IONIC_DEVCMD_TIMEOUT); + if (err == -EAGAIN && retries > 0) { + retries--; + rte_delay_us_block(IONIC_DEVCMD_RETRY_WAIT_US); + goto retry_adminq_init; + } if (err) return err; @@ -1713,12 +1720,19 @@ ionic_lif_init(struct ionic_lif *lif) { struct ionic_dev *idev = &lif->adapter->idev; struct ionic_lif_init_comp comp; + uint32_t retries = 5; int err; memset(&lif->stats_base, 0, sizeof(lif->stats_base)); +retry_lif_init: ionic_dev_cmd_lif_init(idev, lif->info_pa); err = ionic_dev_cmd_wait_check(idev, IONIC_DEVCMD_TIMEOUT); + if (err == -EAGAIN && retries > 0) { + retries--; + rte_delay_us_block(IONIC_DEVCMD_RETRY_WAIT_US); + goto retry_lif_init; + } if (err) return err; diff --git a/drivers/net/ionic/ionic_main.c b/drivers/net/ionic/ionic_main.c index 996af0a51f..3d8157dac3 100644 --- a/drivers/net/ionic/ionic_main.c +++ b/drivers/net/ionic/ionic_main.c @@ -313,10 +313,10 @@ ionic_dev_cmd_check_error(struct ionic_dev *idev) uint8_t status; status = ionic_dev_cmd_status(idev); - if (status == 0) + if (status == IONIC_RC_SUCCESS) return 0; - return -EIO; + return (status == IONIC_RC_EAGAIN) ? -EAGAIN : -EIO; } int