Move netif_rx_reschedule out of line, so that softnet_data can be made local. Signed-off-by: Stephen Hemminger --- linux-2.6.20-rc1.orig/include/linux/netdevice.h +++ linux-2.6.20-rc1/include/linux/netdevice.h @@ -851,21 +851,7 @@ static inline void netif_rx_schedule(str /* Try to reschedule poll. Called by dev->poll() after netif_rx_complete(). * Do not inline this? */ -static inline int netif_rx_reschedule(struct net_device *dev, int undo) -{ - if (netif_rx_schedule_prep(dev)) { - unsigned long flags; - - dev->quota += undo; - - local_irq_save(flags); - list_add_tail(&dev->poll_list, &__get_cpu_var(softnet_data).poll_list); - __raise_softirq_irqoff(NET_RX_SOFTIRQ); - local_irq_restore(flags); - return 1; - } - return 0; -} +extern int netif_rx_reschedule(struct net_device *dev, int undo); /* Remove interface from poll list: it must be in the poll list * on current cpu. This primitive is called by dev->poll(), when --- linux-2.6.20-rc1.orig/net/core/dev.c +++ linux-2.6.20-rc1/net/core/dev.c @@ -1132,6 +1132,23 @@ void __netif_rx_schedule(struct net_devi } EXPORT_SYMBOL(__netif_rx_schedule); +int netif_rx_reschedule(struct net_device *dev, int undo) +{ + if (netif_rx_schedule_prep(dev)) { + unsigned long flags; + + dev->quota += undo; + + local_irq_save(flags); + list_add_tail(&dev->poll_list, &__get_cpu_var(softnet_data).poll_list); + __raise_softirq_irqoff(NET_RX_SOFTIRQ); + local_irq_restore(flags); + return 1; + } + return 0; +} +EXPORT_SYMBOL(netif_rx_reschedule); + void dev_kfree_skb_any(struct sk_buff *skb) { if (in_irq() || irqs_disabled()) -- - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html