FreeBSD manual
download PDF document: iflib_device_detach.9.pdf
IFLIBDI(9) FreeBSD Kernel Developer's Manual IFLIBDI(9)
NAME
iflibdi - Device Independent Configuration Functions
SYNOPSIS
#include <ifdi_if.h>
Device Independent Functions
int
iflib_device_attach(device_t dev);
int
iflib_device_detach(device_t dev);
int
iflib_device_suspend(device_t dev);
int
iflib_device_resume(device_t dev);
int
iflib_device_register(device_t dev, void *softc, if_shared_ctx_t sctx,
if_ctx_t *ctxp);
int
iflib_device_deregister(if_ctx_t ctx);
int
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);
int
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);
void
iflib_led_create(if_ctx_t ctx);
void
iflib_tx_intr_deferred(if_ctx_t ctx, int txqid);
void
iflib_rx_intr_deferred(if_ctx_t ctx, int rxqid);
void
iflib_link_intr_deferred(if_ctx_t ctx);
void
iflib_link_state_change(if_ctx_t ctx, int linkstate);
void
iflib_add_int_delay_sysctl(if_ctx_t ctx, const char *, const char *,
if_int_delay_info_t, int, int);
Global Variables
extern struct if_txrx
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.
The if_ctx_t Structure
The fields of struct if_ctx_t are as follows:
if_softc (void) A pointer to the driver's private state
block.
ifc_dev (device_t) The underlying device structure.
ifc_ip (if_t) A link back to the interface structure
ifc_cpus (cpuset_t)
ifc_mutex (struct mtx) Mutex lock used to maintain data
integrity
ifc_mtx_name (char *) The name of the mutex
ifc_txqs (iflib_txq_t) Device independent transmit queue
maintained internally by iflib
ifc_rxqs (iflib_rxq_t) Device independent receive queue
maintained internally by iflib
ifc_qsets (iflib_qset_t) Output queue that contains a single
transmit (ifc_txq_t) and receive (ifc_rxq_t) queue
ifc_if_flags (uint32_t) Flags describing the operational
parameter of the interface
ifc_in_detach (int)
ifc_link_state (int) Describes the current link state of the
Ethernet interface. Its possible values are
either active or inactive.
ifc_link_irq (int)
ifc_vlan_attach_event
(eventhandler_tag)
ifc_vlan_detach_event
(eventhandler_tag)
ifc_pause_frames
(int)
ifc_watchdog_events
(int)
ifc_mac (uint8_t)
ifc_msix_mem (struct resource *)
ifc_legacy_irq (struct if_irq)
ifc_media (struct ifmedia)
ifc_txrx (struct if_txrx)
FUNCTIONS
The above named functions are found exclusively in iflib. They are
independent of the underlying hardware type or configuration.
Device Independent Functions
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 if_ctx_t structure.
iflib_device_detach()
Shutdown and detach the device. Unregister vlan events, drain any
dependent tasks, and release irq, pci, and msix memory.
iflib_device_suspend()
Suspend a device by calling the device dependent suspend function
and bus_generic_suspend.
iflib_device_resume()
Resume a device by calling the device dependent resume function,
the iflib_init_locked function, and bus_generic_resume.
iflib_device_register()
Register a device with the iflib framework. Allocate and
initialize the if_ctx_t structure. Setup and initialize the MSI or
MSI/X interrupt queues if necessary. Allocate memory for queues
and qset structure setup.
iflib_irq_alloc()
Allocate an interrupt resource for a given rid value with an
associated filter and handler function.
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 IFLIB_INTR_TX, IFLIB_INTR_RX, and IFLIB_INTR_ADMIN.
iflib_led_create()
Calls led_create to initialize the ctx->ifc_led_dev field
iflib_tx_intr_deferred()
Calls GROUPTASK_ENQUEUE to enqueue the transfer queues ift_task.
iflib_rx_intr_deferred()
Calls GROUPTASK_ENQUEUE to enqueue the receive queues ifr_task.
iflib_link_intr_deferred()
Calls GROUPTASK_ENQUEUE to enqueue the link task
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.
The link is down.
iflib_add_int_delay_sysctl()
Modifies settings to user defined values for a given set of
variables.
SEE ALSO
iflibdd(9), iflibtxrx(9)
AUTHORS
This manual page was written by Nicole Graziano
FreeBSD 14.0-RELEASE-p11 May 21, 2019 FreeBSD 14.0-RELEASE-p11