中断处理的有趣部分处理"发送结束"的情况. 在这个情况下, 统计量被更新, 调用 dev_kfree_skb 来返回 socket 缓存给系统. 实际上, 有这个函数的 3 个变体可以调用:
- dev_kfree_skb(struct sk_buff *skb);
-
这个版本应当在你知道你的代码不会在中断上下文中运行时调用. 因为 snull 没有实际的硬件中断, 我们使用这个版本.
dev_kfree_skb_irq(struct sk_buff *skb); -
如果你知道会在中断处理中释放缓存, 使用这个版本, 它对这个情况做了优化.
dev_kfree_skb_any(struct sk_buff *skb); -
如果相关代码可能在中断或非中断上下文运行时, 使用这个版本.