34bac11eba
Doc review is probably waranted here for editing. Submitted by: Nicole Graziano
153 lines
5.9 KiB
Groff
153 lines
5.9 KiB
Groff
.\" $FreeBSD$
|
|
.Dd January 27, 2017
|
|
.Dt IFlIBDI(9)
|
|
.Os
|
|
.Sh NAME
|
|
.Nm iflibdi
|
|
.Nd Device Independent Configuration Functions
|
|
.Sh SYNOPSIS
|
|
.In "ifdi_if.h"
|
|
.Ss "Device Independent Functions"
|
|
.Ft int
|
|
.Fn iflib_device_attach "device_t dev"
|
|
.Ft int
|
|
.Fn iflib_device_detach "device_t dev"
|
|
.Ft int
|
|
.Fn iflib_device_suspend "device_t dev"
|
|
.Ft int
|
|
.Fn iflib_device_resume "device_t dev"
|
|
.Ft int
|
|
.Fn iflib_device_register "device_t dev, void *softc, if_shared_ctx_t sctx, if_ctx_t *ctxp"
|
|
.Ft int
|
|
.Fn iflib_device_deregister "if_ctx_t ctx"
|
|
.Ft int
|
|
.Fn iflib_irq_alloc "if_ctx_t ctx, if_irq_t irq_info, int rid, driver_filter_t filter, void *filter_arg, driver_intr_t handler, void *arg, char *name"
|
|
.Ft int
|
|
.Fn iflib_irq_alloc_generic "if_ctx_t, ctx, if_irq_t irq, int rid, intr_type_t type, driver_filter_t *filter, void *filter_arg, int qid, char *name"
|
|
.Ft void
|
|
.Fn iflib_led_create "if_ctx_t ctx"
|
|
.Ft void
|
|
.Fn iflib_tx_intr_deferred "if_ctx_t ctx, int txqid"
|
|
.Ft void
|
|
.Fn iflib_rx_intr_deferred "if_ctx_t ctx, int rxqid"
|
|
.Ft void
|
|
.Fn iflib_link_intr_deferred "if_ctx_t ctx"
|
|
.Ft void
|
|
.Fn iflib_link_state_change "if_ctx_t ctx, int linkstate"
|
|
.Ft void
|
|
.Fn iflib_led_create "if_ctx_t ctx"
|
|
.Ft void
|
|
.Fn iflib_add_int_delay_sysctl "if_ctx_t ctx, const char *, const char *, if_int_delay_info_t, int, int"
|
|
.Ss "Global Variables"
|
|
.Vt extern struct if_txrx
|
|
.Sh DATA STRUCTURES
|
|
The \fIif_ctx_t\fP Structure is the device independent data structure that contains statistics and identifying information used to transmit and receive data packets. The interface is associated with an array of queues assigned sequentially. Each queu has its own transmit (iflib_txq_t) and receive (iflib_rxq_t) queue. The transmit queue is used to hold packets while the interface is in the process of sending another. The receive queue is used to receive packets that are awaiting processing.
|
|
.Pp
|
|
.Ss The if_ctx_t Structure
|
|
The fields of
|
|
.Vt "struct if_ctx_t"
|
|
are as follows:
|
|
.Bl -tag -width ".Va if_capabilities" -offset indent
|
|
.It Va if_softc
|
|
.Pq Vt "void"
|
|
A pointer to the driver's private state block.
|
|
.It Va ifc_dev
|
|
.Pq Vt "device_t"
|
|
The underlying device structure.
|
|
.It Va ifc_ip
|
|
.Pq Vt "if_t"
|
|
A link back to the interface structure
|
|
.It Va ifc_cpus
|
|
.Pq Vt "cpuset_t"
|
|
.It Va ifc_mutex
|
|
.Pq Vt "struct mtx"
|
|
Mutex lock used to maintain data integrity
|
|
.It Va ifc_mtx_name
|
|
.Pq Vt "char *"
|
|
The name of the mutex
|
|
.It Va ifc_txqs
|
|
.Pq Vt "iflib_txq_t"
|
|
Device independent transmit queue maintained internally by iflib
|
|
.It Va ifc_rxqs
|
|
.Pq Vt "iflib_rxq_t"
|
|
Device independent receive queue maintained internally by iflib
|
|
.It Va ifc_qsets
|
|
.Pq Vt "iflib_qset_t"
|
|
Output queue that contains a single transmit (ifc_txq_t) and receive (ifc_rxq_t) queue
|
|
.It Va ifc_if_flags
|
|
.Pq Vt "uint32_t"
|
|
Flags describing the operational parameter of the interface
|
|
.It Va ifc_in_detach
|
|
.Pq Vt "int"
|
|
.It Va ifc_link_state
|
|
.Pq Vt "int"
|
|
Describes the current link state of the Ethernet interface. It's possible values are either active or inactive.
|
|
.It Va ifc_link_irq
|
|
.Pq Vt "int"
|
|
.It Va ifc_vlan_attach_event
|
|
.Pq Vt "eventhandler_tag"
|
|
.It Va ifc_vlan_detach_event
|
|
.Pq Vt "eventhandler_tag"
|
|
.It Va ifc_pause_frames
|
|
.Pq Vt "int"
|
|
.It Va ifc_watchdog_events
|
|
.Pq Vt "int"
|
|
.It Va ifc_mac
|
|
.Pq Vt "uint8_t"
|
|
.It Va ifc_msix_mem
|
|
.Pq Vt "struct resource *"
|
|
.It Va ifc_legacy_irq
|
|
.Pq Vt "struct if_irq"
|
|
.It Va ifc_admin_task
|
|
.Pq Vt "struct grouptask"
|
|
Taskqueue task scheduled for link state change events of the interface
|
|
.It Va ifc_filter_info
|
|
.Pq Vt "struct iflib_filter_info"
|
|
Statistics and information relating to the interface device filter
|
|
.It Va ifc_media
|
|
.Pq Vt "struct ifmedia"
|
|
.It Va ifc_txrx
|
|
.Pq Vt "struct if_txrx"
|
|
.El
|
|
.Sh FUNCTIONS
|
|
The above named functions are found exclusively in iflib. They are independent of the underlying hardware type or configuration.
|
|
.Ss Device Independent Functions
|
|
.Bl -ohang -offset indent
|
|
.It Fn iflib_device_attach
|
|
Function initiates a device registration with the iflib framework. It calls the iflib_register function, which is responsible for allocating and initializing the \fIif_ctx_t\fP structure.
|
|
.It Fn iflib_device_detach
|
|
Shutdown and detach the device. Unregister vlan events, drain any dependent tasks, and release irq, pci, and msix memory.
|
|
.It Fn iflib_device_suspend
|
|
Suspend a device by calling the device dependent suspend function and bus_generic_suspend.
|
|
.It Fn iflib_device_resume
|
|
Resume a device by calling the device dependent resume function, the iflib_init_locked function, and bus_generic_resume.
|
|
.It Fn iflib_device_register
|
|
Register a device with the iflib framework. Allocate and initialize the \fIif_ctx_t\fP structure. Setup and initialize the MSI or MSI/X interrupt queues if necessary. Allocate memory for queues and qset structure setup.
|
|
.It Fn iflib_device_irq_alloc
|
|
Allocate an interrupt resource for a given rid value with an associated filter and handler function.
|
|
.It Fn iflib_device_irq_alloc_generic
|
|
Performs the same function as iflib_device_irq_alloc along with the additional functionality of adding a taskgroup. The data fields and callback function are determined by the type of interrupt, such as IFLIB_INTR_TX, IFLIB_INTR_RX, and IFLIB_INTR_ADMIN.
|
|
.It Fn iflib_led_create
|
|
Calls led_create to initialize the ctx->ifc_led_dev field
|
|
.It Fn iflib_tx_intr_deferred
|
|
Calls GROUPTASK_ENQUEUE to enqueue the transfer queues ift_task.
|
|
.It Fn iflib_rx_intr_deferred
|
|
Calls GROUPTASK_ENQUEUE to enqueue the receive queues ifr_task.
|
|
.It Fn iflib_link_intr_deferred
|
|
Calls GROUPTASK_ENQUEUE to enqueue the link task
|
|
.It Fn iflib_link_state_change
|
|
Change the interface link status to either LINK_STATE_UP or LINK_STATE_DOWN as specified by the second argument to the function.
|
|
\fBInterface Link States\fP
|
|
The following link states are currently defined:
|
|
|
|
LINK_STATE_UP The link is up.
|
|
LINK_STATE_DOWN The link is down.
|
|
.It Fn iflib_add_int_delay_sysctl
|
|
Modifies settings to user defined values for a given set of variables.
|
|
.El
|
|
.Sh "SEE ALSO"
|
|
iflibtxrx(9), iflibdd(9)
|
|
.Sh AUTHORS
|
|
This manual page was written by
|
|
.An Nicole Graziano
|