Specifying the Interface Number of the Device ISR
NetDev_ISR_Handler() handles a network device’s interrupts on a specific interface.
Each network device’s interrupt, or set of device interrupts, must be handled by a unique BSP-level interrupt service routine (ISR) handler, NetDev_ISR_Handler(), which maps each specific device interrupt to its corresponding network interface ISR handler, NetIF_ISR_Handler(). For some CPUs, this may be a first- or second-level interrupt handler. The application must configure the interrupt controller to call every network device’s unique NetDev_ISR_Handler() when the device’s interrupt occurs (see NetDev_CfgIntCtrl). Every unique NetDev_ISR_Handler() must then perform the following actions:
Call
NetIF_ISR_Handler()with the device’s unique network interface number and appropriate interrupt type. The network interface number should be available in the device’sNetDev_CfgIntCtrl()function after configuration (see NetDev_CfgIntCtrl).NetIF_ISR_Handler()in turn calls the appropriate device driver’s interrupt handler.In most cases, each device requires only a single
NetDev_ISR_Handler(). This is possible when the device’s driver is able to determine the device’s interrupt type via internal device registers or the interrupt controller. In this case,NetDev_ISR_Handler()callsNetIF_ISR_Handler()with interrupt type codeNET_DEV_ISR_TYPE_UNKNOWN.However, some devices cannot determine the interrupt type when an interrupt occurs and may therefore require multiple, unique
NetDev_ISR_Handler()’s, each of which callsNetIF_ISR_Handler()with the appropriate interrupt type code.Ethernet physical layer (PHY) interrupts should call
NetIF_ISR_Handler()with interrupt type codeNET_DEV_ISR_TYPE_PHY.Clear the device’s interrupt source, possibly via an external or CPU-integrated interrupt controller source.
See NetDev_WiFi_ISR_Handler for more information.