All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Dumitrescu, Cristian" <cristian.dumitrescu@intel.com>
To: Li Zhang <lizh@nvidia.com>,
	"dekelp@nvidia.com" <dekelp@nvidia.com>,
	"orika@nvidia.com" <orika@nvidia.com>,
	"viacheslavo@nvidia.com" <viacheslavo@nvidia.com>,
	"matan@nvidia.com" <matan@nvidia.com>,
	"shahafs@nvidia.com" <shahafs@nvidia.com>,
	Thomas Monjalon <thomas@monjalon.net>,
	"Yigit, Ferruh" <ferruh.yigit@intel.com>,
	"Andrew Rybchenko" <andrew.rybchenko@oktetlabs.ru>
Cc: "dev@dpdk.org" <dev@dpdk.org>,
	"rasland@nvidia.com" <rasland@nvidia.com>,
	 "roniba@nvidia.com" <roniba@nvidia.com>
Subject: Re: [dpdk-dev] [PATCH 1/2] ethdev: add packet mode in meter profile structure
Date: Wed, 31 Mar 2021 16:26:41 +0000	[thread overview]
Message-ID: <DM6PR11MB2796336D67827B588445D982EB7C9@DM6PR11MB2796.namprd11.prod.outlook.com> (raw)
In-Reply-To: <20210331085405.1445546-2-lizh@nvidia.com>

Hi Li,

> -----Original Message-----
> From: Li Zhang <lizh@nvidia.com>
> Sent: Wednesday, March 31, 2021 9:54 AM
> To: dekelp@nvidia.com; orika@nvidia.com; viacheslavo@nvidia.com;
> matan@nvidia.com; shahafs@nvidia.com; Dumitrescu, Cristian
> <cristian.dumitrescu@intel.com>; Thomas Monjalon
> <thomas@monjalon.net>; Yigit, Ferruh <ferruh.yigit@intel.com>; Andrew
> Rybchenko <andrew.rybchenko@oktetlabs.ru>
> Cc: dev@dpdk.org; rasland@nvidia.com; roniba@nvidia.com
> Subject: [PATCH 1/2] ethdev: add packet mode in meter profile structure
> 
> 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 <lizh@nvidia.com>
> ---
>  doc/guides/rel_notes/release_21_05.rst |  7 ++
>  lib/librte_ethdev/rte_mtr.h            | 89 ++++++++++++++++++++++----
>  2 files changed, 85 insertions(+), 11 deletions(-)
> 
> diff --git a/doc/guides/rel_notes/release_21_05.rst
> b/doc/guides/rel_notes/release_21_05.rst
> index 3c76148b11..c9c15794ad 100644
> --- a/doc/guides/rel_notes/release_21_05.rst
> +++ b/doc/guides/rel_notes/release_21_05.rst
> @@ -119,6 +119,13 @@ New Features
>    * Added command to display Rx queue used descriptor count.
>      ``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.
> 
>  Removed Items
>  -------------
> diff --git a/lib/librte_ethdev/rte_mtr.h b/lib/librte_ethdev/rte_mtr.h
> index e1dc59eb06..52611a90f5 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;
>  };
> 
>  /**
> @@ -333,6 +358,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
>  	 */
> --
> 2.27.0

These API updates look good to me, but please add the necessary checks to the existing drivers implementing the rte_mtr API to makes sure that profiles with packet_mode set to TRUE are rejected.

For the Soft NIC driver, this is a simple check in file drivers/net/softnic/rte_eth_softnic_meter.c, function meter_profile_check. Thanks!

Regards,
Cristian

  reply	other threads:[~2021-03-31 16:28 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-31  8:54 [dpdk-dev] [PATCH 0/2] Support PPS(packet per second) on meter Li Zhang
2021-03-31  8:54 ` [dpdk-dev] [PATCH 1/2] ethdev: add packet mode in meter profile structure Li Zhang
2021-03-31 16:26   ` Dumitrescu, Cristian [this message]
2021-04-01  1:41     ` Li Zhang
2021-04-01  6:19       ` Li Zhang
2021-04-07 20:20         ` Dumitrescu, Cristian
2021-04-08  4:06           ` Li Zhang
2021-03-31  8:54 ` [dpdk-dev] [PATCH 2/2] app/testpmd: add meter profile packet mode option Li Zhang
2021-04-07 20:17   ` Dumitrescu, Cristian
2021-04-08  2:34     ` Li Zhang
2021-04-07 20:21   ` Dumitrescu, Cristian
2021-04-08  3:58 ` [dpdk-dev] [PATCH v2 0/4] Support PPS(packet per second) on meter Li Zhang
2021-04-08  3:58   ` [dpdk-dev] [PATCH v2 1/4] ethdev: add packet mode in meter profile structure Li Zhang
2021-04-08  3:58   ` [dpdk-dev] [PATCH v2 2/4] app/testpmd: add meter profile packet mode option Li Zhang
2021-04-08  3:58   ` [dpdk-dev] [PATCH v2 3/4] net/softnic: check meter packet mode Li Zhang
2021-04-08  3:58   ` [dpdk-dev] [PATCH v2 4/4] net/mvpp2: " Li Zhang
2021-04-10  7:24   ` [dpdk-dev] [PATCH v3 0/4] Support PPS(packet per second) on meter Li Zhang
2021-04-10  7:24     ` [dpdk-dev] [PATCH v3 1/4] ethdev: add packet mode in meter profile structure Li Zhang
2021-04-12 19:23       ` Dumitrescu, Cristian
2021-04-12 19:28         ` Jerin Jacob
2021-04-13  3:48           ` Ajit Khaparde
2021-04-10  7:24     ` [dpdk-dev] [PATCH v3 2/4] app/testpmd: add meter profile packet mode option Li Zhang
2021-04-12 23:51       ` Ferruh Yigit
2021-04-13  2:57         ` Li Zhang
2021-04-10  7:24     ` [dpdk-dev] [PATCH v3 3/4] net/softnic: check meter packet mode Li Zhang
2021-04-12 19:24       ` Dumitrescu, Cristian
2021-04-10  7:24     ` [dpdk-dev] [PATCH v3 4/4] net/mvpp2: " Li Zhang
2021-04-12 23:54     ` [dpdk-dev] [PATCH v3 0/4] Support PPS(packet per second) on meter Ferruh Yigit
2021-04-13  2:53       ` Li Zhang
2021-04-13  3:50 ` [dpdk-dev] [PATCH v4 " Li Zhang
2021-04-13  3:50   ` [dpdk-dev] [PATCH v4 1/4] ethdev: add packet mode in meter profile structure Li Zhang
2021-04-13  3:50   ` [dpdk-dev] [PATCH v4 2/4] app/testpmd: add meter profile packet mode option Li Zhang
2021-04-13  3:50   ` [dpdk-dev] [PATCH v4 3/4] net/softnic: check meter packet mode Li Zhang
2021-04-13  3:50   ` [dpdk-dev] [PATCH v4 4/4] net/mvpp2: " Li Zhang
2021-04-13  5:42     ` [dpdk-dev] [EXT] " Liron Himi
2021-04-13 10:24   ` [dpdk-dev] [PATCH v4 0/4] Support PPS(packet per second) on meter Ferruh Yigit
2021-04-13 11:02     ` Li Zhang
2021-04-13 11:05       ` Ferruh Yigit
2021-04-13 15:46         ` Li Zhang
2021-04-13 15:59 ` [dpdk-dev] [PATCH v5 " Li Zhang
2021-04-13 15:59   ` [dpdk-dev] [PATCH v5 1/4] ethdev: add packet mode in meter profile structure Li Zhang
2021-04-17 22:35     ` Thomas Monjalon
2021-04-13 15:59   ` [dpdk-dev] [PATCH v5 2/4] app/testpmd: add meter profile packet mode option Li Zhang
2021-04-13 16:09     ` Ajit Khaparde
2021-04-13 15:59   ` [dpdk-dev] [PATCH v5 3/4] net/softnic: check meter packet mode Li Zhang
2021-04-13 15:59   ` [dpdk-dev] [PATCH v5 4/4] net/mvpp2: " Li Zhang
2021-04-13 18:39   ` [dpdk-dev] [PATCH v5 0/4] Support PPS(packet per second) on meter Ferruh Yigit

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=DM6PR11MB2796336D67827B588445D982EB7C9@DM6PR11MB2796.namprd11.prod.outlook.com \
    --to=cristian.dumitrescu@intel.com \
    --cc=andrew.rybchenko@oktetlabs.ru \
    --cc=dekelp@nvidia.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=lizh@nvidia.com \
    --cc=matan@nvidia.com \
    --cc=orika@nvidia.com \
    --cc=rasland@nvidia.com \
    --cc=roniba@nvidia.com \
    --cc=shahafs@nvidia.com \
    --cc=thomas@monjalon.net \
    --cc=viacheslavo@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.