X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fdev%2Fapi.c;h=260bc7b2e2241d2cd1052604244d6deffabede78;hb=69768d99eed0f44f6955370cb1ad83b8b73e5368;hp=73d315db519129a3640cd46ba3f8e54aa16a2800;hpb=f3be34e4433bb86509044290fa3cced543697a31;p=vpp.git diff --git a/src/vnet/dev/api.c b/src/vnet/dev/api.c index 73d315db519..260bc7b2e22 100644 --- a/src/vnet/dev/api.c +++ b/src/vnet/dev/api.c @@ -90,6 +90,17 @@ vnet_dev_api_attach (vlib_main_t *vm, vnet_dev_api_attach_args_t *args) } dev->description = dev_desc; + for (vnet_dev_arg_t *a = driver->registration->args; + a->type != VNET_DEV_ARG_END; a++) + vec_add1 (dev->args, *a); + + if (args->args) + { + if ((rv = vnet_dev_arg_parse (vm, dev, dev->args, args->args)) != + VNET_DEV_OK) + goto done; + } + if ((args->flags.e & VNET_DEV_F_NO_STATS) == 0) dev->poll_stats = 1; @@ -144,6 +155,7 @@ vnet_dev_api_create_port_if (vlib_main_t *vm, vnet_dev_port_t *port = 0; u16 n_threads = vlib_get_n_threads (); int default_is_intr_mode; + vnet_dev_rv_t rv; log_debug (dev, "create_port_if: device '%s' port %u intf_name '%s' num_rx_q %u " @@ -169,6 +181,13 @@ vnet_dev_api_create_port_if (vlib_main_t *vm, if (port->interface_created) return VNET_DEV_ERR_ALREADY_EXISTS; + if (args->args) + { + rv = vnet_dev_arg_parse (vm, dev, port->args, args->args); + if (rv != VNET_DEV_OK) + return rv; + } + default_is_intr_mode = (args->flags.e & VNET_DEV_PORT_F_INTERRUPT_MODE) != 0; if (default_is_intr_mode && port->attr.caps.interrupt_mode == 0) {