提交 b0ba6667 编写于 作者: H Herbert Xu 提交者: David S. Miller

[NET] napi: Call __netif_rx_complete in netif_rx_complete

This patch kills a little bit of code duplication between the two
variants of netif_rx_complete.
Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 e4fd5da3
...@@ -910,6 +910,17 @@ static inline int netif_rx_reschedule(struct net_device *dev, int undo) ...@@ -910,6 +910,17 @@ static inline int netif_rx_reschedule(struct net_device *dev, int undo)
return 0; return 0;
} }
/* same as netif_rx_complete, except that local_irq_save(flags)
* has already been issued
*/
static inline void __netif_rx_complete(struct net_device *dev)
{
BUG_ON(!test_bit(__LINK_STATE_RX_SCHED, &dev->state));
list_del(&dev->poll_list);
smp_mb__before_clear_bit();
clear_bit(__LINK_STATE_RX_SCHED, &dev->state);
}
/* Remove interface from poll list: it must be in the poll list /* Remove interface from poll list: it must be in the poll list
* on current cpu. This primitive is called by dev->poll(), when * on current cpu. This primitive is called by dev->poll(), when
* it completes the work. The device cannot be out of poll list at this * it completes the work. The device cannot be out of poll list at this
...@@ -920,10 +931,7 @@ static inline void netif_rx_complete(struct net_device *dev) ...@@ -920,10 +931,7 @@ static inline void netif_rx_complete(struct net_device *dev)
unsigned long flags; unsigned long flags;
local_irq_save(flags); local_irq_save(flags);
BUG_ON(!test_bit(__LINK_STATE_RX_SCHED, &dev->state)); __netif_rx_complete(dev);
list_del(&dev->poll_list);
smp_mb__before_clear_bit();
clear_bit(__LINK_STATE_RX_SCHED, &dev->state);
local_irq_restore(flags); local_irq_restore(flags);
} }
...@@ -940,17 +948,6 @@ static inline void netif_poll_enable(struct net_device *dev) ...@@ -940,17 +948,6 @@ static inline void netif_poll_enable(struct net_device *dev)
clear_bit(__LINK_STATE_RX_SCHED, &dev->state); clear_bit(__LINK_STATE_RX_SCHED, &dev->state);
} }
/* same as netif_rx_complete, except that local_irq_save(flags)
* has already been issued
*/
static inline void __netif_rx_complete(struct net_device *dev)
{
BUG_ON(!test_bit(__LINK_STATE_RX_SCHED, &dev->state));
list_del(&dev->poll_list);
smp_mb__before_clear_bit();
clear_bit(__LINK_STATE_RX_SCHED, &dev->state);
}
static inline void netif_tx_lock(struct net_device *dev) static inline void netif_tx_lock(struct net_device *dev)
{ {
spin_lock(&dev->_xmit_lock); spin_lock(&dev->_xmit_lock);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册