On Thu, 14 Dec 2006 22:30:09 +0000 Christoph Hellwig <[EMAIL PROTECTED]> wrote:
> On Thu, Dec 14, 2006 at 12:48:15PM -0800, Stephen Hemminger wrote: > > 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 <[EMAIL PROTECTED]> > > > > --- 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); > > Maybe you should only move the slowpath out of line ala: > > static inline void dev_kfree_skb_irq(struct sk_buff *skb) > { > if (atomic_dec_and_test(&skb->users)) > __dev_kfree_skb_irq(skb); > } > We could but for routing or other cases where buffer isn't cloned it goes through the test. -- Stephen Hemminger <[EMAIL PROTECTED]> - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html