(helper_flags & VNET_INTERFACE_SET_FLAGS_HELPER_IS_CREATE) != 0;
mask =
- (VNET_HW_INTERFACE_FLAG_LINK_UP | VNET_HW_INTERFACE_FLAG_DUPLEX_MASK |
- VNET_HW_INTERFACE_FLAG_SPEED_MASK);
+ (VNET_HW_INTERFACE_FLAG_LINK_UP | VNET_HW_INTERFACE_FLAG_DUPLEX_MASK);
flags &= mask;
/* Call hardware interface add/del callbacks. */
/* The new class may differ from the old one.
* Functions have to be updated. */
node = vlib_get_node (vm, hw->output_node_index);
- node->function = vnet_interface_output_node_multiarch_select ();
+ node->function = vnet_interface_output_node;
node->format_trace = format_vnet_interface_output_trace;
/* *INDENT-OFF* */
foreach_vlib_main ({
r.flags = 0;
r.name = output_node_name;
- r.function = vnet_interface_output_node_multiarch_select ();
+ r.function = vnet_interface_output_node;
r.format_trace = format_vnet_interface_output_trace;
{
static char *e[] = {
"interface is down",
"interface is deleted",
+ "no buffers to segment GSO",
};
r.n_errors = ARRAY_LEN (e);
}
}
+ im->gso_interface_count = 0;
+ /* init per-thread data */
+ vec_validate_aligned (im->per_thread_data, vlib_num_workers (),
+ CLIB_CACHE_LINE_BYTES);
+
if ((error = vlib_call_init_function (vm, vnet_interface_cli_init)))
return error;
static clib_error_t *
vnet_hw_interface_change_mac_address_helper (vnet_main_t * vnm,
u32 hw_if_index,
- u8 * mac_address)
+ const u8 * mac_address)
{
clib_error_t *error = 0;
vnet_hw_interface_t *hi = vnet_get_hw_interface (vnm, hw_if_index);
clib_error_t *
vnet_hw_interface_change_mac_address (vnet_main_t * vnm, u32 hw_if_index,
- u8 * mac_address)
+ const u8 * mac_address)
{
return vnet_hw_interface_change_mac_address_helper
(vnm, hw_if_index, mac_address);