*/
struct rte_sched_pipe_params {
/** Token bucket rate (measured in bytes per second) */
- uint32_t tb_rate;
+ uint64_t tb_rate;
/** Token bucket size (measured in credits) */
- uint32_t tb_size;
+ uint64_t tb_size;
/** Traffic class rates (measured in bytes per second) */
- uint32_t tc_rate[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE];
+ uint64_t tc_rate[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE];
/** Enforcement period (measured in milliseconds) */
- uint32_t tc_period;
+ uint64_t tc_period;
/** Best-effort traffic class oversubscription weight */
uint8_t tc_ov_weight;
*/
struct rte_sched_subport_params {
/** Token bucket rate (measured in bytes per second) */
- uint32_t tb_rate;
+ uint64_t tb_rate;
/** Token bucket size (measured in credits) */
- uint32_t tb_size;
+ uint64_t tb_size;
/** Traffic class rates (measured in bytes per second) */
- uint32_t tc_rate[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE];
+ uint64_t tc_rate[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE];
/** Enforcement period for rates (measured in milliseconds) */
- uint32_t tc_period;
+ uint64_t tc_period;
/** Number of subport pipes.
* The subport can enable/allocate fewer pipes than the maximum
/** Subport statistics */
struct rte_sched_subport_stats {
/** Number of packets successfully written */
- uint32_t n_pkts_tc[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE];
+ uint64_t n_pkts_tc[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE];
/** Number of packets dropped */
- uint32_t n_pkts_tc_dropped[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE];
+ uint64_t n_pkts_tc_dropped[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE];
/** Number of bytes successfully written for each traffic class */
- uint32_t n_bytes_tc[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE];
+ uint64_t n_bytes_tc[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE];
/** Number of bytes dropped for each traffic class */
- uint32_t n_bytes_tc_dropped[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE];
+ uint64_t n_bytes_tc_dropped[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE];
#ifdef RTE_SCHED_RED
/** Number of packets dropped by red */
- uint32_t n_pkts_red_dropped[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE];
+ uint64_t n_pkts_red_dropped[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE];
#endif
};
/** Queue statistics */
struct rte_sched_queue_stats {
/** Packets successfully written */
- uint32_t n_pkts;
+ uint64_t n_pkts;
/** Packets dropped */
- uint32_t n_pkts_dropped;
+ uint64_t n_pkts_dropped;
#ifdef RTE_SCHED_RED
/** Packets dropped by RED */
- uint32_t n_pkts_red_dropped;
+ uint64_t n_pkts_red_dropped;
#endif
/** Bytes successfully written */
- uint32_t n_bytes;
+ uint64_t n_bytes;
/** Bytes dropped */
- uint32_t n_bytes_dropped;
+ uint64_t n_bytes_dropped;
};
/** Port configuration parameters. */
int socket;
/** Output port rate (measured in bytes per second) */
- uint32_t rate;
+ uint64_t rate;
/** Maximum Ethernet frame size (measured in bytes).
* Should not include the framing overhead.
* the subports of the same port.
*/
uint32_t n_pipes_per_subport;
-
- /** Packet queue size for each traffic class.
- * All the pipes within the same subport share the similar
- * configuration for the queues.
- */
- uint16_t qsize[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE];
-
- /** Pipe profile table.
- * Every pipe is configured using one of the profiles from this table.
- */
- struct rte_sched_pipe_params *pipe_profiles;
-
- /** Profiles in the pipe profile table */
- uint32_t n_pipe_profiles;
-
- /** Max profiles allowed in the pipe profile table */
- uint32_t n_max_pipe_profiles;
-
-#ifdef RTE_SCHED_RED
- /** RED parameters */
- struct rte_red_params red_params[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE][RTE_COLORS];
-#endif
};
/*
*
* @param port
* Handle to port scheduler instance
+ * @param subport_id
+ * Subport ID
* @param params
* Pipe profile parameters
* @param pipe_profile_id
*/
__rte_experimental
int
-rte_sched_port_pipe_profile_add(struct rte_sched_port *port,
+rte_sched_subport_pipe_profile_add(struct rte_sched_port *port,
+ uint32_t subport_id,
struct rte_sched_pipe_params *params,
uint32_t *pipe_profile_id);
* @param pipe_id
* Pipe ID within subport
* @param pipe_profile
- * ID of port-level pre-configured pipe profile
+ * ID of subport-level pre-configured pipe profile
* @return
* 0 upon success, error code otherwise
*/
/**
* Hierarchical scheduler memory footprint size per port
*
- * @param params
+ * @param port_params
* Port scheduler configuration parameter structure
+ * @param subport_params
+ * Array of subport parameter structures
* @return
* Memory footprint size in bytes upon success, 0 otherwise
*/
uint32_t
-rte_sched_port_get_memory_footprint(struct rte_sched_port_params *params);
-
+rte_sched_port_get_memory_footprint(struct rte_sched_port_params *port_params,
+ struct rte_sched_subport_params **subport_params);
/*
* Statistics
*