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 8ED94454A7; Mon, 24 Jun 2024 09:50:16 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7D07C40E36; Mon, 24 Jun 2024 09:50:11 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 9F7D740664 for ; Mon, 24 Jun 2024 09:49:11 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 45NLvSDD026147 for ; Mon, 24 Jun 2024 00:49:11 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h= cc:content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to; s=pfpt0220; bh=ia026jiWztXOt6DUmAJIGNQ3T NyE2iGnVAsaLmDTxmk=; b=ekYWMw2bslJIgSwmhfIxS34cucPzK5CzjWOAz2u4t LKkdPwl/pfkR431jcy9CnZAbeRupJKW6dGIZ7F6x5PJvPGOkXemYkjQ/cm9Otq2t hAGuC/R44rXn/UzccoaEfe61LCfQS7FamvTPMtLZztdVHTW8vquYP2X/58usaIax GpA/O5PDR2C+55GZ+BgU8Eq4I+FdQJ3hyWRB7G95W2birJPEF/7G9eogOGIstYyR talr6bHAbfOhajKI87BLpjh2Rum7xwebHblOdcSNfE6TZeB3PemPKeNmzYKLC5Jt WSFcgVbx8tZccItkCAeg7ScKpnRvZGOo22MsMuRkL8c4w== Received: from dc5-exch05.marvell.com ([199.233.59.128]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3ywx4gbwws-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Mon, 24 Jun 2024 00:49:10 -0700 (PDT) Received: from DC5-EXCH05.marvell.com (10.69.176.209) by DC5-EXCH05.marvell.com (10.69.176.209) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Mon, 24 Jun 2024 00:49:09 -0700 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH05.marvell.com (10.69.176.209) with Microsoft SMTP Server id 15.2.1544.4 via Frontend Transport; Mon, 24 Jun 2024 00:49:09 -0700 Received: from localhost.localdomain (unknown [10.29.52.211]) by maili.marvell.com (Postfix) with ESMTP id 4D0803F7077; Mon, 24 Jun 2024 00:49:07 -0700 (PDT) From: Harman Kalra To: Nithin Dabilpuram , Kiran Kumar K , Sunil Kumar Kori , Satha Rao , Harman Kalra CC: , Subject: [PATCH 6/6] common/cnxk: flow aginig delaying app shutdown Date: Mon, 24 Jun 2024 13:18:21 +0530 Message-ID: <20240624074822.88955-6-hkalra@marvell.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20240624074822.88955-1-hkalra@marvell.com> References: <20240624074822.88955-1-hkalra@marvell.com> MIME-Version: 1.0 Content-Type: text/plain X-Proofpoint-GUID: BZ7im-GBAOSzfRNtLOnWpKLa8gF0qZ_E X-Proofpoint-ORIG-GUID: BZ7im-GBAOSzfRNtLOnWpKLa8gF0qZ_E X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.28.16 definitions=2024-06-24_07,2024-06-21_01,2024-05-17_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 If flow aging is enabled application termination may take time equivalent to aging timeout. This is because on termination flow thread uses a sleep call which is uninterruptible. Signed-off-by: Harman Kalra Signed-off-by: Kiran Kumar K --- drivers/common/cnxk/roc_npc_aging.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/drivers/common/cnxk/roc_npc_aging.c b/drivers/common/cnxk/roc_npc_aging.c index 15f6e61d76..66c953135a 100644 --- a/drivers/common/cnxk/roc_npc_aging.c +++ b/drivers/common/cnxk/roc_npc_aging.c @@ -133,6 +133,21 @@ npc_mcam_get_hit_status(struct npc *npc, uint64_t *mcam_ids, uint16_t start_id, return rc; } +static void +npc_age_wait_until(struct roc_npc_flow_age *flow_age) +{ +#define NPC_AGE_WAIT_TIMEOUT_MS 1000 +#define NPC_AGE_WAIT_TIMEOUT_US (NPC_AGE_WAIT_TIMEOUT_MS * NPC_AGE_WAIT_TIMEOUT_MS) + uint64_t timeout = 0; + uint64_t sleep = 10 * NPC_AGE_WAIT_TIMEOUT_MS; + + do { + plt_delay_us(sleep); + timeout += sleep; + } while (!flow_age->aged_flows_get_thread_exit && + (timeout < (flow_age->aging_poll_freq * NPC_AGE_WAIT_TIMEOUT_US))); +} + uint32_t npc_aged_flows_get(void *args) { @@ -197,7 +212,7 @@ npc_aged_flows_get(void *args) plt_seqcount_write_end(&flow_age->seq_cnt); lbl_sleep: - sleep(flow_age->aging_poll_freq); + npc_age_wait_until(flow_age); } return 0; -- 2.18.0