Move the dev_kfree_skb_irq function from netdevice.h to dev.c for a couple of reasons. Primarily, I want to make softnet_data local to dev.c; also this function is called 300+ places already. Signed-off-by: Stephen Hemminger --- linux-2.6.20-rc1.orig/include/linux/netdevice.h +++ linux-2.6.20-rc1/include/linux/netdevice.h @@ -676,20 +676,7 @@ static inline int netif_running(const st /* Use this variant when it is known for sure that it * is executing from interrupt context. */ -static inline void dev_kfree_skb_irq(struct sk_buff *skb) -{ - if (atomic_dec_and_test(&skb->users)) { - struct softnet_data *sd; - unsigned long flags; - - local_irq_save(flags); - sd = &__get_cpu_var(softnet_data); - skb->next = sd->completion_queue; - sd->completion_queue = skb; - raise_softirq_irqoff(NET_TX_SOFTIRQ); - local_irq_restore(flags); - } -} +extern void dev_kfree_skb_irq(struct sk_buff *skb); /* Use this variant in places where it could be invoked * either from interrupt or non-interrupt context. --- linux-2.6.20-rc1.orig/net/core/dev.c +++ linux-2.6.20-rc1/net/core/dev.c @@ -1141,6 +1141,21 @@ void dev_kfree_skb_any(struct sk_buff *s } EXPORT_SYMBOL(dev_kfree_skb_any); +void dev_kfree_skb_irq(struct sk_buff *skb) +{ + if (atomic_dec_and_test(&skb->users)) { + struct softnet_data *sd; + unsigned long flags; + + local_irq_save(flags); + sd = &__get_cpu_var(softnet_data); + skb->next = sd->completion_queue; + sd->completion_queue = skb; + raise_softirq_irqoff(NET_TX_SOFTIRQ); + local_irq_restore(flags); + } +} +EXPORT_SYMBOL(dev_kfree_skb_irq); /* Hot-plugging. */ void netif_device_detach(struct net_device *dev) -- - 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