@@ -621,7 +621,8 @@ Enable one of the specific aggregators mode when in mode 4 (link-aggregation-802
show bonding config
~~~~~~~~~~~~~~~~~~~
-Show the current configuration of a Link Bonding device::
+Show the current configuration of a Link Bonding device, it also show link-aggregation-802.3ad
+information if the Link mode is mode 4::
testpmd> show bonding config (port id)
@@ -630,15 +631,9 @@ to show the configuration a Link Bonding device (port 9) with 3 slave devices (1
in balance mode with a transmission policy of layer 2+3::
testpmd> show bonding config 9
- Bonding mode: 2
+ - Dev basic:
+ Bonding mode: BALANCE(2)
Balance Xmit Policy: BALANCE_XMIT_POLICY_LAYER23
Slaves (3): [1 3 4]
Active Slaves (3): [1 3 4]
Primary: [3]
-
-show bonding lacp info
-~~~~~~~~~~~~~~~~~~~~~~
-
-Show information about the Link Bonding device in mode 4 (link-aggregation-802.3ad)::
-
- testpmd> show bonding lacp info (port_id)
@@ -222,185 +222,6 @@ static cmdline_parse_inst_t cmd_set_balance_xmit_policy = {
}
};
-/* *** SHOW IEEE802.3 BONDING INFORMATION *** */
-struct cmd_show_bonding_lacp_info_result {
- cmdline_fixed_string_t show;
- cmdline_fixed_string_t bonding;
- cmdline_fixed_string_t lacp;
- cmdline_fixed_string_t info;
- portid_t port_id;
-};
-
-static void port_param_show(struct port_params *params)
-{
- char buf[RTE_ETHER_ADDR_FMT_SIZE];
-
- printf("\t\tsystem priority: %u\n", params->system_priority);
- rte_ether_format_addr(buf, RTE_ETHER_ADDR_FMT_SIZE, ¶ms->system);
- printf("\t\tsystem mac address: %s\n", buf);
- printf("\t\tport key: %u\n", params->key);
- printf("\t\tport priority: %u\n", params->port_priority);
- printf("\t\tport number: %u\n", params->port_number);
-}
-
-static void lacp_slave_info_show(struct rte_eth_bond_8023ad_slave_info *info)
-{
- char a_state[256] = { 0 };
- char p_state[256] = { 0 };
- int a_len = 0;
- int p_len = 0;
- uint32_t i;
-
- static const char * const state[] = {
- "ACTIVE",
- "TIMEOUT",
- "AGGREGATION",
- "SYNCHRONIZATION",
- "COLLECTING",
- "DISTRIBUTING",
- "DEFAULTED",
- "EXPIRED"
- };
- static const char * const selection[] = {
- "UNSELECTED",
- "STANDBY",
- "SELECTED"
- };
-
- for (i = 0; i < RTE_DIM(state); i++) {
- if ((info->actor_state >> i) & 1)
- a_len += snprintf(&a_state[a_len],
- RTE_DIM(a_state) - a_len, "%s ",
- state[i]);
-
- if ((info->partner_state >> i) & 1)
- p_len += snprintf(&p_state[p_len],
- RTE_DIM(p_state) - p_len, "%s ",
- state[i]);
- }
- printf("\tAggregator port id: %u\n", info->agg_port_id);
- printf("\tselection: %s\n", selection[info->selected]);
- printf("\tActor detail info:\n");
- port_param_show(&info->actor);
- printf("\t\tport state: %s\n", a_state);
- printf("\tPartner detail info:\n");
- port_param_show(&info->partner);
- printf("\t\tport state: %s\n", p_state);
- printf("\n");
-}
-
-static void lacp_conf_show(struct rte_eth_bond_8023ad_conf *conf)
-{
- printf("\tfast period: %u ms\n", conf->fast_periodic_ms);
- printf("\tslow period: %u ms\n", conf->slow_periodic_ms);
- printf("\tshort timeout: %u ms\n", conf->short_timeout_ms);
- printf("\tlong timeout: %u ms\n", conf->long_timeout_ms);
- printf("\taggregate wait timeout: %u ms\n",
- conf->aggregate_wait_timeout_ms);
- printf("\ttx period: %u ms\n", conf->tx_period_ms);
- printf("\trx marker period: %u ms\n", conf->rx_marker_period_ms);
- printf("\tupdate timeout: %u ms\n", conf->update_timeout_ms);
- switch (conf->agg_selection) {
- case AGG_BANDWIDTH:
- printf("\taggregation mode: bandwidth\n");
- break;
- case AGG_STABLE:
- printf("\taggregation mode: stable\n");
- break;
- case AGG_COUNT:
- printf("\taggregation mode: count\n");
- break;
- default:
- printf("\taggregation mode: invalid\n");
- break;
- }
-
- printf("\n");
-}
-
-static void cmd_show_bonding_lacp_info_parsed(void *parsed_result,
- __rte_unused struct cmdline *cl, __rte_unused void *data)
-{
- struct cmd_show_bonding_lacp_info_result *res = parsed_result;
- struct rte_eth_bond_8023ad_slave_info slave_info;
- struct rte_eth_bond_8023ad_conf port_conf;
- portid_t slaves[RTE_MAX_ETHPORTS];
- portid_t port_id = res->port_id;
- int num_active_slaves;
- int bonding_mode;
- int i;
- int ret;
-
- bonding_mode = rte_eth_bond_mode_get(port_id);
- if (bonding_mode != BONDING_MODE_8023AD) {
- fprintf(stderr, "\tBonding mode is not mode 4\n");
- return;
- }
-
- num_active_slaves = rte_eth_bond_active_slaves_get(port_id, slaves,
- RTE_MAX_ETHPORTS);
- if (num_active_slaves < 0) {
- fprintf(stderr, "\tFailed to get active slave list for port = %u\n",
- port_id);
- return;
- }
- if (num_active_slaves == 0)
- fprintf(stderr, "\tIEEE802.3 port %u has no active slave\n",
- port_id);
-
- printf("\tIEEE802.3 port: %u\n", port_id);
- ret = rte_eth_bond_8023ad_conf_get(port_id, &port_conf);
- if (ret) {
- fprintf(stderr, "\tGet bonded device %u info failed\n",
- port_id);
- return;
- }
- lacp_conf_show(&port_conf);
-
- for (i = 0; i < num_active_slaves; i++) {
- ret = rte_eth_bond_8023ad_slave_info(port_id, slaves[i],
- &slave_info);
- if (ret) {
- fprintf(stderr, "\tGet slave device %u info failed\n",
- slaves[i]);
- return;
- }
- printf("\tSlave Port: %u\n", slaves[i]);
- lacp_slave_info_show(&slave_info);
- }
-}
-
-static cmdline_parse_token_string_t cmd_show_bonding_lacp_info_show =
- TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
- show, "show");
-static cmdline_parse_token_string_t cmd_show_bonding_lacp_info_bonding =
- TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
- bonding, "bonding");
-static cmdline_parse_token_string_t cmd_show_bonding_lacp_info_lacp =
- TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
- bonding, "lacp");
-static cmdline_parse_token_string_t cmd_show_bonding_lacp_info_info =
- TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
- info, "info");
-static cmdline_parse_token_num_t cmd_show_bonding_lacp_info_port_id =
- TOKEN_NUM_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
- port_id, RTE_UINT16);
-
-static cmdline_parse_inst_t cmd_show_bonding_lacp_info = {
- .f = cmd_show_bonding_lacp_info_parsed,
- .help_str = "show bonding lacp info <port_id> : "
- "Show bonding IEEE802.3 information for port_id",
- .data = NULL,
- .tokens = {
- (void *)&cmd_show_bonding_lacp_info_show,
- (void *)&cmd_show_bonding_lacp_info_bonding,
- (void *)&cmd_show_bonding_lacp_info_lacp,
- (void *)&cmd_show_bonding_lacp_info_info,
- (void *)&cmd_show_bonding_lacp_info_port_id,
- NULL
- }
-};
-
/* *** SHOW NIC BONDING CONFIGURATION *** */
struct cmd_show_bonding_config_result {
cmdline_fixed_string_t show;
@@ -413,110 +234,17 @@ static void cmd_show_bonding_config_parsed(void *parsed_result,
__rte_unused struct cmdline *cl, __rte_unused void *data)
{
struct cmd_show_bonding_config_result *res = parsed_result;
- int bonding_mode, agg_mode;
- portid_t slaves[RTE_MAX_ETHPORTS];
- int num_slaves, num_active_slaves;
- int primary_id;
- int i;
portid_t port_id = res->port_id;
+ int bonding_mode;
- /* Display the bonding mode.*/
bonding_mode = rte_eth_bond_mode_get(port_id);
if (bonding_mode < 0) {
fprintf(stderr, "\tFailed to get bonding mode for port = %d\n",
port_id);
return;
}
- printf("\tBonding mode: %d\n", bonding_mode);
-
- if (bonding_mode == BONDING_MODE_BALANCE ||
- bonding_mode == BONDING_MODE_8023AD) {
- int balance_xmit_policy;
-
- balance_xmit_policy = rte_eth_bond_xmit_policy_get(port_id);
- if (balance_xmit_policy < 0) {
- fprintf(stderr,
- "\tFailed to get balance xmit policy for port = %d\n",
- port_id);
- return;
- }
- printf("\tBalance Xmit Policy: ");
-
- switch (balance_xmit_policy) {
- case BALANCE_XMIT_POLICY_LAYER2:
- printf("BALANCE_XMIT_POLICY_LAYER2");
- break;
- case BALANCE_XMIT_POLICY_LAYER23:
- printf("BALANCE_XMIT_POLICY_LAYER23");
- break;
- case BALANCE_XMIT_POLICY_LAYER34:
- printf("BALANCE_XMIT_POLICY_LAYER34");
- break;
- }
- printf("\n");
- }
-
- if (bonding_mode == BONDING_MODE_8023AD) {
- agg_mode = rte_eth_bond_8023ad_agg_selection_get(port_id);
- printf("\tIEEE802.3AD Aggregator Mode: ");
- switch (agg_mode) {
- case AGG_BANDWIDTH:
- printf("bandwidth");
- break;
- case AGG_STABLE:
- printf("stable");
- break;
- case AGG_COUNT:
- printf("count");
- break;
- }
- printf("\n");
- }
-
- num_slaves = rte_eth_bond_slaves_get(port_id, slaves, RTE_MAX_ETHPORTS);
-
- if (num_slaves < 0) {
- fprintf(stderr, "\tFailed to get slave list for port = %d\n",
- port_id);
- return;
- }
- if (num_slaves > 0) {
- printf("\tSlaves (%d): [", num_slaves);
- for (i = 0; i < num_slaves - 1; i++)
- printf("%d ", slaves[i]);
- printf("%d]\n", slaves[num_slaves - 1]);
- } else {
- printf("\tSlaves: []\n");
- }
-
- num_active_slaves = rte_eth_bond_active_slaves_get(port_id, slaves,
- RTE_MAX_ETHPORTS);
-
- if (num_active_slaves < 0) {
- fprintf(stderr,
- "\tFailed to get active slave list for port = %d\n",
- port_id);
- return;
- }
- if (num_active_slaves > 0) {
- printf("\tActive Slaves (%d): [", num_active_slaves);
- for (i = 0; i < num_active_slaves - 1; i++)
- printf("%d ", slaves[i]);
-
- printf("%d]\n", slaves[num_active_slaves - 1]);
-
- } else {
- printf("\tActive Slaves: []\n");
- }
-
- primary_id = rte_eth_bond_primary_get(port_id);
- if (primary_id < 0) {
- fprintf(stderr, "\tFailed to get primary slave for port = %d\n",
- port_id);
- return;
- }
- printf("\tPrimary: [%d]\n", primary_id);
+ (void)rte_eth_dev_priv_dump(port_id, stdout);
}
static cmdline_parse_token_string_t cmd_showbonding_config_show =
@@ -976,11 +704,6 @@ static struct testpmd_driver_commands bonding_cmds = {
"show bonding config (port_id)\n"
" Show the bonding config for port_id.\n",
},
- {
- &cmd_show_bonding_lacp_info,
- "show bonding lacp info (port_id)\n"
- " Show the bonding lacp information for port_id.\n",
- },
{
&cmd_set_bonding_primary,
"set bonding primary (slave_id) (port_id)\n"