Skip to contentSkip to conversation

Kernel Janitor TODO: dev_kfree_skb

DISCUSSION John Daiker 2 participants 2 messages Jun 23, 2006

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

I was running through the kernel janitors TODO list (http://janitor.kernelnewbies.org/TODO) and thought I'd try to find something easy for my first attempt at kernel hacking/maintenance.

The "Balancing Function" header suggests that all net_device interrupt functions should use dev_kfree_skb_irq as opposed to dev_kfree_skb.
Should we ever be calling dev_kfree_skb directly, or would the better practice be to always call dev_kfree_skb_any (thus letting the kernel decide to call dev_kfree_skb or dev_kfree_skb_irq)?

dev_kfree_skb_any is defined in 'net/core/dev.c:1118'

John Daiker

#1 lore raw
Quoted 6 lines · John Daiker

The "Balancing Function" header suggests that all net_device interrupt functions should use dev_kfree_skb_irq as opposed to dev_kfree_skb. Should we ever be calling dev_kfree_skb directly, or would the better practice be to always call dev_kfree_skb_any (thus letting the kernel decide to call dev_kfree_skb or dev_kfree_skb_irq)?

It's best if you write code in a way so that you always know whether it's IRQ context or not. You should only use dev_kfree_skb_any when you fail to write code like that.

Now once you've achieved that, then the next objective is to strive to not have to call kfree_skb in IRQ context at all. Have a look at the TG3 driver for an example where IRQ context is kept to a minimum.

Cheers,

Signature · 4 lines
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt