xref: /dpdk/lib/ethdev/rte_cman.h (revision 719834a6849e1daf4a70ff7742bbcc3ae7e25607)
1*6b81dddbSJerin Jacob /* SPDX-License-Identifier: BSD-3-Clause
2*6b81dddbSJerin Jacob  * Copyright(C) 2022 Marvell International Ltd.
3*6b81dddbSJerin Jacob  */
4*6b81dddbSJerin Jacob 
5*6b81dddbSJerin Jacob #ifndef RTE_CMAN_H
6*6b81dddbSJerin Jacob #define RTE_CMAN_H
7*6b81dddbSJerin Jacob 
8*6b81dddbSJerin Jacob #include <rte_bitops.h>
9*6b81dddbSJerin Jacob 
10*6b81dddbSJerin Jacob /**
11*6b81dddbSJerin Jacob  * @file
12*6b81dddbSJerin Jacob  * Congestion management related parameters for DPDK.
13*6b81dddbSJerin Jacob  */
14*6b81dddbSJerin Jacob 
15*6b81dddbSJerin Jacob /** Congestion management modes */
16*6b81dddbSJerin Jacob enum rte_cman_mode {
17*6b81dddbSJerin Jacob 	/**
18*6b81dddbSJerin Jacob 	 * Congestion based on Random Early Detection.
19*6b81dddbSJerin Jacob 	 *
20*6b81dddbSJerin Jacob 	 * https://en.wikipedia.org/wiki/Random_early_detection
21*6b81dddbSJerin Jacob 	 * http://www.aciri.org/floyd/papers/red/red.html
22*6b81dddbSJerin Jacob 	 * @see struct rte_cman_red_params
23*6b81dddbSJerin Jacob 	 */
24*6b81dddbSJerin Jacob 	RTE_CMAN_RED = RTE_BIT32(0),
25*6b81dddbSJerin Jacob };
26*6b81dddbSJerin Jacob 
27*6b81dddbSJerin Jacob /**
28*6b81dddbSJerin Jacob  * RED based congestion management configuration parameters.
29*6b81dddbSJerin Jacob  */
30*6b81dddbSJerin Jacob struct rte_cman_red_params {
31*6b81dddbSJerin Jacob 	/**
32*6b81dddbSJerin Jacob 	 * Minimum threshold (min_th) value
33*6b81dddbSJerin Jacob 	 *
34*6b81dddbSJerin Jacob 	 * Value expressed as percentage. Value must be in 0 to 100(inclusive).
35*6b81dddbSJerin Jacob 	 */
36*6b81dddbSJerin Jacob 	uint8_t min_th;
37*6b81dddbSJerin Jacob 	/**
38*6b81dddbSJerin Jacob 	 * Maximum threshold (max_th) value
39*6b81dddbSJerin Jacob 	 *
40*6b81dddbSJerin Jacob 	 * Value expressed as percentage. Value must be in 0 to 100(inclusive).
41*6b81dddbSJerin Jacob 	 */
42*6b81dddbSJerin Jacob 	uint8_t max_th;
43*6b81dddbSJerin Jacob 	/** Inverse of packet marking probability maximum value (maxp = 1 / maxp_inv) */
44*6b81dddbSJerin Jacob 	uint16_t maxp_inv;
45*6b81dddbSJerin Jacob };
46*6b81dddbSJerin Jacob 
47*6b81dddbSJerin Jacob #endif /* RTE_CMAN_H */
48