Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
IFLIBDI(9)		 BSD 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

DATA STRUCTURES
     The if_ctx_t Structure is the device independent data structure that con-
     tains statistics and identifying information used to transmit and receive
     data packets.  The	interface is associated	with an	array of queues	as-
     signed 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.

   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 in-
			    tegrity

	   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	param-
			    eter of the	interface

	   ifc_in_detach    (int)

	   ifc_link_state   (int) Describes the	current	link state of the Eth-
			    ernet 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_admin_task   (struct grouptask) Taskqueue task scheduled	for
			    link state change events of	the interface

	   ifc_filter_info  (struct iflib_filter_info) Statistics and informa-
			    tion relating to the interface device filter

	   ifc_media	    (struct ifmedia)

	   ifc_txrx	    (struct if_txrx)

FUNCTIONS
     The above named functions are found exclusively in	iflib.	They are inde-
     pendent 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 al-
	   locating 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 initial-
	   ize 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_device_irq_alloc()
	   Allocate an interrupt resource for a	given rid value	with an	asso-
	   ciated filter and handler function.

	   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.

	   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 func-
	   tion.

	   Interface Link States The following link states are currently de-
	   fined:

	   LINK_STATE_UP
	   The link is up.

	   LINK_STATE_DOWN
	   The link is down.

	   iflib_add_int_delay_sysctl()
	   Modifies settings to	user defined values for	a given	set of vari-
	   ables.

SEE ALSO
     iflibdd(9), iflibtxrx(9)

AUTHORS
     This manual page was written by Nicole Graziano

BSD				 May 24, 2017				   BSD

NAME | SYNOPSIS | DATA STRUCTURES | FUNCTIONS | SEE ALSO | AUTHORS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=iflibdi&sektion=9&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help