Lines Matching +full:static +full:- +full:config
1 /*-
2 * Copyright (c) 2014-2015 Sandvine Inc.
52 static validate_func pci_iov_schema_validate_bool;
53 static validate_func pci_iov_schema_validate_string;
54 static validate_func pci_iov_schema_validate_uint;
55 static validate_func pci_iov_schema_validate_unicast_mac;
56 static validate_func pci_iov_schema_validate_vlan;
58 static default_validate_t pci_iov_validate_bool_default;
59 static default_validate_t pci_iov_validate_string_default;
60 static default_validate_t pci_iov_validate_uint_default;
61 static default_validate_t pci_iov_validate_unicast_mac_default;
62 static default_validate_t pci_iov_validate_vlan_default;
71 static struct config_type_validator pci_iov_schema_validators[] = {
107 .type_name = "unicast-mac",
118 static const struct config_type_validator *
126 if (strcmp(type, validator->type_name) == 0) in pci_iov_schema_find_validator()
133 static void
144 static void
198 static void
262 pci_iov_schema_add_type(entry, "unicast-mac"); in pci_iov_schema_add_unicast_mac()
290 static int
292 const nvlist_t *config, const char *name) in pci_iov_schema_validate_bool() argument
295 if (!nvlist_exists_bool(config, name)) in pci_iov_schema_validate_bool()
300 static int
302 const nvlist_t *config, const char *name) in pci_iov_schema_validate_string() argument
305 if (!nvlist_exists_string(config, name)) in pci_iov_schema_validate_string()
310 static int
312 const nvlist_t *config, const char *name) in pci_iov_schema_validate_uint() argument
316 if (!nvlist_exists_number(config, name)) in pci_iov_schema_validate_uint()
319 value = nvlist_get_number(config, name); in pci_iov_schema_validate_uint()
321 if (value > validator->limit) in pci_iov_schema_validate_uint()
327 static int
330 const nvlist_t *config, const char *name) in pci_iov_schema_validate_unicast_mac() argument
335 if (!nvlist_exists_binary(config, name)) in pci_iov_schema_validate_unicast_mac()
338 mac = nvlist_get_binary(config, name, &size); in pci_iov_schema_validate_unicast_mac()
349 static int
352 const nvlist_t *config, const char *name) in pci_iov_schema_validate_vlan() argument
356 if (!nvlist_exists_number(config, name)) in pci_iov_schema_validate_vlan()
359 vlan = nvlist_get_number(config, name); in pci_iov_schema_validate_vlan()
367 static void
369 nvlist_t *config) in pci_iov_config_add_default() argument
376 nvlist_add_binary(config, name, binary, len); in pci_iov_config_add_default()
378 nvlist_add_bool(config, name, in pci_iov_config_add_default()
381 nvlist_add_number(config, name, in pci_iov_config_add_default()
384 nvlist_add_nvlist(config, name, in pci_iov_config_add_default()
387 nvlist_add_string(config, name, in pci_iov_config_add_default()
393 static int
403 static int
413 static int
423 if (defaultVal > validator->limit) in pci_iov_validate_uint_default()
428 static int
447 static int
463 static int
481 error = validator->default_validate(validator, schema); in pci_iov_validate_param_schema()
499 static int
529 static int
553 static int
570 static int
596 /* Validate that we only have PF and VF devices beneath the top-level schema. */
597 static int
632 * config. If any parameter with a default value is not specified in the
633 * config, add it to config.
635 static int
636 pci_iov_schema_validate_required(const nvlist_t *schema, nvlist_t *config) in pci_iov_schema_validate_required() argument
648 if (!nvlist_exists(config, name)) in pci_iov_schema_validate_required()
653 !nvlist_exists(config, name)) in pci_iov_schema_validate_required()
654 pci_iov_config_add_default(param_schema, name, config); in pci_iov_schema_validate_required()
657 return (nvlist_error(config)); in pci_iov_schema_validate_required()
660 static int
662 const nvlist_t *config) in pci_iov_schema_validate_param() argument
673 return (validator->validate(validator, config, name)); in pci_iov_schema_validate_param()
677 * Validate that all parameters in config are defined in the schema. Also
680 static int
681 pci_iov_schema_validate_types(const nvlist_t *schema, const nvlist_t *config) in pci_iov_schema_validate_types() argument
689 while ((name = nvlist_next(config, &type, &cookie)) != NULL) { in pci_iov_schema_validate_types()
696 config); in pci_iov_schema_validate_types()
705 static int
706 pci_iov_schema_validate_device(const nvlist_t *schema, nvlist_t *config, in pci_iov_schema_validate_device() argument
721 device_config = dnvlist_take_nvlist(config, config_device, NULL); in pci_iov_schema_validate_device()
760 nvlist_move_nvlist(config, config_device, device_config); in pci_iov_schema_validate_device()
765 static int
766 pci_iov_schema_validate_vfs(const nvlist_t *schema, nvlist_t *config, in pci_iov_schema_validate_vfs() argument
775 error = pci_iov_schema_validate_device(schema, config, in pci_iov_schema_validate_vfs()
787 static int
788 pci_iov_schema_validate_device_subsystems(const nvlist_t *config) in pci_iov_schema_validate_device_subsystems() argument
795 while ((name = nvlist_next(config, &type, &cookie)) != NULL) { in pci_iov_schema_validate_device_subsystems()
809 * or "VF-n", where n is an integer in the range [0, num_vfs).
811 static int
821 /* Ensure that we start with "VF-" */ in pci_iov_schema_validate_dev_name()
827 /* Filter out name == "VF-" (no number) */ in pci_iov_schema_validate_dev_name()
831 /* Disallow leading whitespace or +/- */ in pci_iov_schema_validate_dev_name()
839 /* Disallow leading zeros on VF-[1-9][0-9]* */ in pci_iov_schema_validate_dev_name()
843 /* Disallow leading zeros on VF-0 */ in pci_iov_schema_validate_dev_name()
854 * Validate that there are no device nodes in config other than the ones for
855 * the PF and the VFs. This includes validating that all config nodes of the
856 * form VF-n specify a VF number that is < num_vfs.
858 static int
859 pci_iov_schema_validate_device_names(const nvlist_t *config, uint16_t num_vfs) in pci_iov_schema_validate_device_names() argument
867 while ((name = nvlist_next(config, &type, &cookie)) != NULL) { in pci_iov_schema_validate_device_names()
877 device = nvlist_get_nvlist(config, name); in pci_iov_schema_validate_device_names()
887 pci_iov_schema_validate_config(const nvlist_t *schema, nvlist_t *config) in pci_iov_schema_validate_config() argument
892 error = pci_iov_schema_validate_device(schema, config, PF_CONFIG_NAME, in pci_iov_schema_validate_config()
897 num_vfs = pci_iov_config_get_num_vfs(config); in pci_iov_schema_validate_config()
899 error = pci_iov_schema_validate_vfs(schema, config, num_vfs); in pci_iov_schema_validate_config()
903 return (pci_iov_schema_validate_device_names(config, num_vfs)); in pci_iov_schema_validate_config()
907 * Return value of the num_vfs parameter. config must have already been
911 pci_iov_config_get_num_vfs(const nvlist_t *config) in pci_iov_config_get_num_vfs() argument
915 pf = nvlist_get_nvlist(config, PF_CONFIG_NAME); in pci_iov_config_get_num_vfs()