sk_data_ready回调无法获取片段数据

时间:2018-05-08 13:28:05

标签: tcp linux-kernel network-programming linux-device-driver

sk_data_ready回调是通过函数给出的。通过获取read_lock来处理skb(& sk-> sk_callback_lock)。 skb-> data_len显示片段大小。但是当我们deference skb共享信息结构shinfo = skb_shinfo(skb)时,shinfo-> nr_frags显示零,nr_frags值为零。无论如何我们可以从片段中获取数据。

1 个答案:

答案 0 :(得分:0)

skb_shinfo(skb)->nr_frags显示分页片段的数量,但这不是唯一可以将数据放置在线性数据区域之外的skb中的位置。还有一个skb片段列表附加到这个skb skb_shinfo(skb)->frag_list(参见内核中的skb_walk_frags())。你的数据可能在那里。如果没有,那么很难说如果没有在内核的整个路径上看到代码从入口到sk_data_ready()的调用,那么会发生什么。它可能只是某个地方的错误。