X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Finterface_cli.c;h=e5efb1faef7fe70fdfaa7bacc3ed2ce3fa6b0a1f;hb=ad8015be47a8d7d4c1f94b51ad9c70e37cc29cbf;hp=a6680c5b5f25455f9b3b318a57813b9cb4c9ca8d;hpb=bd8a611c7e4558f18e3280ace9e48ecae5673800;p=vpp.git diff --git a/src/vnet/interface_cli.c b/src/vnet/interface_cli.c index a6680c5b5f2..e5efb1faef7 100644 --- a/src/vnet/interface_cli.c +++ b/src/vnet/interface_cli.c @@ -1198,6 +1198,7 @@ set_interface_mac_address (vlib_main_t * vm, unformat_input_t * input, vlib_cli_command_t * cmd) { vnet_main_t *vnm = vnet_get_main (); + vnet_sw_interface_t *si = NULL; clib_error_t *error = 0; u32 sw_if_index = ~0; u64 mac = 0; @@ -1214,7 +1215,8 @@ set_interface_mac_address (vlib_main_t * vm, unformat_input_t * input, format_unformat_error, input); goto done; } - error = vnet_hw_interface_change_mac_address (vnm, sw_if_index, mac); + si = vnet_get_sw_interface (vnm, sw_if_index); + error = vnet_hw_interface_change_mac_address (vnm, si->hw_if_index, mac); done: return error; } @@ -1345,6 +1347,33 @@ set_hw_interface_rx_mode (vnet_main_t * vnm, u32 hw_if_index, return 0; } +clib_error_t * +set_hw_interface_change_rx_mode (vnet_main_t * vnm, u32 hw_if_index, + u8 queue_id_valid, u32 queue_id, + vnet_hw_interface_rx_mode mode) +{ + clib_error_t *error = 0; + vnet_hw_interface_t *hw; + int i; + + hw = vnet_get_hw_interface (vnm, hw_if_index); + + if (queue_id_valid == 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; + } + hw->default_rx_mode = mode; + } + else + error = set_hw_interface_rx_mode (vnm, hw_if_index, queue_id, mode); + + return (error); +} + static clib_error_t * set_interface_rx_mode (vlib_main_t * vm, unformat_input_t * input, vlib_cli_command_t * cmd) @@ -1352,12 +1381,10 @@ set_interface_rx_mode (vlib_main_t * vm, unformat_input_t * input, clib_error_t *error = 0; unformat_input_t _line_input, *line_input = &_line_input; vnet_main_t *vnm = vnet_get_main (); - vnet_hw_interface_t *hw; u32 hw_if_index = (u32) ~ 0; u32 queue_id = (u32) ~ 0; vnet_hw_interface_rx_mode mode = VNET_HW_INTERFACE_RX_MODE_UNKNOWN; - int i; - u8 input_queue_id = 0; + u8 queue_id_valid = 0; if (!unformat_user (input, unformat_line_input, line_input)) return 0; @@ -1368,7 +1395,7 @@ set_interface_rx_mode (vlib_main_t * vm, unformat_input_t * input, (line_input, "%U", unformat_vnet_hw_interface, vnm, &hw_if_index)) ; else if (unformat (line_input, "queue %d", &queue_id)) - input_queue_id = 1; + queue_id_valid = 1; else if (unformat (line_input, "polling")) mode = VNET_HW_INTERFACE_RX_MODE_POLLING; else if (unformat (line_input, "interrupt")) @@ -1392,20 +1419,8 @@ set_interface_rx_mode (vlib_main_t * vm, unformat_input_t * input, if (mode == VNET_HW_INTERFACE_RX_MODE_UNKNOWN) return clib_error_return (0, "please specify valid rx-mode"); - hw = vnet_get_hw_interface (vnm, hw_if_index); - - if (input_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; - } - hw->default_rx_mode = mode; - } - else - error = set_hw_interface_rx_mode (vnm, hw_if_index, queue_id, mode); + error = set_hw_interface_change_rx_mode (vnm, hw_if_index, queue_id_valid, + queue_id, mode); return (error); }