mirror of https://github.com/ipxe/ipxe.git
[netdevice] Allow devices to indicate that interrupts are not supported
Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/1/head
parent
7bf37147b3
commit
66caec3f00
|
@ -236,6 +236,9 @@ struct net_device_operations {
|
||||||
*
|
*
|
||||||
* @v netdev Network device
|
* @v netdev Network device
|
||||||
* @v enable Interrupts should be enabled
|
* @v enable Interrupts should be enabled
|
||||||
|
*
|
||||||
|
* This method may be NULL to indicate that interrupts are not
|
||||||
|
* supported.
|
||||||
*/
|
*/
|
||||||
void ( * irq ) ( struct net_device *netdev, int enable );
|
void ( * irq ) ( struct net_device *netdev, int enable );
|
||||||
};
|
};
|
||||||
|
@ -515,6 +518,17 @@ netdev_is_open ( struct net_device *netdev ) {
|
||||||
return ( netdev->state & NETDEV_OPEN );
|
return ( netdev->state & NETDEV_OPEN );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether or not network device supports interrupts
|
||||||
|
*
|
||||||
|
* @v netdev Network device
|
||||||
|
* @ret irq_supported Network device supports interrupts
|
||||||
|
*/
|
||||||
|
static inline __attribute__ (( always_inline )) int
|
||||||
|
netdev_irq_supported ( struct net_device *netdev ) {
|
||||||
|
return ( netdev->op->irq != NULL );
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check whether or not network device interrupts are currently enabled
|
* Check whether or not network device interrupts are currently enabled
|
||||||
*
|
*
|
||||||
|
|
|
@ -542,6 +542,10 @@ void unregister_netdev ( struct net_device *netdev ) {
|
||||||
*/
|
*/
|
||||||
void netdev_irq ( struct net_device *netdev, int enable ) {
|
void netdev_irq ( struct net_device *netdev, int enable ) {
|
||||||
|
|
||||||
|
/* Do nothing if device does not support interrupts */
|
||||||
|
if ( ! netdev_irq_supported ( netdev ) )
|
||||||
|
return;
|
||||||
|
|
||||||
/* Enable or disable device interrupts */
|
/* Enable or disable device interrupts */
|
||||||
netdev->op->irq ( netdev, enable );
|
netdev->op->irq ( netdev, enable );
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue