mirror of
https://github.com/xcat2/xNBA.git
synced 2024-11-25 11:00:15 +00:00
[netdevice] Record whether or not interrupts are currently enabled
Signed-off-by: Michael Brown <mcb30@etherboot.org>
This commit is contained in:
parent
88e436376c
commit
4a7648bd3d
@ -329,6 +329,9 @@ struct net_device {
|
||||
/** Network device is open */
|
||||
#define NETDEV_OPEN 0x0001
|
||||
|
||||
/** Network device interrupts are enabled */
|
||||
#define NETDEV_IRQ_ENABLED 0x0002
|
||||
|
||||
/** Link-layer protocol table */
|
||||
#define LL_PROTOCOLS __table ( struct ll_protocol, "ll_protocols" )
|
||||
|
||||
@ -491,6 +494,17 @@ netdev_is_open ( struct net_device *netdev ) {
|
||||
return ( netdev->state & NETDEV_OPEN );
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether or not network device interrupts are currently enabled
|
||||
*
|
||||
* @v netdev Network device
|
||||
* @v irq_enabled Network device interrupts are enabled
|
||||
*/
|
||||
static inline __attribute__ (( always_inline )) int
|
||||
netdev_irq_enabled ( struct net_device *netdev ) {
|
||||
return ( netdev->state & NETDEV_IRQ_ENABLED );
|
||||
}
|
||||
|
||||
extern void netdev_link_down ( struct net_device *netdev );
|
||||
extern int netdev_tx ( struct net_device *netdev, struct io_buffer *iobuf );
|
||||
extern void netdev_tx_complete_err ( struct net_device *netdev,
|
||||
|
@ -460,7 +460,14 @@ void unregister_netdev ( struct net_device *netdev ) {
|
||||
* @v enable Interrupts should be enabled
|
||||
*/
|
||||
void netdev_irq ( struct net_device *netdev, int enable ) {
|
||||
|
||||
/* Enable or disable device interrupts */
|
||||
netdev->op->irq ( netdev, enable );
|
||||
|
||||
/* Record interrupt enabled state */
|
||||
netdev->state &= ~NETDEV_IRQ_ENABLED;
|
||||
if ( enable )
|
||||
netdev->state |= NETDEV_IRQ_ENABLED;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user