david/ipxe
Archived
1
0

[netdevice] Notify upper-layer drivers when RX processing is (un)frozen

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown 2014-03-14 14:05:38 +00:00
parent 24bbaf6a38
commit 87465258ab
2 changed files with 30 additions and 20 deletions

View File

@ -658,6 +658,8 @@ netdev_rx_frozen ( struct net_device *netdev ) {
return ( netdev->state & NETDEV_RX_FROZEN );
}
extern void netdev_rx_freeze ( struct net_device *netdev );
extern void netdev_rx_unfreeze ( struct net_device *netdev );
extern void netdev_link_err ( struct net_device *netdev, int rc );
extern void netdev_link_down ( struct net_device *netdev );
extern int netdev_tx ( struct net_device *netdev, struct io_buffer *iobuf );
@ -733,24 +735,4 @@ netdev_link_up ( struct net_device *netdev ) {
netdev_link_err ( netdev, 0 );
}
/**
* Freeze network device receive queue processing
*
* @v netdev Network device
*/
static inline __attribute__ (( always_inline )) void
netdev_rx_freeze ( struct net_device *netdev ) {
netdev->state |= NETDEV_RX_FROZEN;
}
/**
* Unfreeze network device receive queue processing
*
* @v netdev Network device
*/
static inline __attribute__ (( always_inline )) void
netdev_rx_unfreeze ( struct net_device *netdev ) {
netdev->state &= ~NETDEV_RX_FROZEN;
}
#endif /* _IPXE_NETDEVICE_H */

View File

@ -108,6 +108,34 @@ static void netdev_notify ( struct net_device *netdev ) {
}
}
/**
* Freeze network device receive queue processing
*
* @v netdev Network device
*/
void netdev_rx_freeze ( struct net_device *netdev ) {
/* Mark receive queue processing as frozen */
netdev->state |= NETDEV_RX_FROZEN;
/* Notify drivers of change */
netdev_notify ( netdev );
}
/**
* Unfreeze network device receive queue processing
*
* @v netdev Network device
*/
void netdev_rx_unfreeze ( struct net_device *netdev ) {
/* Mark receive queue processing as not frozen */
netdev->state &= ~NETDEV_RX_FROZEN;
/* Notify drivers of change */
netdev_notify ( netdev );
}
/**
* Mark network device as having a specific link state
*