gpt4 book ai didi

linux - skbuff frags 和 frag_list 的区别

转载 作者:IT王子 更新时间:2023-10-29 01:14:14 25 4
gpt4 key购买 nike

sk_buff 有两个地方可以存储下一个碎片数据:

skb_shinfo(head)->frag_list 
skb_shinfo(head)->frags[]

这两种处理碎片的方式有什么区别?

最佳答案

两者用于不同的情况。

碎片[]

当您的设备支持分散-聚集 I/O,并且您希望它进行数据组合等操作时,您可以从第二个片段开始填充 frags[] 结构,直到第 n 个片段。第一个片段总是由 datatail 指针指定。其余的片段填充在 frags[] 结构中。如果不使用 scatter gather,则此变量为空。

片段列表

这是 IP 片段的列表。这将在 ip_push_pending_frames 期间被填充。

说你的 sk_buffs 是这样安排的,

sk_buff0->next = sk_buff1
sk_buff1->next = sk_buff2
...
sk_buffn-1->next = sk_buffn

ip_push_pending_frames 被调用后

sk_buff0->frag_list = sk_buff1
sk_buff1->next = sk_buff2
...
sk_buffn-1->next = sk_buffn

简单的说

  • frags[] 用于分散-聚集 I/O 缓冲区
  • frag_list 用于 IP 片段

关于linux - skbuff frags 和 frag_list 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10039744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com