Kernel Janitor TODO: dev_kfree_skb
Subsystems (2)
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
Quoted 6 lines · John Daiker
The "Balancing Function" header suggests that all
net_deviceinterrupt functions should usedev_kfree_skb_irqas opposed todev_kfree_skb. Should we ever be callingdev_kfree_skbdirectly, or would the better practice be to always calldev_kfree_skb_any(thus letting the kernel decide to calldev_kfree_skbordev_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