mirror of https://github.com/ipxe/ipxe.git
[netdevice] Notify upper-layer drivers when RX processing is (un)frozen
Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/17/head
parent
24bbaf6a38
commit
87465258ab
|
@ -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 */
|
||||
|
|
|
@ -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
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue