From patchwork Mon Mar 1 08:21:37 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Li Zhang X-Patchwork-Id: 88299 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 25E12A055D; Mon, 1 Mar 2021 09:21:50 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C98461CC575; Mon, 1 Mar 2021 09:21:49 +0100 (CET) Received: from mellanox.co.il (mail-il-dmz.mellanox.com [193.47.165.129]) by mails.dpdk.org (Postfix) with ESMTP id D9CB51CC572 for ; Mon, 1 Mar 2021 09:21:47 +0100 (CET) Received: from Internal Mail-Server by MTLPINE1 (envelope-from lizh@nvidia.com) with SMTP; 1 Mar 2021 10:21:43 +0200 Received: from nvidia.com (c-235-17-1-009.mtl.labs.mlnx [10.235.17.9]) by labmailer.mlnx (8.13.8/8.13.8) with ESMTP id 1218Leww009260; Mon, 1 Mar 2021 10:21:42 +0200 From: Li Zhang To: dekelp@nvidia.com, orika@nvidia.com, viacheslavo@nvidia.com, matan@nvidia.com Cc: dev@dpdk.org, thomas@monjalon.net, rasland@nvidia.com Date: Mon, 1 Mar 2021 10:21:37 +0200 Message-Id: <20210301082137.180931-2-lizh@nvidia.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20210301082137.180931-1-lizh@nvidia.com> References: <20210301082137.180931-1-lizh@nvidia.com> MIME-Version: 1.0 Subject: [dpdk-dev] [RFC 1/1] ethdev: add meter PPS profile 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 Sender: "dev" Currently meter algorithms only supports rate is bytes per second(BPS). Add this new meter srTCMp algorithm to support rate is packet per second. So that it can meter traffic by packet per second. The below structure will be extended: rte_mtr_algorithm rte_mtr_meter_profile Signed-off-by: Li Zhang --- .../traffic_metering_and_policing.rst | 3 +- doc/guides/rel_notes/release_20_11.rst | 5 +++ lib/librte_ethdev/rte_mtr.h | 32 +++++++++++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/doc/guides/prog_guide/traffic_metering_and_policing.rst b/doc/guides/prog_guide/traffic_metering_and_policing.rst index 90c781eb1d..4d2405d44a 100644 --- a/doc/guides/prog_guide/traffic_metering_and_policing.rst +++ b/doc/guides/prog_guide/traffic_metering_and_policing.rst @@ -17,7 +17,8 @@ The main features are: * Part of DPDK rte_ethdev API * Capability query API * Metering algorithms: RFC 2697 Single Rate Three Color Marker (srTCM), RFC 2698 - and RFC 4115 Two Rate Three Color Marker (trTCM) + and RFC 4115 Two Rate Three Color Marker (trTCM), + Single Rate Three Color Marker, Packet based (srTCMp). * Policer actions (per meter output color): recolor, drop * Statistics (per policer output color) diff --git a/doc/guides/rel_notes/release_20_11.rst b/doc/guides/rel_notes/release_20_11.rst index 7405a9864f..de04886cc9 100644 --- a/doc/guides/rel_notes/release_20_11.rst +++ b/doc/guides/rel_notes/release_20_11.rst @@ -429,6 +429,11 @@ New Features can leverage IOAT DMA channels with vhost asynchronous APIs. See the :doc:`../sample_app_ug/vhost` for more details. +* **Added support for meter PPS profile.** + + Currently meter algorithms only supports bytes per second(BPS). + Add this new meter algorithm to support packet per second (PPS) mode. + So that it can meter traffic by packet per second. Removed Items ------------- diff --git a/lib/librte_ethdev/rte_mtr.h b/lib/librte_ethdev/rte_mtr.h index 916a09c5c3..f27a4b5354 100644 --- a/lib/librte_ethdev/rte_mtr.h +++ b/lib/librte_ethdev/rte_mtr.h @@ -119,6 +119,11 @@ enum rte_mtr_algorithm { /** Two Rate Three Color Marker (trTCM) - IETF RFC 4115. */ RTE_MTR_TRTCM_RFC4115, + + /** Single Rate Three Color Marker, Packet based (srTCMp). + * - - similar to IETF RFC 2697 but rate is packet per second. + */ + RTE_MTR_SRTCMP, }; /** @@ -171,6 +176,20 @@ struct rte_mtr_meter_profile { /** Excess Burst Size (EBS) (bytes). */ uint64_t ebs; } trtcm_rfc4115; + + /** Items only valid when *alg* is set to srTCMp. */ + struct { + /** Committed Information Rate (CIR) + * (packets/second). + */ + uint64_t cir; + + /** Committed Burst Size (CBS) (packets). */ + uint64_t cbs; + + /** Excess Burst Size (EBS) (packets). */ + uint64_t ebs; + } srtcmp; }; }; @@ -317,6 +336,13 @@ struct rte_mtr_capabilities { */ uint32_t meter_trtcm_rfc4115_n_max; + /** Maximum number of MTR objects that can have their meter configured + * to run the srTCMp algorithm. The value of 0 + * indicates this metering algorithm is not supported. + * The maximum value is *n_max*. + */ + uint32_t meter_srtcmp_n_max; + /** Maximum traffic rate that can be metered by a single MTR object. For * srTCM RFC 2697, this is the maximum CIR rate. For trTCM RFC 2698, * this is the maximum PIR rate. For trTCM RFC 4115, this is the maximum @@ -342,6 +368,12 @@ struct rte_mtr_capabilities { */ int color_aware_trtcm_rfc4115_supported; + /** + * When non-zero, it indicates that color aware mode is supported for + * the srTCMp metering algorithm. + */ + int color_aware_srtcmp_supported; + /** When non-zero, it indicates that the policer packet recolor actions * are supported. * @see enum rte_mtr_policer_action