DDI_INTR_SET_NREQ(9F)   Kernel Functions for Drivers   DDI_INTR_SET_NREQ(9F)
NAME
       ddi_intr_set_nreq - set the number of interrupts requested for a
       device driver instance
SYNOPSIS
       #include <sys/ddi_intr.h>       
int ddi_intr_set_nreq(
dev_info_t *dip, 
int nreq);
INTERFACE LEVEL
       illumos DDI specific (illumos DDI).
PARAMETERS
       dip               Pointer to the 
dev_info structure.       
nreq               Number of interrupts requested.
DESCRIPTION
       The 
ddi_intr_set_nreq() function changes the number of interrupts
       requested by a device driver instance.
       The 
nreq parameter is the total number of interrupt resources that
       this instance of the device driver would like to have available. The       
nreq parameter includes any interrupt resources already allocated by
       the driver. For example, if the driver instance already has two MSI-X
       vectors and it wants two more, it should call this function with an       
nreq parameter set to four.
       The 
nreq parameter can be any value between one and the maximum
       number of interrupts supported by the device hardware, as reported by
       a call to the 
ddi_intr_get_nintrs(9F) function. The driver receives a
       callback notifying it in cases when it must release any previously
       allocated interrupts, or when it is allowed to allocate more
       interrupts as a result of its new 
nreq parameter.
       The 
ddi_intr_set_nreq() function is not supported unless a driver is
       already consuming interrupts, and if it has a registered callback
       handler that can process actions related to changes in interrupt
       availability. See 
ddi_cb_register(9F) for an explanation on how to
       enable this functionality.
RETURN VALUES
       The 
ddi_intr_set_nreq() function returns:       
DDI_SUCCESS                      on success       
DDI_EINVAL                      The operation is invalid because the 
nreq parameter is
                      not a legal value       
DDI_ENOTSUP                      The operation is not supported. The driver must have a
                      registered callback, and the system must have
                      interrupt pools implemented.       
DDI_FAILURE                      Implementation specific failure
CONTEXT
       These functions can be called from kernel, non-interrupt context.
ATTRIBUTES
       See 
attributes(7) for descriptions of the following attributes:
       +--------------------+-----------------+
       |  ATTRIBUTE TYPE    | ATTRIBUTE VALUE |
       +--------------------+-----------------+
       |Interface Stability | Private         |
       +--------------------+-----------------+
       |MT-Level            | MT-Safe         |
       +--------------------+-----------------+
SEE ALSO
       attributes(7), 
attach(9E), 
ddi_cb_register(9F), 
ddi_intr_alloc(9F),       
ddi_intr_get_nintrs(9F)NOTES
       The Interrupt Resource Management feature is limited to device driver
       instances that are using MSI-X interrupts (interrupt type       
DDI_INTR_TYPE_MSIX).  Attempts to use this function for any other
       type of interrupts fails with 
DDI_ENOTSUP.
       The total number of interrupts requested by the driver is initially
       defined by the 
count parameter provided by the driver's first call to
       the 
ddi_intr_alloc(9F) function, specifically during the driver
       instance's 
attach(9E) routine. The 
ddi_intr_set_nreq() function is
       only used if the driver instance experiences changes in its I/O load.
       In response to increased I/O load, the driver may want to request
       additional interrupt resources. In response to diminished I/O load.
       the driver may volunteer to return extra interrupt resources back to
       the system.
                               August 22, 2023         DDI_INTR_SET_NREQ(9F)