app/testpmd: command to configure MTU
Take avantage of the .set_mtu ethdev function and make it possible to configure MTU on devices using testpmd. Signed-off-by: Ivan Boule <ivan.boule@6wind.com> Signed-off-by: David Marchand <david.marchand@6wind.com> Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
This commit is contained in:
parent
12cd0cccc3
commit
ae03d0d18a
@ -527,6 +527,8 @@ static void cmd_help_long_parsed(void *parsed_result,
|
||||
"port config all (txfreet|txrst|rxfreet) (value)\n"
|
||||
" Set free threshold for rx/tx, or set"
|
||||
" tx rs bit threshold.\n\n"
|
||||
"port config mtu X value\n"
|
||||
" Set the MTU of port X to a given value\n\n"
|
||||
);
|
||||
}
|
||||
|
||||
@ -1086,6 +1088,57 @@ cmdline_parse_inst_t cmd_config_max_pkt_len = {
|
||||
},
|
||||
};
|
||||
|
||||
/* *** configure port MTU *** */
|
||||
struct cmd_config_mtu_result {
|
||||
cmdline_fixed_string_t port;
|
||||
cmdline_fixed_string_t keyword;
|
||||
cmdline_fixed_string_t mtu;
|
||||
uint8_t port_id;
|
||||
uint16_t value;
|
||||
};
|
||||
|
||||
static void
|
||||
cmd_config_mtu_parsed(void *parsed_result,
|
||||
__attribute__((unused)) struct cmdline *cl,
|
||||
__attribute__((unused)) void *data)
|
||||
{
|
||||
struct cmd_config_mtu_result *res = parsed_result;
|
||||
|
||||
if (res->value < ETHER_MIN_LEN) {
|
||||
printf("mtu cannot be less than %d\n", ETHER_MIN_LEN);
|
||||
return;
|
||||
}
|
||||
port_mtu_set(res->port_id, res->value);
|
||||
}
|
||||
|
||||
cmdline_parse_token_string_t cmd_config_mtu_port =
|
||||
TOKEN_STRING_INITIALIZER(struct cmd_config_mtu_result, port,
|
||||
"port");
|
||||
cmdline_parse_token_string_t cmd_config_mtu_keyword =
|
||||
TOKEN_STRING_INITIALIZER(struct cmd_config_mtu_result, keyword,
|
||||
"config");
|
||||
cmdline_parse_token_string_t cmd_config_mtu_mtu =
|
||||
TOKEN_STRING_INITIALIZER(struct cmd_config_mtu_result, keyword,
|
||||
"mtu");
|
||||
cmdline_parse_token_num_t cmd_config_mtu_port_id =
|
||||
TOKEN_NUM_INITIALIZER(struct cmd_config_mtu_result, port_id, UINT8);
|
||||
cmdline_parse_token_num_t cmd_config_mtu_value =
|
||||
TOKEN_NUM_INITIALIZER(struct cmd_config_mtu_result, value, UINT16);
|
||||
|
||||
cmdline_parse_inst_t cmd_config_mtu = {
|
||||
.f = cmd_config_mtu_parsed,
|
||||
.data = NULL,
|
||||
.help_str = "port config mtu value",
|
||||
.tokens = {
|
||||
(void *)&cmd_config_mtu_port,
|
||||
(void *)&cmd_config_mtu_keyword,
|
||||
(void *)&cmd_config_mtu_mtu,
|
||||
(void *)&cmd_config_mtu_port_id,
|
||||
(void *)&cmd_config_mtu_value,
|
||||
NULL,
|
||||
},
|
||||
};
|
||||
|
||||
/* *** configure rx mode *** */
|
||||
struct cmd_config_rx_mode_flag {
|
||||
cmdline_fixed_string_t port;
|
||||
@ -6553,6 +6606,7 @@ cmdline_parse_ctx_t main_ctx[] = {
|
||||
(cmdline_parse_inst_t *)&cmd_config_speed_all,
|
||||
(cmdline_parse_inst_t *)&cmd_config_speed_specific,
|
||||
(cmdline_parse_inst_t *)&cmd_config_rx_tx,
|
||||
(cmdline_parse_inst_t *)&cmd_config_mtu,
|
||||
(cmdline_parse_inst_t *)&cmd_config_max_pkt_len,
|
||||
(cmdline_parse_inst_t *)&cmd_config_rx_mode_flag,
|
||||
(cmdline_parse_inst_t *)&cmd_config_rss,
|
||||
|
@ -503,6 +503,19 @@ port_reg_set(portid_t port_id, uint32_t reg_off, uint32_t reg_v)
|
||||
display_port_reg_value(port_id, reg_off, reg_v);
|
||||
}
|
||||
|
||||
void
|
||||
port_mtu_set(portid_t port_id, uint16_t mtu)
|
||||
{
|
||||
int diag;
|
||||
|
||||
if (port_id_is_invalid(port_id))
|
||||
return;
|
||||
diag = rte_eth_dev_set_mtu(port_id, mtu);
|
||||
if (diag == 0)
|
||||
return;
|
||||
printf("Set MTU failed. diag=%d\n", diag);
|
||||
}
|
||||
|
||||
/*
|
||||
* RX/TX ring descriptors display functions.
|
||||
*/
|
||||
|
@ -454,7 +454,7 @@ void fwd_config_setup(void);
|
||||
void set_def_fwd_config(void);
|
||||
int init_fwd_streams(void);
|
||||
|
||||
|
||||
void port_mtu_set(portid_t port_id, uint16_t mtu);
|
||||
void port_reg_bit_display(portid_t port_id, uint32_t reg_off, uint8_t bit_pos);
|
||||
void port_reg_bit_set(portid_t port_id, uint32_t reg_off, uint8_t bit_pos,
|
||||
uint8_t bit_v);
|
||||
|
Loading…
Reference in New Issue
Block a user