diff options
Diffstat (limited to 'static/freebsd/man9/iflibdd.9')
| -rw-r--r-- | static/freebsd/man9/iflibdd.9 | 318 |
1 files changed, 318 insertions, 0 deletions
diff --git a/static/freebsd/man9/iflibdd.9 b/static/freebsd/man9/iflibdd.9 new file mode 100644 index 00000000..67645fe5 --- /dev/null +++ b/static/freebsd/man9/iflibdd.9 @@ -0,0 +1,318 @@ +.Dd May 3, 2018 +.Dt IFLIBDD 9 +.Os +.Sh NAME +.Nm iflibdd +.Nd Device Dependent Configuration Functions +.Sh SYNOPSIS +.In "ifdi_if.h" +.Ss "Soft Queue Setup and Teardown Functions" +.Ss "Mandatory Functions" +.Ft int +.Fo ifdi_tx_queues_alloc +.Fa "if_ctx_t ctx" +.Fa "caddr_t *vaddrs" +.Fa "uint64_t *paddrs" +.Fa "int ntxqs" +.Fa "int ntxqsets" +.Fc +.Ft int +.Fo ifdi_rx_queues_alloc +.Fa "if_ctx_t ctx" +.Fa "caddr_t *vaddrs" +.Fa "uint64_t *paddrs" +.Fa "int nrxqs" +.Fa "int nrxqsets" +.Fc +.Ft int +.Fo ifdi_queues_free +.Fa "if_ctx_t ctx" +.Fc +.Ss "Optional Functions" +.Ft int +.Fo ifdi_txq_setup +.Fa "if_ctx_t ctx" +.Fa "uint16_t qid" +.Fc +.Ft int +.Fo ifdi_rxq_setup +.Fa "if_ctx_t ctx" +.Fa "uint16_t qid" +.Fc +.Ss "Device Setup and Teardown Functions" +.Ss "Mandatory Functions" +.Ft int +.Fo ifdi_attach_pre +.Fa "if_ctx_t ctx" +.Fc +.Ft int +.Fo ifdi_attach_post +.Fa "if_ctx_t ctx" +.Fc +.Ft int +.Fo ifdi_detach +.Fa "if_ctx_t ctx" +.Fc +.Ss "Optional Functions" +.Ft void +.Fo ifdi_vlan_register +.Fa "if_ctx_t ctx" +.Fa "uint16_t vtag" +.Fc +.Ft void +.Fo ifdi_vlan_unregister +.Fa "if_ctx_t ctx" +.Fa "uint16_t vtag" +.Fc +.Ft int +.Fo ifdi_suspend +.Fa "if_ctx_t ctx" +.Fc +.Ft int +.Fo ifdi_resume +.Fa "if_ctx_t ctx" +.Fc +.Ss "Device Configuration Functions" +.Ss "Mandatory Functions" +.Ft void +.Fo ifdi_init +.Fa "if_ctx_t ctx" +.Fc +.Ft void +.Fo ifdi_stop +.Fa "if_ctx_t ctx" +.Fc +.Ft void +.Fo ifdi_multi_set +.Fa "if_ctx_t ctx" +.Fc +.Ft int +.Fo ifdi_mtu_set +.Fa "if_ctx_t ctx" +.Fa "uint32_t mtu" +.Fc +.Ft void +.Fo ifdi_media_status +.Fa "if_ctx_t ctx" +.Fa "struct ifmediareq *ifr" +.Fc +.Ft int +.Fo ifdi_media_change +.Fa "if_ctx_t ctx" +.Fc +.Ft void +.Fo ifdi_promisc_set +.Fa "if_ctx_t ctx" +.Fa "int flags" +.Fc +.Ft uint64_t +.Fo ifdi_get_counter +.Fa "if_ctx_t ctx" +.Fa "ift_counter cnt" +.Fc +.Ft void +.Fo ifdi_update_admin_status +.Fa "if_ctx_t ctx" +.Fc +.Ss "Optional Functions" +.Ft void +.Fo ifdi_media_set +.Fa "if_ctx_t ctx" +.Fc +.Ss "Interrupt enable/disable" +.Ss "Mandatory Functions" +.Ft void +.Fo ifdi_intr_enable +.Fa "if_ctx_t ctx" +.Fc +.Ft void +.Fo ifdi_queue_intr_enable +.Fa "if_ctx_t ctx" +.Fa "uint16_t qid" +.Fc +.Ft void +.Fo ifdi_intr_disable +.Fa "if_ctx_t ctx" +.Fc +.Ss IOV Support +.Ft init +.Fo iov_init +.Fa "if_ctx_t ctx" +.Fa "uint16_t num_vfs" +.Fa "const nvlist_t *params" +.Fc +.Ft void +.Fo iov_uinit +.Fa "if_ctx_t ctx" +.Fc +.Ft void +.Fo ifdi_vflr_handle +.Fa "if_ctx_t ctx" +.Fc +.Ft int +.Fo ifdi_vf_add +.Fa "if_ctx_t ctx" +.Fa "uint16_t vfnum" +.Fa "const nvlist_t *params" +.Fc +.Ss "Optional Functions" +.Ft void +.Fo ifdi_link_intr_enable +.Fa "if_ctx_t ctx" +.Fc +.Ss "Optional Service Routines" +.Ft void +.Fo ifdi_timer +.Fa "if_ctx_t ctx" +.Fc +.Ft void +.Fo ifdi_watchdog_reset +.Fa "if_ctx_t ctx" +.Fc +.Ss "Additional Functions" +.Ft void +.Fo ifdi_led_func +.Fa "if_ctx_t ctx" +.Fa "int onoff" +.Fc +.Ft int +.Fo ifdi_sysctl_int_delay +.Fa "if_ctx_t ctx" +.Fa "if_int_delay_info_t iidi" +.Fc +.Ft int +.Fo ifdi_i2c_req +.Fa "if_ctx_t ctx" +.Fa "struct ifi2creq *req" +.Fc +.Sh FUNCTIONS +The above named functions are device dependent configuration functions. +These routines are registered with iflib by the driver and are called from the +corresponding iflib function to configure device specific functions and +registers. +.Ss Device Dependent Functions +.Ss Soft Queue Setup and Teardown +.Bl -ohang -offset indent +.It Fn ifdi_tx_queues_alloc +Mandatory function that is called during iflib_attach to allocate transmit +queues. +vaddrs and paddrs are arrays of virtual and physical addresses respectively of +the hardware transmit queues. +ntxqs is the number of queues per qset. +ntxqsets is the number of qsets. +.It Fn ifdi_rx_queues_alloc +Mandatory function that is called during iflib_attach to allocate receive +queues. +vaddrs and paddrs are arrays of virtual and physical addresses respectively of +the hardware receive queues. +nrxqs is the number of queues per qset. +nrxqsets is the number of qsets. +.It Fn ifdi_queues_free +Mandatory function that frees the allocated queues and associated transmit +buffers. +.It Fn ifdi_txq_setup +Optional function for each transmit queue that handles device specific +initialization. +.It Fn ifdi_rxq_setup +Optional function for each receive queue that handles device specific +initialization. +.El +.Ss Device Setup and Teardown +.Bl -ohang -offset indent +.It Fn ifdi_attach_pre +Mandatory function implemented by the driver to perform any attach logic that +procedes interrupt and queue allocation, queue setup, and interrupt assignment. +.It Fn ifdi_attach_post +Mandatory function implemented by the driver to perform any attach logic that +occurs after ifdi_attach_pre, and iflib's queue setup and MSI/MSIX(X) or legacy +interrupt assignment. +.It Fn ifdi_detach +Mandatory function that frees any resources allocated by the driver in +ifdi_attach_pre and ifdi_attach_post. +.It Fn ifdi_vlan_register +Optional function called by the VLAN config eventhandler. +.Va vtag +is the new VLAN tag. +.It Fn ifdi_vlan_unregister +Optional function called by the VLAN unconfig eventhandler. +.It Fn ifdi_suspend +Optional function that suspends the driver. +.It Fn ifdi_resume +Optional function that resumes a driver. +.El +.Ss Device Configuration Functions +.Bl -ohang -offset indent +.It Fn ifdi_init +Mandatory function that will initialize and bring up the hardware. +For example, it will reset the chip and enable the receiver unit. +It should mark the interface running, but not active ( +.Dv IFF_DRV_RUNNING , +.Dv ~IIF_DRV_OACTIVE ). +.It Fn ifdi_stop +Mandatory function that should disable all traffic on the interface by issuing +a global reset on the MAC and deallocating the TX and RX buffers. +.It Fn ifdi_multi_set +Programs the interfaces multicast addresses +.It Fn ifdi_media_status +Media Ioctl Callback. +Function is called whenever the user queries the status of the interface using +.Xr ifconfig 8 . +The driver sets the appropriate link type and speed in ifmr->ifm_active. +.It Fn ifdi_mtu_set +Sets the mtu interface to the value of the second function parameter mtu. +.It Fn ifdi_media_change +Function is called when the user changes speed/duplex using the media/mediaopt +option with +.Xr ifconfig 8 . +.It Fn ifdi_promisc_set +Enables or disables promisc settings depending upon the flags value. +.Va flags +contains the interface's +.Xr ifnet 9 +flags. +.It Fn ifdi_get_counter +Returns the value for counter cnt depending upon counter type. +.It Fn ifdi_update_admin_status +Sets the link_up state to TRUE or FALSE depending upon the OS link state. +A real check of the hardware only happens with a link interrupt. +.It Fn ifdi_media_set +Need to define +.El +.Ss Interrupt Enable/Disable +.Bl -ohang -offset indent +.It Fn ifdi_intr_enable +Mandatory function that enables all interrupts. +.It Fn ifdi_intr_disable +Mandatory function that disables all interrupts. +.It Fn ifdi_queue_intr_enable +Mandatory function that enables interrupts on queue qid. +.It Fn iov_init +Initialize num_vfs VFs. +.It Fn io_uninit +Tear down the context for all VFs. +.It Fn ifdi_vflr_handle +Handle any VFs that have reset themselves via a Function Level Reset (FLR). +.It Fn ifdi_vf_add +Set parameters in params in VF vfnum. +.El +.Ss Service Routines +.Bl -ohang -offset indent +.It Fn ifdi_timer +Optional timer routine that will be run every 500ms. +.It Fn ifdi_watchdog_reset +Optional function to run when a transmit queue is hung. +.El +.Ss Additional Functions +.Bl -ohang -offset indent +.It Fn ifdi_led_func +.It Fn ifdi_sysctl_int_delay +.It Fn ifdi_i2c_req +.El +.Sh SEE ALSO +.Xr ifconfig 8 , +.Xr iflibdi 9 , +.Xr iflibtxrx 9 , +.Xr ifnet 9 +.Sh AUTHORS +This manual page was written by +.An Nicole Graziano |
