X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fethernet%2Finit.c;h=3921e1ec0e67eefee69eb3f521fb66652e187a1a;hb=HEAD;hp=5d10c60fd5f00a221c41984a50ca1af2e1ddabe2;hpb=a25def7807fb46bd48462be3ec5c598fc79e2a13;p=vpp.git diff --git a/src/vnet/ethernet/init.c b/src/vnet/ethernet/init.c index 5d10c60fd5f..3921e1ec0e6 100644 --- a/src/vnet/ethernet/init.c +++ b/src/vnet/ethernet/init.c @@ -62,7 +62,6 @@ add_type (ethernet_main_t * em, ethernet_type_t type, char *type_name) } /* Built-in ip4 tx feature path definition */ -/* *INDENT-OFF* */ VNET_FEATURE_ARC_INIT (ethernet_output, static) = { .arc_name = "ethernet-output", @@ -77,41 +76,46 @@ VNET_FEATURE_INIT (ethernet_tx_drop, static) = .node_name = "error-drop", .runs_before = 0, /* not before any other features */ }; -/* *INDENT-ON* */ static clib_error_t * ethernet_init (vlib_main_t * vm) { ethernet_main_t *em = ðernet_main; - clib_error_t *error; - - /* - * Set up the L2 path now, or we'll wipe out the L2 ARP - * registration set up by ethernet_arp_init. - */ - if ((error = vlib_call_init_function (vm, l2_init))) - return error; em->vlib_main = vm; em->type_info_by_name = hash_create_string (0, sizeof (uword)); em->type_info_by_type = hash_create (0, sizeof (uword)); + /* + * System default ethernet interface MTU, configure via ethernet_config in + * interface.c if desired. + */ + em->default_mtu = 9000; #define ethernet_type(n,s) add_type (em, ETHERNET_TYPE_##s, #s); #include "types.def" #undef ethernet_type - if ((error = vlib_call_init_function (vm, llc_init))) - return error; - if ((error = vlib_call_init_function (vm, ethernet_input_init))) - return error; - if ((error = vlib_call_init_function (vm, vnet_feature_init))) - return error; - + /* + * ethernet_input_init is effectively part of this function. + * Simply ensuring that it happens after we set up the hash tables + * is not sufficient. + */ + ethernet_input_init (vm, em); return 0; } -VLIB_INIT_FUNCTION (ethernet_init); +VLIB_INIT_FUNCTION (ethernet_init) = +{ + /* + * Set up the L2 path before ethernet_init, or we'll wipe out the L2 ARP + * registration set up by ethernet_arp_init. + */ + .init_order = VLIB_INITS("l2_init", + "ethernet_init", + "llc_init", + "vnet_feature_init"), +}; ethernet_main_t * ethernet_get_main (vlib_main_t * vm)