kernels/linux-2.4.0/include/linux/netdevice.h
/* Use this variant when it is known for sure that it
 * is executing from interrupt context.
 */
Use this variant when it is known for sure that it
is executing from interrupt context.
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)) {
		int cpu =smp_processor_id();
		unsigned long flags;
		local_irq_save(flags);
		skb->next = softnet_data[cpu].completion_queue;
		softnet_data[cpu].completion_queue = skb;
		__cpu_raise_softirq(cpu, NET_TX_SOFTIRQ);
		local_irq_restore(flags);
	}
}
static inline void dev_kfree_skb_irq ( struct sk_buff * skb ) { if ( atomic_dec_and_test ( & skb -> users ) ) { int cpu = smp_processor_id ( ) ; unsigned long flags ; local_irq_save ( flags ) ; skb -> next = softnet_data [ cpu ] . completion_queue ; softnet_data [ cpu ] . completion_queue = skb ; __cpu_raise_softirq ( cpu , NET_TX_SOFTIRQ ) ; local_irq_restore ( flags ) ; } }
Use this variant when it is known for sure that it
 is executing from interrupt context.
Use this variant when it is known for sure that it is executing from interrupt context .