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>
Acked-by: Matan Azrad <matan@nvidia.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
This commit is contained in:
Li Zhang 2021-04-13 18:59:54 +03:00 committed by Ferruh Yigit
parent 23ea199b73
commit 74c8ec894d
2 changed files with 85 additions and 11 deletions

View File

@ -81,6 +81,12 @@ New Features
representor=[[c#]pf#]sf# sf[0,2-1023] /* 1023 SFs. */
representor=[c#]pf# c2pf[0,1] /* 2 PFs on controller 2. */
* **Added support for meter PPS profile.**
Added packet mode in the meter profile parameters data structures
to support metering traffic by packet per second (PPS),
in addition to the initial bytes per second (BPS) mode (value 0).
* **Updated Arkville PMD driver.**
Updated Arkville net driver with new features and improvements, including:

View File

@ -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,