FreeBSD kernel amd64 PCI device code
pci_iov_schema.c File Reference
#include <sys/cdefs.h>
#include <sys/param.h>
#include <sys/conf.h>
#include <sys/ctype.h>
#include <sys/kernel.h>
#include <sys/systm.h>
#include <sys/iov.h>
#include <sys/malloc.h>
#include <sys/module.h>
#include <sys/queue.h>
#include <machine/stdarg.h>
#include <sys/dnv.h>
#include <sys/nv.h>
#include <sys/iov_schema.h>
#include <net/ethernet.h>
#include <dev/pci/schema_private.h>
Include dependency graph for pci_iov_schema.c:

Go to the source code of this file.

Data Structures

struct  config_type_validator
 

Typedefs

typedef int() validate_func(const struct config_type_validator *, const nvlist_t *, const char *name)
 
typedef int() default_validate_t(const struct config_type_validator *, const nvlist_t *)
 

Functions

 __FBSDID ("$FreeBSD$")
 
static const struct config_type_validatorpci_iov_schema_find_validator (const char *type)
 
static void pci_iov_schema_add_type (nvlist_t *entry, const char *type)
 
static void pci_iov_schema_add_required (nvlist_t *entry, uint32_t flags)
 
void pci_iov_schema_add_bool (nvlist_t *schema, const char *name, uint32_t flags, int defaultVal)
 
void pci_iov_schema_add_string (nvlist_t *schema, const char *name, uint32_t flags, const char *defaultVal)
 
static void pci_iov_schema_int (nvlist_t *schema, const char *name, const char *type, uint32_t flags, uint64_t defaultVal)
 
void pci_iov_schema_add_uint8 (nvlist_t *schema, const char *name, uint32_t flags, uint8_t defaultVal)
 
void pci_iov_schema_add_uint16 (nvlist_t *schema, const char *name, uint32_t flags, uint16_t defaultVal)
 
void pci_iov_schema_add_uint32 (nvlist_t *schema, const char *name, uint32_t flags, uint32_t defaultVal)
 
void pci_iov_schema_add_uint64 (nvlist_t *schema, const char *name, uint32_t flags, uint64_t defaultVal)
 
void pci_iov_schema_add_unicast_mac (nvlist_t *schema, const char *name, uint32_t flags, const uint8_t *defaultVal)
 
static int pci_iov_schema_validate_bool (const struct config_type_validator *validator, const nvlist_t *config, const char *name)
 
static int pci_iov_schema_validate_string (const struct config_type_validator *validator, const nvlist_t *config, const char *name)
 
static int pci_iov_schema_validate_uint (const struct config_type_validator *validator, const nvlist_t *config, const char *name)
 
static int pci_iov_schema_validate_unicast_mac (const struct config_type_validator *validator, const nvlist_t *config, const char *name)
 
static void pci_iov_config_add_default (const nvlist_t *param_schema, const char *name, nvlist_t *config)
 
static int pci_iov_validate_bool_default (const struct config_type_validator *validator, const nvlist_t *param)
 
static int pci_iov_validate_string_default (const struct config_type_validator *validator, const nvlist_t *param)
 
static int pci_iov_validate_uint_default (const struct config_type_validator *validator, const nvlist_t *param)
 
static int pci_iov_validate_unicast_mac_default (const struct config_type_validator *validator, const nvlist_t *param)
 
static int pci_iov_validate_param_schema (const nvlist_t *schema)
 
static int pci_iov_validate_subsystem_schema (const nvlist_t *dev_schema, const char *name)
 
static int pci_iov_validate_param_collisions (const nvlist_t *dev_schema)
 
static int pci_iov_validate_schema_subsystems (const nvlist_t *dev_schema)
 
static int pci_iov_validate_device_schema (const nvlist_t *schema, const char *name)
 
static int pci_iov_validate_schema_devices (const nvlist_t *dev_schema)
 
int pci_iov_validate_schema (const nvlist_t *schema)
 
static int pci_iov_schema_validate_required (const nvlist_t *schema, nvlist_t *config)
 
static int pci_iov_schema_validate_param (const nvlist_t *schema_param, const char *name, const nvlist_t *config)
 
static int pci_iov_schema_validate_types (const nvlist_t *schema, const nvlist_t *config)
 
static int pci_iov_schema_validate_device (const nvlist_t *schema, nvlist_t *config, const char *schema_device, const char *config_device)
 
static int pci_iov_schema_validate_vfs (const nvlist_t *schema, nvlist_t *config, uint16_t num_vfs)
 
static int pci_iov_schema_validate_device_subsystems (const nvlist_t *config)
 
static int pci_iov_schema_validate_dev_name (const char *name, uint16_t num_vfs)
 
static int pci_iov_schema_validate_device_names (const nvlist_t *config, uint16_t num_vfs)
 
int pci_iov_schema_validate_config (const nvlist_t *schema, nvlist_t *config)
 
uint16_t pci_iov_config_get_num_vfs (const nvlist_t *config)
 
nvlist_t * pci_iov_schema_alloc_node (void)
 

Variables

static validate_func pci_iov_schema_validate_bool
 
static validate_func pci_iov_schema_validate_string
 
static validate_func pci_iov_schema_validate_uint
 
static validate_func pci_iov_schema_validate_unicast_mac
 
static default_validate_t pci_iov_validate_bool_default
 
static default_validate_t pci_iov_validate_string_default
 
static default_validate_t pci_iov_validate_uint_default
 
static default_validate_t pci_iov_validate_unicast_mac_default
 
static struct config_type_validator pci_iov_schema_validators []
 

Typedef Documentation

◆ default_validate_t

typedef int() default_validate_t(const struct config_type_validator *, const nvlist_t *)

Definition at line 53 of file pci_iov_schema.c.

◆ validate_func

typedef int() validate_func(const struct config_type_validator *, const nvlist_t *, const char *name)

Definition at line 51 of file pci_iov_schema.c.

Function Documentation

◆ __FBSDID()

__FBSDID ( "$FreeBSD$"  )

◆ pci_iov_config_add_default()

static void pci_iov_config_add_default ( const nvlist_t *  param_schema,
const char *  name,
nvlist_t *  config 
)
static

Definition at line 327 of file pci_iov_schema.c.

References config, and name.

Referenced by pci_iov_schema_validate_required().

Here is the caller graph for this function:

◆ pci_iov_config_get_num_vfs()

uint16_t pci_iov_config_get_num_vfs ( const nvlist_t *  config)

Definition at line 854 of file pci_iov_schema.c.

References config, and pf.

Referenced by pci_iov_config(), and pci_iov_schema_validate_config().

Here is the caller graph for this function:

◆ pci_iov_schema_add_bool()

void pci_iov_schema_add_bool ( nvlist_t *  schema,
const char *  name,
uint32_t  flags,
int  defaultVal 
)

Definition at line 156 of file pci_iov_schema.c.

References name, pci_iov_schema_add_required(), and pci_iov_schema_add_type().

Referenced by pci_iov_get_vf_subsystem_schema().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pci_iov_schema_add_required()

static void pci_iov_schema_add_required ( nvlist_t *  entry,
uint32_t  flags 
)
static

Definition at line 142 of file pci_iov_schema.c.

Referenced by pci_iov_schema_add_bool(), pci_iov_schema_add_string(), pci_iov_schema_add_unicast_mac(), and pci_iov_schema_int().

Here is the caller graph for this function:

◆ pci_iov_schema_add_string()

void pci_iov_schema_add_string ( nvlist_t *  schema,
const char *  name,
uint32_t  flags,
const char *  defaultVal 
)

Definition at line 176 of file pci_iov_schema.c.

References name, pci_iov_schema_add_required(), and pci_iov_schema_add_type().

Referenced by pci_iov_get_pf_subsystem_schema().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pci_iov_schema_add_type()

static void pci_iov_schema_add_type ( nvlist_t *  entry,
const char *  type 
)
static

Definition at line 131 of file pci_iov_schema.c.

References pci_iov_schema_find_validator(), and type.

Referenced by pci_iov_schema_add_bool(), pci_iov_schema_add_string(), pci_iov_schema_add_unicast_mac(), and pci_iov_schema_int().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pci_iov_schema_add_uint16()

void pci_iov_schema_add_uint16 ( nvlist_t *  schema,
const char *  name,
uint32_t  flags,
uint16_t  defaultVal 
)

Definition at line 224 of file pci_iov_schema.c.

References name, and pci_iov_schema_int().

Referenced by pci_iov_get_pf_subsystem_schema().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pci_iov_schema_add_uint32()

void pci_iov_schema_add_uint32 ( nvlist_t *  schema,
const char *  name,
uint32_t  flags,
uint32_t  defaultVal 
)

Definition at line 232 of file pci_iov_schema.c.

References name, and pci_iov_schema_int().

Here is the call graph for this function:

◆ pci_iov_schema_add_uint64()

void pci_iov_schema_add_uint64 ( nvlist_t *  schema,
const char *  name,
uint32_t  flags,
uint64_t  defaultVal 
)

Definition at line 240 of file pci_iov_schema.c.

References name, and pci_iov_schema_int().

Here is the call graph for this function:

◆ pci_iov_schema_add_uint8()

void pci_iov_schema_add_uint8 ( nvlist_t *  schema,
const char *  name,
uint32_t  flags,
uint8_t  defaultVal 
)

Definition at line 216 of file pci_iov_schema.c.

References name, and pci_iov_schema_int().

Here is the call graph for this function:

◆ pci_iov_schema_add_unicast_mac()

void pci_iov_schema_add_unicast_mac ( nvlist_t *  schema,
const char *  name,
uint32_t  flags,
const uint8_t *  defaultVal 
)

Definition at line 248 of file pci_iov_schema.c.

References name, pci_iov_schema_add_required(), and pci_iov_schema_add_type().

Here is the call graph for this function:

◆ pci_iov_schema_alloc_node()

nvlist_t * pci_iov_schema_alloc_node ( void  )

◆ pci_iov_schema_find_validator()

static const struct config_type_validator * pci_iov_schema_find_validator ( const char *  type)
static

Definition at line 116 of file pci_iov_schema.c.

References pci_iov_schema_validators, type, and config_type_validator::type_name.

Referenced by pci_iov_schema_add_type(), pci_iov_schema_validate_param(), and pci_iov_validate_param_schema().

Here is the caller graph for this function:

◆ pci_iov_schema_int()

static void pci_iov_schema_int ( nvlist_t *  schema,
const char *  name,
const char *  type,
uint32_t  flags,
uint64_t  defaultVal 
)
static

Definition at line 196 of file pci_iov_schema.c.

References name, pci_iov_schema_add_required(), pci_iov_schema_add_type(), and type.

Referenced by pci_iov_schema_add_uint16(), pci_iov_schema_add_uint32(), pci_iov_schema_add_uint64(), and pci_iov_schema_add_uint8().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pci_iov_schema_validate_bool()

static int pci_iov_schema_validate_bool ( const struct config_type_validator validator,
const nvlist_t *  config,
const char *  name 
)
static

Definition at line 268 of file pci_iov_schema.c.

References config, and name.

◆ pci_iov_schema_validate_config()

int pci_iov_schema_validate_config ( const nvlist_t *  schema,
nvlist_t *  config 
)

Definition at line 830 of file pci_iov_schema.c.

References config, num_vfs, pci_iov_config_get_num_vfs(), pci_iov_schema_validate_device(), pci_iov_schema_validate_device_names(), and pci_iov_schema_validate_vfs().

Referenced by pci_iov_parse_config().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pci_iov_schema_validate_dev_name()

static int pci_iov_schema_validate_dev_name ( const char *  name,
uint16_t  num_vfs 
)
static

Definition at line 755 of file pci_iov_schema.c.

References name, and num_vfs.

Referenced by pci_iov_schema_validate_device_names().

Here is the caller graph for this function:

◆ pci_iov_schema_validate_device()

static int pci_iov_schema_validate_device ( const nvlist_t *  schema,
nvlist_t *  config,
const char *  schema_device,
const char *  config_device 
)
static

Definition at line 649 of file pci_iov_schema.c.

References config, pci_iov_schema_validate_required(), and pci_iov_schema_validate_types().

Referenced by pci_iov_schema_validate_config(), and pci_iov_schema_validate_vfs().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pci_iov_schema_validate_device_names()

static int pci_iov_schema_validate_device_names ( const nvlist_t *  config,
uint16_t  num_vfs 
)
static

Definition at line 802 of file pci_iov_schema.c.

References config, name, num_vfs, pci_iov_schema_validate_dev_name(), pci_iov_schema_validate_device_subsystems(), and type.

Referenced by pci_iov_schema_validate_config().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pci_iov_schema_validate_device_subsystems()

static int pci_iov_schema_validate_device_subsystems ( const nvlist_t *  config)
static

Definition at line 731 of file pci_iov_schema.c.

References config, name, and type.

Referenced by pci_iov_schema_validate_device_names().

Here is the caller graph for this function:

◆ pci_iov_schema_validate_param()

static int pci_iov_schema_validate_param ( const nvlist_t *  schema_param,
const char *  name,
const nvlist_t *  config 
)
static

Definition at line 604 of file pci_iov_schema.c.

References config, name, pci_iov_schema_find_validator(), type, and config_type_validator::validate.

Referenced by pci_iov_schema_validate_types().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pci_iov_schema_validate_required()

static int pci_iov_schema_validate_required ( const nvlist_t *  schema,
nvlist_t *  config 
)
static

Definition at line 579 of file pci_iov_schema.c.

References config, name, pci_iov_config_add_default(), and type.

Referenced by pci_iov_schema_validate_device().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pci_iov_schema_validate_string()

static int pci_iov_schema_validate_string ( const struct config_type_validator validator,
const nvlist_t *  config,
const char *  name 
)
static

Definition at line 278 of file pci_iov_schema.c.

References config, and name.

◆ pci_iov_schema_validate_types()

static int pci_iov_schema_validate_types ( const nvlist_t *  schema,
const nvlist_t *  config 
)
static

Definition at line 624 of file pci_iov_schema.c.

References config, name, pci_iov_schema_validate_param(), and type.

Referenced by pci_iov_schema_validate_device().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pci_iov_schema_validate_uint()

static int pci_iov_schema_validate_uint ( const struct config_type_validator validator,
const nvlist_t *  config,
const char *  name 
)
static

Definition at line 288 of file pci_iov_schema.c.

References config, config_type_validator::limit, name, and value.

◆ pci_iov_schema_validate_unicast_mac()

static int pci_iov_schema_validate_unicast_mac ( const struct config_type_validator validator,
const nvlist_t *  config,
const char *  name 
)
static

Definition at line 305 of file pci_iov_schema.c.

References config, and name.

◆ pci_iov_schema_validate_vfs()

static int pci_iov_schema_validate_vfs ( const nvlist_t *  schema,
nvlist_t *  config,
uint16_t  num_vfs 
)
static

Definition at line 709 of file pci_iov_schema.c.

References config, num_vfs, and pci_iov_schema_validate_device().

Referenced by pci_iov_schema_validate_config().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pci_iov_validate_bool_default()

static int pci_iov_validate_bool_default ( const struct config_type_validator validator,
const nvlist_t *  param 
)
static

Definition at line 353 of file pci_iov_schema.c.

◆ pci_iov_validate_device_schema()

static int pci_iov_validate_device_schema ( const nvlist_t *  schema,
const char *  name 
)
static

Definition at line 514 of file pci_iov_schema.c.

References name, pci_iov_validate_param_collisions(), pci_iov_validate_schema_subsystems(), and pci_iov_validate_subsystem_schema().

Referenced by pci_iov_validate_schema().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pci_iov_validate_param_collisions()

static int pci_iov_validate_param_collisions ( const nvlist_t *  dev_schema)
static

Definition at line 473 of file pci_iov_schema.c.

References name, and type.

Referenced by pci_iov_validate_device_schema().

Here is the caller graph for this function:

◆ pci_iov_validate_param_schema()

static int pci_iov_validate_param_schema ( const nvlist_t *  schema)
static

Definition at line 407 of file pci_iov_schema.c.

References config_type_validator::default_validate, pci_iov_schema_find_validator(), and type.

Referenced by pci_iov_validate_subsystem_schema().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pci_iov_validate_schema()

int pci_iov_validate_schema ( const nvlist_t *  schema)

Definition at line 558 of file pci_iov_schema.c.

References pci_iov_validate_device_schema(), and pci_iov_validate_schema_devices().

Referenced by pci_iov_attach_method().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pci_iov_validate_schema_devices()

static int pci_iov_validate_schema_devices ( const nvlist_t *  dev_schema)
static

Definition at line 541 of file pci_iov_schema.c.

References name, and type.

Referenced by pci_iov_validate_schema().

Here is the caller graph for this function:

◆ pci_iov_validate_schema_subsystems()

static int pci_iov_validate_schema_subsystems ( const nvlist_t *  dev_schema)
static

Definition at line 497 of file pci_iov_schema.c.

References name, and type.

Referenced by pci_iov_validate_device_schema().

Here is the caller graph for this function:

◆ pci_iov_validate_string_default()

static int pci_iov_validate_string_default ( const struct config_type_validator validator,
const nvlist_t *  param 
)
static

Definition at line 363 of file pci_iov_schema.c.

◆ pci_iov_validate_subsystem_schema()

static int pci_iov_validate_subsystem_schema ( const nvlist_t *  dev_schema,
const char *  name 
)
static

Definition at line 443 of file pci_iov_schema.c.

References name, pci_iov_validate_param_schema(), and type.

Referenced by pci_iov_validate_device_schema().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pci_iov_validate_uint_default()

static int pci_iov_validate_uint_default ( const struct config_type_validator validator,
const nvlist_t *  param 
)
static

Definition at line 373 of file pci_iov_schema.c.

References config_type_validator::limit.

◆ pci_iov_validate_unicast_mac_default()

static int pci_iov_validate_unicast_mac_default ( const struct config_type_validator validator,
const nvlist_t *  param 
)
static

Definition at line 388 of file pci_iov_schema.c.

Variable Documentation

◆ pci_iov_schema_validate_bool

validate_func pci_iov_schema_validate_bool
static

Definition at line 56 of file pci_iov_schema.c.

◆ pci_iov_schema_validate_string

validate_func pci_iov_schema_validate_string
static

Definition at line 57 of file pci_iov_schema.c.

◆ pci_iov_schema_validate_uint

validate_func pci_iov_schema_validate_uint
static

Definition at line 58 of file pci_iov_schema.c.

◆ pci_iov_schema_validate_unicast_mac

validate_func pci_iov_schema_validate_unicast_mac
static

Definition at line 59 of file pci_iov_schema.c.

◆ pci_iov_schema_validators

struct config_type_validator pci_iov_schema_validators[]
static

Definition at line 73 of file pci_iov_schema.c.

Referenced by pci_iov_schema_find_validator().

◆ pci_iov_validate_bool_default

default_validate_t pci_iov_validate_bool_default
static

Definition at line 61 of file pci_iov_schema.c.

◆ pci_iov_validate_string_default

default_validate_t pci_iov_validate_string_default
static

Definition at line 62 of file pci_iov_schema.c.

◆ pci_iov_validate_uint_default

default_validate_t pci_iov_validate_uint_default
static

Definition at line 63 of file pci_iov_schema.c.

◆ pci_iov_validate_unicast_mac_default

default_validate_t pci_iov_validate_unicast_mac_default
static

Definition at line 64 of file pci_iov_schema.c.