X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Finterface_cli.c;h=a8aa3056572ab0da24d7668be4c7f70509f17940;hb=942402b02096af1c966f10e3e2a3d235787b962e;hp=d37c78942c9b9219327805b27773339518440cb3;hpb=6f9ac6559ba155cc15dbc1153900f7bd3c4c9e13;p=vpp.git diff --git a/src/vnet/interface_cli.c b/src/vnet/interface_cli.c index d37c78942c9..a8aa3056572 100644 --- a/src/vnet/interface_cli.c +++ b/src/vnet/interface_cli.c @@ -47,6 +47,8 @@ #include #include #include +#include +#include static int compare_interface_names (void *a1, void *a2) @@ -262,6 +264,20 @@ show_sw_interfaces (vlib_main_t * vm, if (show_features) { vnet_interface_features_show (vm, sw_if_index); + + l2_input_config_t *l2_input = l2input_intf_config (sw_if_index); + u32 fb = l2_input->feature_bitmap; + /* intf input features are masked by bridge domain */ + if (l2_input->bridge) + fb &= l2input_bd_config (l2_input->bd_index)->feature_bitmap; + vlib_cli_output (vm, "\nl2-input:\n%U", format_l2_input_features, fb); + + l2_output_config_t *l2_output = l2output_intf_config (sw_if_index); + vlib_cli_output (vm, "\nl2-output:"); + if (l2_output->out_vtr_flag) + vlib_cli_output (vm, "%10s (%s)", "VTR", "--internal--"); + vlib_cli_output (vm, "%U", format_l2_output_features, + l2_output->feature_bitmap); return 0; } if (show_tag) @@ -285,9 +301,10 @@ show_sw_interfaces (vlib_main_t * vm, _vec_len (sorted_sis) = 0; pool_foreach (si, im->sw_interfaces, ( { - if (vnet_swif_is_api_visible - (si)) vec_add1 (sorted_sis, - si[0]);} + int visible = + vnet_swif_is_api_visible (si); + if (visible) + vec_add1 (sorted_sis, si[0]);} )); /* Sort by name. */ @@ -298,7 +315,6 @@ show_sw_interfaces (vlib_main_t * vm, { vec_foreach (si, sorted_sis) { - l2input_main_t *l2m = &l2input_main; ip4_main_t *im4 = &ip4_main; ip6_main_t *im6 = &ip6_main; ip_lookup_main_t *lm4 = &im4->lookup_main; @@ -309,7 +325,6 @@ show_sw_interfaces (vlib_main_t * vm, u32 fib_index4 = 0, fib_index6 = 0; ip4_fib_t *fib4; ip6_fib_t *fib6; - l2_input_config_t *config; if (vec_len (im4->fib_index_by_sw_if_index) > si->sw_if_index) fib_index4 = vec_elt (im4->fib_index_by_sw_if_index, @@ -339,21 +354,20 @@ show_sw_interfaces (vlib_main_t * vm, ? "up" : "dn"); } - /* Display any L2 addressing info */ - vec_validate (l2m->configs, si->sw_if_index); - config = vec_elt_at_index (l2m->configs, si->sw_if_index); - if (config->bridge) + /* Display any L2 info */ + l2_input_config_t *l2_input = l2input_intf_config (si->sw_if_index); + if (l2_input->bridge) { - u32 bd_id = l2input_main.bd_configs[config->bd_index].bd_id; + u32 bd_id = l2input_main.bd_configs[l2_input->bd_index].bd_id; vlib_cli_output (vm, " l2 bridge bd_id %d%s%d", bd_id, - config->bvi ? " bvi shg " : " shg ", - config->shg); + l2_input->bvi ? " bvi shg " : " shg ", + l2_input->shg); } - else if (config->xconnect) + else if (l2_input->xconnect) { vlib_cli_output (vm, " l2 xconnect %U", format_vnet_sw_if_index_name, - vnm, config->output_sw_if_index); + vnm, l2_input->output_sw_if_index); } /* Display any IP4 addressing info */ @@ -1186,6 +1200,9 @@ set_hw_interface_rx_mode (vnet_main_t * vnm, u32 hw_if_index, vnet_hw_interface_rx_mode old_mode; int rv; + if (mode == VNET_HW_INTERFACE_RX_MODE_DEFAULT) + mode = hw->default_rx_mode; + rv = vnet_hw_interface_get_rx_mode (vnm, hw_if_index, queue_id, &old_mode); switch (rv) { @@ -1272,12 +1289,15 @@ set_interface_rx_mode (vlib_main_t * vm, unformat_input_t * input, hw = vnet_get_hw_interface (vnm, hw_if_index); if (queue_id == ~0) - for (i = 0; i < vec_len (hw->dq_runtime_index_by_queue); i++) - { - error = set_hw_interface_rx_mode (vnm, hw_if_index, i, mode); - if (error) - break; - } + { + for (i = 0; i < vec_len (hw->dq_runtime_index_by_queue); i++) + { + error = set_hw_interface_rx_mode (vnm, hw_if_index, i, mode); + if (error) + break; + } + hw->default_rx_mode = mode; + } else error = set_hw_interface_rx_mode (vnm, hw_if_index, queue_id, mode); @@ -1333,8 +1353,10 @@ show_interface_rx_placement_fn (vlib_main_t * vm, unformat_input_t * input, vec_foreach (dq, rt->devices_and_queues) { + vnet_hw_interface_t *hi = vnet_get_hw_interface (vnm, + dq->hw_if_index); s = format (s, " %U queue %u (%U)\n", - format_vnet_sw_if_index_name, vnm, dq->hw_if_index, + format_vnet_sw_if_index_name, vnm, hi->sw_if_index, dq->queue_id, format_vnet_hw_interface_rx_mode, dq->mode); }