Update ip pipeline sample app for configuration flexiblity of
pipe traffic classes and queues.
Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com>
Signed-off-by: Abraham Tovar <abrahamx.tovar@intel.com>
Signed-off-by: Lukasz Krakowiak <lukaszx.krakowiak@intel.com>
static const char cmd_tmgr_subport_profile_help[] =
"tmgr subport profile\n"
" <tb_rate> <tb_size>\n"
static const char cmd_tmgr_subport_profile_help[] =
"tmgr subport profile\n"
" <tb_rate> <tb_size>\n"
-" <tc0_rate> <tc1_rate> <tc2_rate> <tc3_rate>\n"
+" <tc0_rate> <tc1_rate> <tc2_rate> <tc3_rate> <tc4_rate>"
+" <tc5_rate> <tc6_rate> <tc7_rate> <tc8_rate>"
+" <tc9_rate> <tc10_rate> <tc11_rate> <tc12_rate>\n"
" <tc_period>\n";
static void
" <tc_period>\n";
static void
struct rte_sched_subport_params p;
int status, i;
struct rte_sched_subport_params p;
int status, i;
snprintf(out, out_size, MSG_ARG_MISMATCH, tokens[0]);
return;
}
snprintf(out, out_size, MSG_ARG_MISMATCH, tokens[0]);
return;
}
- if (parser_read_uint32(&p.tc_period, tokens[9]) != 0) {
+ if (parser_read_uint32(&p.tc_period, tokens[18]) != 0) {
snprintf(out, out_size, MSG_ARG_INVALID, "tc_period");
return;
}
snprintf(out, out_size, MSG_ARG_INVALID, "tc_period");
return;
}
static const char cmd_tmgr_pipe_profile_help[] =
"tmgr pipe profile\n"
" <tb_rate> <tb_size>\n"
static const char cmd_tmgr_pipe_profile_help[] =
"tmgr pipe profile\n"
" <tb_rate> <tb_size>\n"
-" <tc0_rate> <tc1_rate> <tc2_rate> <tc3_rate>\n"
+" <tc0_rate> <tc1_rate> <tc2_rate> <tc3_rate> <tc4_rate>"
+" <tc5_rate> <tc6_rate> <tc7_rate> <tc8_rate>"
+" <tc9_rate> <tc10_rate> <tc11_rate> <tc12_rate>\n"
" <tc_period>\n"
" <tc_ov_weight>\n"
" <tc_period>\n"
" <tc_ov_weight>\n"
static void
cmd_tmgr_pipe_profile(char **tokens,
static void
cmd_tmgr_pipe_profile(char **tokens,
struct rte_sched_pipe_params p;
int status, i;
struct rte_sched_pipe_params p;
int status, i;
snprintf(out, out_size, MSG_ARG_MISMATCH, tokens[0]);
return;
}
snprintf(out, out_size, MSG_ARG_MISMATCH, tokens[0]);
return;
}
- if (parser_read_uint32(&p.tc_period, tokens[9]) != 0) {
+ if (parser_read_uint32(&p.tc_period, tokens[18]) != 0) {
snprintf(out, out_size, MSG_ARG_INVALID, "tc_period");
return;
}
#ifdef RTE_SCHED_SUBPORT_TC_OV
snprintf(out, out_size, MSG_ARG_INVALID, "tc_period");
return;
}
#ifdef RTE_SCHED_SUBPORT_TC_OV
- if (parser_read_uint8(&p.tc_ov_weight, tokens[10]) != 0) {
+ if (parser_read_uint8(&p.tc_ov_weight, tokens[19]) != 0) {
snprintf(out, out_size, MSG_ARG_INVALID, "tc_ov_weight");
return;
}
#endif
snprintf(out, out_size, MSG_ARG_INVALID, "tc_ov_weight");
return;
}
#endif
- for (i = 0; i < RTE_SCHED_QUEUES_PER_PIPE; i++)
- if (parser_read_uint8(&p.wrr_weights[i], tokens[11 + i]) != 0) {
+ for (i = 0; i < RTE_SCHED_BE_QUEUES_PER_PIPE; i++)
+ if (parser_read_uint8(&p.wrr_weights[i], tokens[20 + i]) != 0) {
snprintf(out, out_size, MSG_ARG_INVALID, "wrr_weights");
return;
}
snprintf(out, out_size, MSG_ARG_INVALID, "wrr_weights");
return;
}
" rate <rate>\n"
" spp <n_subports_per_port>\n"
" pps <n_pipes_per_subport>\n"
" rate <rate>\n"
" spp <n_subports_per_port>\n"
" pps <n_pipes_per_subport>\n"
-" qsize <qsize_tc0> <qsize_tc1> <qsize_tc2> <qsize_tc3>\n"
+" qsize <qsize_tc0> <qsize_tc1> <qsize_tc2>"
+" <qsize_tc3> <qsize_tc4> <qsize_tc5> <qsize_tc6>"
+" <qsize_tc7> <qsize_tc8> <qsize_tc9> <qsize_tc10>"
+" <qsize_tc11> <qsize_tc12>\n"
" fo <frame_overhead>\n"
" mtu <mtu>\n"
" cpu <cpu_id>\n";
" fo <frame_overhead>\n"
" mtu <mtu>\n"
" cpu <cpu_id>\n";
struct tmgr_port *tmgr_port;
int i;
struct tmgr_port *tmgr_port;
int i;
snprintf(out, out_size, MSG_ARG_MISMATCH, tokens[0]);
return;
}
snprintf(out, out_size, MSG_ARG_MISMATCH, tokens[0]);
return;
}
- if (strcmp(tokens[13], "fo") != 0) {
+ if (strcmp(tokens[22], "fo") != 0) {
snprintf(out, out_size, MSG_ARG_NOT_FOUND, "fo");
return;
}
snprintf(out, out_size, MSG_ARG_NOT_FOUND, "fo");
return;
}
- if (parser_read_uint32(&p.frame_overhead, tokens[14]) != 0) {
+ if (parser_read_uint32(&p.frame_overhead, tokens[23]) != 0) {
snprintf(out, out_size, MSG_ARG_INVALID, "frame_overhead");
return;
}
snprintf(out, out_size, MSG_ARG_INVALID, "frame_overhead");
return;
}
- if (strcmp(tokens[15], "mtu") != 0) {
+ if (strcmp(tokens[24], "mtu") != 0) {
snprintf(out, out_size, MSG_ARG_NOT_FOUND, "mtu");
return;
}
snprintf(out, out_size, MSG_ARG_NOT_FOUND, "mtu");
return;
}
- if (parser_read_uint32(&p.mtu, tokens[16]) != 0) {
+ if (parser_read_uint32(&p.mtu, tokens[25]) != 0) {
snprintf(out, out_size, MSG_ARG_INVALID, "mtu");
return;
}
snprintf(out, out_size, MSG_ARG_INVALID, "mtu");
return;
}
- if (strcmp(tokens[17], "cpu") != 0) {
+ if (strcmp(tokens[26], "cpu") != 0) {
snprintf(out, out_size, MSG_ARG_NOT_FOUND, "cpu");
return;
}
snprintf(out, out_size, MSG_ARG_NOT_FOUND, "cpu");
return;
}
- if (parser_read_uint32(&p.cpu_id, tokens[18]) != 0) {
+ if (parser_read_uint32(&p.cpu_id, tokens[27]) != 0) {
snprintf(out, out_size, MSG_ARG_INVALID, "cpu_id");
return;
}
snprintf(out, out_size, MSG_ARG_INVALID, "cpu_id");
return;
}
struct tmgr_port_params {
uint32_t rate;
uint32_t n_subports_per_port;
struct tmgr_port_params {
uint32_t rate;
uint32_t n_subports_per_port;
- uint32_t n_pipes_per_subport;
- uint16_t qsize[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE];
uint32_t frame_overhead;
uint32_t mtu;
uint32_t cpu_id;
uint32_t frame_overhead;
uint32_t mtu;
uint32_t cpu_id;
+ uint32_t n_pipes_per_subport;
+ uint16_t qsize[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE];
{
struct dscp_table_entry_data *dscp_entry = &dscp_table->entry[dscp];
uint32_t queue_id = data->queue_id |
{
struct dscp_table_entry_data *dscp_entry = &dscp_table->entry[dscp];
uint32_t queue_id = data->queue_id |
- (dscp_entry->tc << 2) |
dscp_entry->tc_queue;
rte_mbuf_sched_set(mbuf, queue_id, dscp_entry->tc,
(uint8_t)dscp_entry->color);
dscp_entry->tc_queue;
rte_mbuf_sched_set(mbuf, queue_id, dscp_entry->tc,
(uint8_t)dscp_entry->color);
* RTE_TABLE_ACTION_MTR
*/
/** Max number of traffic classes (TCs). */
* RTE_TABLE_ACTION_MTR
*/
/** Max number of traffic classes (TCs). */
-#define RTE_TABLE_ACTION_TC_MAX 4
+#define RTE_TABLE_ACTION_TC_MAX 16
/** Max number of queues per traffic class. */
/** Max number of queues per traffic class. */
-#define RTE_TABLE_ACTION_TC_QUEUE_MAX 4
+#define RTE_TABLE_ACTION_TC_QUEUE_MAX 16
/** Differentiated Services Code Point (DSCP) translation table entry. */
struct rte_table_action_dscp_table_entry {
/** Differentiated Services Code Point (DSCP) translation table entry. */
struct rte_table_action_dscp_table_entry {