1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2017 Marvell International Ltd.
3 * Copyright(c) 2017 Semihalf.
10 #include <rte_common.h>
12 #include "mrvl_ethdev.h"
14 /** Code Points per Traffic Class. Equals max(DSCP, PCP). */
15 #define MRVL_CP_PER_TC (64)
17 /** Value used as "unknown". */
18 #define MRVL_UNKNOWN_TC (0xFF)
24 uint8_t inq[MRVL_PP2_RXQ_MAX];
25 uint8_t dscp[MRVL_CP_PER_TC];
26 uint8_t pcp[MRVL_CP_PER_TC];
30 enum pp2_ppio_color color;
31 } tc[MRVL_PP2_TC_MAX];
34 } outq[MRVL_PP2_RXQ_MAX];
35 enum pp2_cls_qos_tbl_type mapping_priority;
39 uint8_t use_global_defaults;
40 struct pp2_cls_plcr_params policer_params;
41 uint8_t policer_enable;
42 } port[RTE_MAX_ETHPORTS];
45 /** Global QoS configuration. */
46 extern struct mrvl_qos_cfg *mrvl_qos_cfg;
49 * Parse QoS configuration - rte_kvargs_process handler.
51 * Opens configuration file and parses its content.
54 * @param path Path to config file.
55 * @param extra_args Pointer to configuration structure.
56 * @returns 0 in case of success, exits otherwise.
59 mrvl_get_qoscfg(const char *key __rte_unused, const char *path,
63 * Configure RX Queues in a given port.
65 * Sets up RX queues, their Traffic Classes and DPDK rxq->(TC,inq) mapping.
67 * @param priv Port's private data
68 * @param portid DPDK port ID
69 * @param max_queues Maximum number of queues to configure.
70 * @returns 0 in case of success, negative value otherwise.
73 mrvl_configure_rxqs(struct mrvl_priv *priv, uint16_t portid,
79 * Finalize QoS table configuration and initialize it in SDK. It can be done
80 * only after port is started, so we have a valid ppio reference.
82 * @param priv Port's private (configuration) data.
83 * @returns 0 in case of success, exits otherwise.
86 mrvl_start_qos_mapping(struct mrvl_priv *priv);
88 #endif /* _MRVL_QOS_H_ */