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 5E747A0524; Tue, 13 Apr 2021 18:01:13 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9A230161157; Tue, 13 Apr 2021 18:00:57 +0200 (CEST) Received: from mellanox.co.il (mail-il-dmz.mellanox.com [193.47.165.129]) by mails.dpdk.org (Postfix) with ESMTP id EB079161143 for ; Tue, 13 Apr 2021 18:00:52 +0200 (CEST) Received: from Internal Mail-Server by MTLPINE1 (envelope-from lizh@nvidia.com) with SMTP; 13 Apr 2021 19:00:49 +0300 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 13DG0n8i018509; Tue, 13 Apr 2021 19:00:49 +0300 From: Li Zhang To: dekelp@nvidia.com, orika@nvidia.com, viacheslavo@nvidia.com, matan@nvidia.com, shahafs@nvidia.com, cristian.dumitrescu@intel.com, lironh@marvell.com, jerinj@marvell.com, ferruh.yigit@intel.com, ajit.khaparde@broadcom.com, Thomas Monjalon , Andrew Rybchenko Cc: dev@dpdk.org, rasland@nvidia.com, roniba@nvidia.com Date: Tue, 13 Apr 2021 18:59:54 +0300 Message-Id: <20210413155958.2024584-2-lizh@nvidia.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20210413155958.2024584-1-lizh@nvidia.com> References: <20210331085405.1445546-1-lizh@nvidia.com> <20210413155958.2024584-1-lizh@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH v5 1/4] ethdev: add packet mode in meter profile structure 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 packet_mode flag in meter profile parameters data structure. So that it can meter traffic by packet per second. When packet_mode is 0, the profile rates and bucket sizes are specified in bytes per second and bytes when packet_mode is not 0, the profile rates and bucket sizes are specified in packets and packets per second. The below structure will be extended: rte_mtr_meter_profile rte_mtr_capabilities Signed-off-by: Li Zhang Acked-by: Matan Azrad Acked-by: Cristian Dumitrescu Acked-by: Jerin Jacob Acked-by: Ajit Khaparde --- doc/guides/rel_notes/release_21_05.rst | 12 ++++ lib/librte_ethdev/rte_mtr.h | 90 ++++++++++++++++++++++---- 2 files changed, 91 insertions(+), 11 deletions(-) diff --git a/doc/guides/rel_notes/release_21_05.rst b/doc/guides/rel_notes/release_21_05.rst index 113b37cddc..b0b82380f7 100644 --- a/doc/guides/rel_notes/release_21_05.rst +++ b/doc/guides/rel_notes/release_21_05.rst @@ -163,6 +163,18 @@ New Features ``show port (port_id) rxq (queue_id) desc used count`` +* **Added support for meter PPS profile.** + + Currently meter algorithms only supports bytes per second(BPS). + Add packet_mode in the meter profile parameters data structures + to support packet per second (PPS) mode. + So that it can meter traffic by packet per second. + Packet_mode must be 0 when it is bytes mode. + +* **Updated MLX5 driver.** + + * Added support for meter profile packet per second mode (packet_mode). + Removed Items ------------- diff --git a/lib/librte_ethdev/rte_mtr.h b/lib/librte_ethdev/rte_mtr.h index 916a09c5c3..ceb5dcbef1 100644 --- a/lib/librte_ethdev/rte_mtr.h +++ b/lib/librte_ethdev/rte_mtr.h @@ -132,46 +132,71 @@ struct rte_mtr_meter_profile { union { /** Items only valid when *alg* is set to srTCM - RFC 2697. */ struct { - /** Committed Information Rate (CIR) (bytes/second). */ + /** + * Committed Information Rate (CIR) + * (bytes per second or packets per second). + */ uint64_t cir; - /** Committed Burst Size (CBS) (bytes). */ + /** Committed Burst Size (CBS) (bytes or packets). */ uint64_t cbs; - /** Excess Burst Size (EBS) (bytes). */ + /** Excess Burst Size (EBS) (bytes or packets). */ uint64_t ebs; } srtcm_rfc2697; /** Items only valid when *alg* is set to trTCM - RFC 2698. */ struct { - /** Committed Information Rate (CIR) (bytes/second). */ + /** + * Committed Information Rate (CIR) + * (bytes per second or packets per second). + */ uint64_t cir; - /** Peak Information Rate (PIR) (bytes/second). */ + /** + * Peak Information Rate (PIR) + * (bytes per second or packets per second). + */ uint64_t pir; - /** Committed Burst Size (CBS) (byes). */ + /** Committed Burst Size (CBS) (bytes or packets). */ uint64_t cbs; - /** Peak Burst Size (PBS) (bytes). */ + /** Peak Burst Size (PBS) (bytes or packets). */ uint64_t pbs; } trtcm_rfc2698; /** Items only valid when *alg* is set to trTCM - RFC 4115. */ struct { - /** Committed Information Rate (CIR) (bytes/second). */ + /** + * Committed Information Rate (CIR) + * (bytes per second or packets per second). + */ uint64_t cir; - /** Excess Information Rate (EIR) (bytes/second). */ + /** + * Excess Information Rate (EIR) + * (bytes per second or packets per second). + */ uint64_t eir; - /** Committed Burst Size (CBS) (byes). */ + /** Committed Burst Size (CBS) (bytes or packets). */ uint64_t cbs; - /** Excess Burst Size (EBS) (bytes). */ + /** Excess Burst Size (EBS) (bytes or packets). */ uint64_t ebs; } trtcm_rfc4115; }; + + /** + * When zero, the byte mode is enabled for the current profile, so the + * *rate* and *size* fields are specified in bytes per second + * and bytes, respectively. + * When non-zero, the packet mode is enabled for the current profile, + * so the *rate* and *size* fields are specified in packets per second + * and packets, respectively. + */ + int packet_mode; }; /** @@ -354,6 +379,48 @@ struct rte_mtr_capabilities { */ int policer_action_drop_supported; + /** + * srTCM rfc2697 byte mode supported. + * When non-zero, it indicates that byte mode is supported for + * the srTCM RFC 2697 metering algorithm. + */ + int srtcm_rfc2697_byte_mode_supported; + + /** + * srTCM rfc2697 packet mode supported. + * When non-zero, it indicates that packet mode is supported for + * the srTCM RFC 2697 metering algorithm. + */ + int srtcm_rfc2697_packet_mode_supported; + + /** + * trTCM rfc2698 byte mode supported. + * When non-zero, it indicates that byte mode is supported for + * the trTCM RFC 2698 metering algorithm. + */ + int trtcm_rfc2698_byte_mode_supported; + + /** + * trTCM rfc2698 packet mode supported. + * When non-zero, it indicates that packet mode is supported for + * the trTCM RFC 2698 metering algorithm. + */ + int trtcm_rfc2698_packet_mode_supported; + + /** + * trTCM rfc4115 byte mode supported. + * When non-zero, it indicates that byte mode is supported for + * the trTCM RFC 4115 metering algorithm. + */ + int trtcm_rfc4115_byte_mode_supported; + + /** + * trTCM rfc4115 packet mode supported. + * When non-zero, it indicates that packet mode is supported for + * the trTCM RFC 4115 metering algorithm. + */ + int trtcm_rfc4115_packet_mode_supported; + /** Set of supported statistics counter types. * @see enum rte_mtr_stats_type */ @@ -371,6 +438,7 @@ enum rte_mtr_error_type { RTE_MTR_ERROR_TYPE_UNSPECIFIED, /**< Cause unspecified. */ RTE_MTR_ERROR_TYPE_METER_PROFILE_ID, RTE_MTR_ERROR_TYPE_METER_PROFILE, + RTE_MTR_ERROR_TYPE_METER_PROFILE_PACKET_MODE, RTE_MTR_ERROR_TYPE_MTR_ID, RTE_MTR_ERROR_TYPE_MTR_PARAMS, RTE_MTR_ERROR_TYPE_POLICER_ACTION_GREEN, -- 2.27.0