Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

NetDev_ISR_Handler()

A device’s ISR_Handler() function is used to handle each device’s interrupts. See section 7-5-5 “NetDev_ISR_Handler()” for more details on how to handle each device’s interrupts.

Files

Every device driver’s net_dev.c

Prototype

 

...

Code Block

          static void NetDev_ISR_Handler (NET_IF           *pif,
                                          NET_DEV_ISR_TYPE  type);

Note that since every device driver’s ISR_Handler() function is accessed only by function pointer via the device driver’s API structure, it doesn’t need to be globally available and should therefore be declared as ‘static’.

Arguments

pif

Pointer to the interface to handle network device interrupts.

...

Device’s interrupt type:

NET_DEV_ISR_TYPE_UNKNOWN
NET_DEV_ISR_TYPE_RX
NET_DEV_ISR_TYPE_RX_RUNT
NET_DEV_ISR_TYPE_RX_OVERRUN
NET_DEV_ISR_TYPE_TX_RDY
NET_DEV_ISR_TYPE_TX_COMPLETE
NET_DEV_ISR_TYPE_TX_COLLISION_LATE
NET_DEV_ISR_TYPE_TX_COLLISION_EXCESS
NET_DEV_ISR_TYPE_JABBER
NET_DEV_ISR_TYPE_BABBLE
NET_DEV_ISR_TYPE_PHY

Returned Value

None.

Required Configuration

None.

Notes / Warnings

Each device’s NetDev_ISR_Handler() should never return early but check all applicable interrupt sources to see if they are active. This additional checking is necessary because multiple interrupt sources may be set within the interrupt response time and will reduce the number and overhead of handling interrupts.