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 C6FE642C30; Mon, 5 Jun 2023 07:54:07 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5467B40A7F; Mon, 5 Jun 2023 07:54:07 +0200 (CEST) Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2100.outbound.protection.outlook.com [40.107.236.100]) by mails.dpdk.org (Postfix) with ESMTP id 0600C4003C for ; Mon, 5 Jun 2023 07:54:05 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=P5ownjtIDFLDNA8OQ6W8jC9TA7Zav+dmzGlEMjxzVt8HapOakSF/DTghGveCsJ0xU+xW82+2jFFXbGDQdFDA0sHrHJo5SpGNNCTQBvKdz50kPtyq/fcN/ZvUzyj8GskNUYhZhSE6dEwU6M7+LRnpHqIi1wfKwwt+zGF99rgnzMpCdL+pFVE3ABdkRy1H0lp+s23cKzHYBztBvYmUOCmFOXOfoC8LCFN/M171WvrcUL7bUd8YNJAVF6zcB1e17Y6OZhhhh9O0ANjaakRhFlYq0LYKz1cIuw9XoR1pkQKvIf1igv8a68ksY+MRxbPwLT9SiAmk6nUkjwV7fqaTnaQV2Q== 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=E5Ac1JmKvPVVitOc2uef3jDk8CiPuEiKL9fc0sXVMPM=; b=M5YULwea4bJHdKrDGI1UilOFzpOItymTizJI2IJ0sVGsQgktrxISmtvN1Ja+37/wEAcd0ABo9RrXlCIDW3xyWaJBiKh0vSwOlBk3Yq1DUfPDLuksqAKahJSMAqhatHJEs6i4NNXV7ytZRYklYUosAQsqjAuiez78zyeIn8N5hcBlDwR/Xn41d4T0fw8YK3Sllj12rPag8eZXRoAWJniuyoGEEx+IO7NmXGA32QFLYiX/t+bCqVR8wDnWZDLaJ/rhBsFMU1rZXSeV1uy/3owOcCJIfdd3D/dznz3CCUw/bTut045v3rd/OWvYx+wJTqEDwVCa/Q5xsyzLAoTNsvdINg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=E5Ac1JmKvPVVitOc2uef3jDk8CiPuEiKL9fc0sXVMPM=; b=U2kH4JWA8s6Ta7+v9QJhfO7wVmg0CpEQg9Zy0Kj/mHm6yoVM1YuJ9qtoq98LyQcHAI90ut5BRjExbxwRqMpyB1xhham+aW1R39r4UZ5uwHlTf4jPBCbq1832U+mS0oDuRFIO8HXW5mqA1aqjM+94FkpuGzUWQFpCt9bseYpFpeI= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) by CH0PR13MB4731.namprd13.prod.outlook.com (2603:10b6:610:c1::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.32; Mon, 5 Jun 2023 05:54:00 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::f9ea:8aa0:ca72:caef]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::f9ea:8aa0:ca72:caef%4]) with mapi id 15.20.6455.030; Mon, 5 Jun 2023 05:54:00 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, niklas.soderlund@corigine.com, Jin Liu , Chaoyong He Subject: [PATCH] net/nfp: use common helper to trigger stats metering Date: Mon, 5 Jun 2023 13:53:33 +0800 Message-Id: <20230605055333.3461673-1-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: SI1PR02CA0039.apcprd02.prod.outlook.com (2603:1096:4:1f6::9) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|CH0PR13MB4731:EE_ X-MS-Office365-Filtering-Correlation-Id: b6b5b564-920e-47f3-e276-08db65894286 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9p18f76esFSzETPKpMA0JBaDRVXuIerKH39Iq2220dBUXqs9XiKnrWx+sxbx+30MxAT7htw7SAk8rbOV48TBBK6PDHjSvDncAEOeYUTMCdPdcHXq8JplpzwATZkO++0AqpVOSpxk2L80qn/bTTp7nusyyVwFL3uJFpyapF2Ye1wahRfriQXjFaD45g9aydLTikQQLj4nag30MyyL87zq1iZy4nCsjptaEDP8o51up4py7KbGFealNq05ITKMq7RkfaBHrilUqfZoTFgPPOHHGvJwSUg+8UNGpsQNC9WBqIrOB7+ZsaV+9EEaio5z+bojO8ogiPgv98tLmclp3szXWPCoNLHmi3wTIswVdhjaGzYC+wLqlRMPCtPsT3gGrLj8JsNoMcJytk1PSlbk4B2B7RwVMzpAjhda34D9rgiwfrW6gwfExQHf0OVG37MqvYPbisyl30QrQ4Hd+b7vTLDje8/rdq8LG27XyRuCnLa/9cb/qx6Dw2vJtS6Q0CUFuRJIC3po1HStC3rZjy4szuDhn7xbD0Gy5NJ91ZRfhYOsi2GQiptYem/cFxjzZySu2yovRvd5R9BRTY5Y7XxcFv97kkeThFO7irYm9j6S13m5U4lM014gnxTEcLfYcWW+WBcTld/iKXYkTU6e8j16YWSUIjmf082B4cEvB4krAr89VoA= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(39840400004)(136003)(376002)(396003)(366004)(346002)(451199021)(36756003)(2906002)(86362001)(44832011)(5660300002)(83380400001)(66574015)(6666004)(6486002)(52116002)(186003)(26005)(6506007)(6512007)(107886003)(1076003)(478600001)(54906003)(6916009)(316002)(38100700002)(66476007)(4326008)(66946007)(38350700002)(66556008)(2616005)(41300700001)(8936002)(8676002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WUlUQUJuVktRZm9MQ3pZMEZ5ZkVMTnhSVzNXV2VWSyt6UVFzcVFrcnU1YnhS?= =?utf-8?B?Y2tDNEJPRCtmTzhXQTlCVlBMY0FYMS9BdGU1TWNhVm9wSWhPT3JzWUYwOGtn?= =?utf-8?B?SHZFWTFoVzk1L2EzSEt2QlZITjZkNTE3Q3lCZXE2WmdIUXpmV2szWWcxRTBx?= =?utf-8?B?SjZKUnpsYU5IL2Z5RUlhakV0Y1FLSUJLQnBZYjZKUmNSSjlhUmxZejJBSnVz?= =?utf-8?B?Z25JNFBIbzBaUkFNLzZnR252OVdIMFd6djFGdk1iT2xJNG5vU0w3S3hPY0Rh?= =?utf-8?B?czV3WnIycEs0TUx3MXVlZ08yeEt2QUpkMXRzSC9jdjc5ZlZMUWpqandxM2hO?= =?utf-8?B?cDcrK1dLdDhrcFdqOGFZN3N4M0szU2dCa3k1b3RIQTAvcDFabGRNbHBtVUl1?= =?utf-8?B?Ky9RQzBtTStVdngyV2lpUEpld1lhUGpOZ2doYWpkNGxkVjhSelNjbk94RFVS?= =?utf-8?B?SFVGYnNvTmN1VlQxT1Y1THBvMFFmS0R1RkFjbFNUZ2pSbUhVSVkvdzdiQlpk?= =?utf-8?B?eFIwbDJheHhXaHE1cVg1THhqRWUwb2FLMUUxOC9jWkxUK2pvTVNUOWt3aVFP?= =?utf-8?B?YVhmSjVUVTQrSVVKcUx6YnN1YUNRak5CdGI3VnVkTmNHM0huM0NQMlRMRGNp?= =?utf-8?B?b25iZXB3eDEwUng5RlNoeFhTMjRSakc3OTkvOVUvU3oydjg2U0VNSlhodklz?= =?utf-8?B?dW1QbXZ2dXhzOVFGMC9GTVk3czMxdHlobVkrbWlTb1FHY0Fod1c1ZEJxRWJw?= =?utf-8?B?QkREWE93dUEvN3kyeEtYVkxNMm82bEpVQWNzWk0vUGdOUFV2b1VyT2ljWUp3?= =?utf-8?B?Q05CQ1hKaFFOQ0lBeE0zbGZQb2w2dHd0TGlqbEVqaU5HQ2hMTFRhM2YvdnRO?= =?utf-8?B?T3NmRnNYeHhpajdMcWhqV3l1Q0VGakdMM2kyNlZuaHVDVXQ1cUNWYk8wcHlz?= =?utf-8?B?Wnk5Qk80amVCZDIvNXRnRlFaN08yOUtFUnZnWTdSSTNJSHFQb3cxYldua3dt?= =?utf-8?B?Syt3Q1Q1T0NGOU5vdWxKRWJhUzNBb01TNkRzWTF1YTMwalpUSUlmNW5OeFo3?= =?utf-8?B?a1ZpNjlaTmZod3FhOXZBTEp5NWpXeUw4Q1ducWFOSVlmRXFJREVVR0JqS3dG?= =?utf-8?B?alE5VVJRUHRsaXNvb0JRa2RTMFpTT0hraWkwVUV1T2dFZEo3SmdNOTI0cG9h?= =?utf-8?B?NTdrU0VUT1E0L0FxTlFuaG9YazdpQUxFNklpbkN5ZTE0TEFFdzJONExueWxL?= =?utf-8?B?Zm9YY21JR25oSnNuWmg2cTBHcE94Mk50S1hPREdDcjRKelUxc0xON3JCVW1E?= =?utf-8?B?L2p0MSttVWxVN3R0Yllmc2Vjb3JIRDExUnlVUWJuUmZpbkZCR09sWUdOdVlO?= =?utf-8?B?dVFQVVl2Z0FENjh3M2ZJSDh2UXJDSVVpOW95VUJnNTRxU2JFa1R6azdCaTJI?= =?utf-8?B?WnpaUmJtbzVYOHY3YmhLbmlaYkRlS0xDSEtlclN4WTlyYkU1NkNaL2U4TlpU?= =?utf-8?B?Ykk0cE5wUS8raGxQYTFZTlRTdlVFb1BxNGloakt6VUVQbVdwMmlHZTl0dzU0?= =?utf-8?B?SlBZMVZUTWx0OHBzaXNoODRRQUw5K1JPQ3YzaWh6ak1xdkJNU3I4a2tiYlJo?= =?utf-8?B?MW1qcSt4Z0svalYxVURVM2tNZm5HTzFhUmhVL3J6OFMzRWEzellqb09ETzJl?= =?utf-8?B?d1RiN2l5WHFESG9adDRjVHI1NFBXM2JXd2RjbDRoZVp2YUJFNnB5Zkw1U25J?= =?utf-8?B?UUNneXhpRFlLZjhxT0ZLV1g2Uys2Qm93VGZXV1dOYWhqRkwrdm05ZGx0b2JP?= =?utf-8?B?MGU3SFhaVmVGZnpab3VNMGlHbEdZd2FZMDdWQ0ErdkpsLzNqWlpYK0hBT0Jr?= =?utf-8?B?YUhWTXFOZ0lWdjZiV0hvckwrV3JscDdnZ2FwZXdJU29KelhKSHIxL3NRZmxO?= =?utf-8?B?RkJjQVVWdkxpMmE0OXFMdzhrL3dWd2djdS9uYjdOcXdoWjUyc2tKMUVWNW1Q?= =?utf-8?B?Wis1bGlLYkgwSnNBeVJ0VWY5dzA1S092bExUaDlzME5JanhCWlV1Q0xjQ3VH?= =?utf-8?B?T0t1eVpDbUh0bHZua1ZxcnRLTGZteDV3dEpRNm9aL1ZvSVFvbHEwR1RrbC9r?= =?utf-8?B?L3BmV2p6OUZBbjh0YkN2QXdFa0kvYmR2dVUxSG5TUWovU3RSL3RnaW1WZGFM?= =?utf-8?B?Wnc9PQ==?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: b6b5b564-920e-47f3-e276-08db65894286 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2023 05:54:00.6373 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fe128f2c-073b-4c20-818e-7246a585940c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: UiQTBhnzT4GnZggRyfC7lIUgROae2OXfsxBrUo0cwziuDwNKPmzJJ0Jm3OmMm1QG/EJQKNjLdccyvYp9QMgNmwsYW5TJFTO1+H1yjFrh3wA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR13MB4731 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 From: Jin Liu Use rte_eal_alarm_set() function instead of clock cycle to implement meter stats timer, to make code more standard. Signed-off-by: Jin Liu Reviewed-by: Chaoyong He Reviewed-by: Niklas Söderlund --- drivers/net/nfp/flower/nfp_flower_ctrl.c | 20 ------------------ drivers/net/nfp/nfp_mtr.c | 27 +++++++++++++++++++++++- drivers/net/nfp/nfp_mtr.h | 2 -- 3 files changed, 26 insertions(+), 23 deletions(-) diff --git a/drivers/net/nfp/flower/nfp_flower_ctrl.c b/drivers/net/nfp/flower/nfp_flower_ctrl.c index 3e083d948e..9f069abe06 100644 --- a/drivers/net/nfp/flower/nfp_flower_ctrl.c +++ b/drivers/net/nfp/flower/nfp_flower_ctrl.c @@ -321,29 +321,15 @@ nfp_flower_cmsg_rx(struct nfp_app_fw_flower *app_fw_flower, } } -static void -nfp_mtr_stats_request(struct nfp_app_fw_flower *app_fw_flower) -{ - struct nfp_mtr *mtr; - - LIST_FOREACH(mtr, &app_fw_flower->mtr_priv->mtrs, next) - (void)nfp_flower_cmsg_qos_stats(app_fw_flower, &mtr->mtr_profile->conf.head); -} - void nfp_flower_ctrl_vnic_poll(struct nfp_app_fw_flower *app_fw_flower) { uint16_t count; - uint64_t cur_tsc; - uint64_t drain_tsc; - uint64_t pre_tsc = 0; struct nfp_net_rxq *rxq; struct nfp_net_hw *ctrl_hw; struct rte_eth_dev *ctrl_eth_dev; struct rte_mbuf *pkts_burst[MAX_PKT_BURST]; - drain_tsc = app_fw_flower->mtr_priv->drain_tsc; - ctrl_hw = app_fw_flower->ctrl_hw; ctrl_eth_dev = ctrl_hw->eth_dev; @@ -357,11 +343,5 @@ nfp_flower_ctrl_vnic_poll(struct nfp_app_fw_flower *app_fw_flower) /* Process cmsgs here */ nfp_flower_cmsg_rx(app_fw_flower, pkts_burst, count); } - - cur_tsc = rte_rdtsc(); - if (unlikely(cur_tsc - pre_tsc > drain_tsc)) { - nfp_mtr_stats_request(app_fw_flower); - pre_tsc = cur_tsc; - } } } diff --git a/drivers/net/nfp/nfp_mtr.c b/drivers/net/nfp/nfp_mtr.c index 5f85106f9d..afc4de4cc7 100644 --- a/drivers/net/nfp/nfp_mtr.c +++ b/drivers/net/nfp/nfp_mtr.c @@ -6,6 +6,7 @@ #include #include #include +#include #include "nfp_common.h" #include "nfp_mtr.h" @@ -18,6 +19,9 @@ #define NFP_FL_QOS_METER RTE_BIT32(10) #define NFP_FL_QOS_RFC2697 RTE_BIT32(0) +/* Alarm timeout value in microseconds */ +#define NFP_METER_STATS_INTERVAL 1000000 /* 1 second */ + /** * Callback to get MTR capabilities. * @@ -1072,9 +1076,22 @@ nfp_net_mtr_ops_get(struct rte_eth_dev *dev, void *arg) return 0; } +static void +nfp_mtr_stats_request(void *arg) +{ + struct nfp_mtr *mtr; + struct nfp_app_fw_flower *app_fw_flower = arg; + + LIST_FOREACH(mtr, &app_fw_flower->mtr_priv->mtrs, next) + nfp_flower_cmsg_qos_stats(app_fw_flower, &mtr->mtr_profile->conf.head); + + rte_eal_alarm_set(NFP_METER_STATS_INTERVAL, nfp_mtr_stats_request, arg); +} + int nfp_mtr_priv_init(struct nfp_pf_dev *pf_dev) { + int ret; struct nfp_mtr_priv *priv; struct nfp_app_fw_flower *app_fw_flower; @@ -1087,7 +1104,13 @@ nfp_mtr_priv_init(struct nfp_pf_dev *pf_dev) app_fw_flower = NFP_PRIV_TO_APP_FW_FLOWER(pf_dev->app_fw_priv); app_fw_flower->mtr_priv = priv; - priv->drain_tsc = rte_get_tsc_hz(); + ret = rte_eal_alarm_set(NFP_METER_STATS_INTERVAL, nfp_mtr_stats_request, + (void *)app_fw_flower); + if (ret < 0) { + PMD_INIT_LOG(ERR, "nfp mtr timer init failed."); + rte_free(priv); + return ret; + } LIST_INIT(&priv->mtrs); LIST_INIT(&priv->profiles); @@ -1110,6 +1133,8 @@ nfp_mtr_priv_uninit(struct nfp_pf_dev *pf_dev) app_fw_flower = NFP_PRIV_TO_APP_FW_FLOWER(pf_dev->app_fw_priv); priv = app_fw_flower->mtr_priv; + rte_eal_alarm_cancel(nfp_mtr_stats_request, (void *)app_fw_flower); + LIST_FOREACH(mtr, &priv->mtrs, next) { LIST_REMOVE(mtr, next); rte_free(mtr); diff --git a/drivers/net/nfp/nfp_mtr.h b/drivers/net/nfp/nfp_mtr.h index 41c472f139..f5406381ab 100644 --- a/drivers/net/nfp/nfp_mtr.h +++ b/drivers/net/nfp/nfp_mtr.h @@ -159,14 +159,12 @@ struct nfp_mtr { * @policies: the head node of policy list * @mtrs: the head node of mtrs list * @mtr_stats_lock: spinlock for meter stats - * @drain_tsc: clock period */ struct nfp_mtr_priv { LIST_HEAD(, nfp_mtr_profile) profiles; LIST_HEAD(, nfp_mtr_policy) policies; LIST_HEAD(, nfp_mtr) mtrs; rte_spinlock_t mtr_stats_lock; - uint64_t drain_tsc; }; int nfp_net_mtr_ops_get(struct rte_eth_dev *dev, void *arg); -- 2.39.1