summaryrefslogtreecommitdiff
path: root/static/freebsd/man9/iflibdi.9
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 16:08:12 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 16:08:12 -0400
commitb9cde963555b6519c5dbd34a39dee3418f593437 (patch)
tree453accad3c3286e3416d4160de4a87223aff684c /static/freebsd/man9/iflibdi.9
parent5cb84ec742fd33f78c8022863fadaa8d0d93e176 (diff)
feat: Added FreeBSD man pages
Diffstat (limited to 'static/freebsd/man9/iflibdi.9')
-rw-r--r--static/freebsd/man9/iflibdi.9236
1 files changed, 236 insertions, 0 deletions
diff --git a/static/freebsd/man9/iflibdi.9 b/static/freebsd/man9/iflibdi.9
new file mode 100644
index 00000000..57fa02c6
--- /dev/null
+++ b/static/freebsd/man9/iflibdi.9
@@ -0,0 +1,236 @@
+.Dd May 21, 2019
+.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
+.Fo iflib_device_attach
+.Fa "device_t dev"
+.Fc
+.Ft int
+.Fo iflib_device_detach
+.Fa "device_t dev"
+.Fc
+.Ft int
+.Fo iflib_device_suspend
+.Fa "device_t dev"
+.Fc
+.Ft int
+.Fo iflib_device_resume
+.Fa "device_t dev"
+.Fc
+.Ft int
+.Fo iflib_device_register
+.Fa "device_t dev"
+.Fa "void *softc"
+.Fa "if_shared_ctx_t sctx"
+.Fa "if_ctx_t *ctxp"
+.Fc
+.Ft int
+.Fo iflib_device_deregister
+.Fa "if_ctx_t ctx"
+.Fc
+.Ft int
+.Fo iflib_irq_alloc
+.Fa "if_ctx_t ctx"
+.Fa "if_irq_t irq_info"
+.Fa "int rid"
+.Fa "driver_filter_t filter"
+.Fa "void *filter_arg"
+.Fa "driver_intr_t handler"
+.Fa "void *arg"
+.Fa "char *name"
+.Fc
+.Ft int
+.Fo iflib_irq_alloc_generic
+.Fa "if_ctx_t ctx"
+.Fa "if_irq_t irq"
+.Fa "int rid"
+.Fa "intr_type_t type"
+.Fa "driver_filter_t *filter"
+.Fa "void *filter_arg"
+.Fa "int qid"
+.Fa "char *name"
+.Fc
+.Ft void
+.Fo iflib_led_create
+.Fa "if_ctx_t ctx"
+.Fc
+.Ft void
+.Fo iflib_tx_intr_deferred
+.Fa "if_ctx_t ctx"
+.Fa "int txqid"
+.Fc
+.Ft void
+.Fo iflib_rx_intr_deferred
+.Fa "if_ctx_t ctx"
+.Fa "int rxqid"
+.Fc
+.Ft void
+.Fo iflib_link_intr_deferred
+.Fa "if_ctx_t ctx"
+.Fc
+.Ft void
+.Fo iflib_link_state_change
+.Fa "if_ctx_t ctx"
+.Fa "int linkstate"
+.Fc
+.Ft void
+.Fo iflib_add_int_delay_sysctl
+.Fa "if_ctx_t ctx"
+.Fa "const char *"
+.Fa "const char *"
+.Fa "if_int_delay_info_t"
+.Fa "int"
+.Fa "int"
+.Fc
+.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 queue 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.
+.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.
+Its 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_irq_alloc
+Allocate an interrupt resource for a given rid value with an associated filter
+and handler function.
+.It Fn iflib_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
+.Dv IFLIB_INTR_TX ,
+.Dv IFLIB_INTR_RX ,
+and
+.Dv 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
+.Dv LINK_STATE_UP
+or
+.Dv LINK_STATE_DOWN
+as specified by the second argument to the function.
+.Pp
+.Em Interface Link States
+The following link states are currently defined:
+.It Dv LINK_STATE_UP
+The link is up.
+.It Dv 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
+.Xr iflibdd 9 ,
+.Xr iflibtxrx 9
+.Sh AUTHORS
+This manual page was written by
+.An Nicole Graziano