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 D9F86A0524; Tue, 13 Apr 2021 05:50:57 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B9581160A37; Tue, 13 Apr 2021 05:50: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 465E1160A35 for ; Tue, 13 Apr 2021 05:50:55 +0200 (CEST) Received: from Internal Mail-Server by MTLPINE1 (envelope-from lizh@nvidia.com) with SMTP; 13 Apr 2021 06:50:50 +0300 Received: from nvidia.com (c-135-185-1-009.mtl.labs.mlnx [10.135.185.9]) by labmailer.mlnx (8.13.8/8.13.8) with ESMTP id 13D3oniK027261; Tue, 13 Apr 2021 06:50: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, Thomas Monjalon , Andrew Rybchenko Cc: dev@dpdk.org, rasland@nvidia.com, roniba@nvidia.com Date: Tue, 13 Apr 2021 06:50:42 +0300 Message-Id: <20210413035046.28578-2-lizh@nvidia.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20210413035046.28578-1-lizh@nvidia.com> References: <20210331085405.1445546-1-lizh@nvidia.com> <20210413035046.28578-1-lizh@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH v4 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 --- 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 1b1b4368f6..1f55f475e2 100644 --- a/doc/guides/rel_notes/release_21_05.rst +++ b/doc/guides/rel_notes/release_21_05.rst @@ -183,6 +183,18 @@ New Features * ethdev: Added RTE_FLOW_ACTION_TYPE_METER_COLOR in enum rte_flow_action_type. * ethdev: Added RTE_MTR_ERROR_TYPE_METER_POLICY_ID and RTE_MTR_ERROR_TYPE_METER_POLICY_ID into rte_mtr_error_type. +* **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 9f6f5e1a45..e71d923dda 100644 --- a/lib/librte_ethdev/rte_mtr.h +++ b/lib/librte_ethdev/rte_mtr.h @@ -133,46 +133,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; }; /** @@ -346,6 +371,48 @@ struct rte_mtr_capabilities { */ int color_aware_trtcm_rfc4115_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 */ @@ -363,6 +430,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