diff --git a/src/include/ipxe/netdevice.h b/src/include/ipxe/netdevice.h index 2ea3c8bb..6ef9cb1e 100644 --- a/src/include/ipxe/netdevice.h +++ b/src/include/ipxe/netdevice.h @@ -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 */ diff --git a/src/net/netdevice.c b/src/net/netdevice.c index 82d0e82b..4a42ef42 100644 --- a/src/net/netdevice.c +++ b/src/net/netdevice.c @@ -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 *