sk_data_ready 回调无法获取片段数据
sk_data_ready callback not able to get fragment data
sk_data_ready回调函数。通过获取 read_lock(&sk->sk_callback_lock) 来处理 skb。 skb->data_len 显示片段大小。但是当我们引用skb共享信息结构shinfo = skb_shinfo(skb)时,shinfo->nr_frags显示为零,nr_frags值为零。无论如何我们可以从片段中获取数据。
skb_shinfo(skb)->nr_frags
显示分页片段的数量,但这不是唯一可以将数据放置在线性数据区域之外的 skb 中的地方。在 skb_shinfo(skb)->frag_list
处还有附加到此 skb 的 skb 片段列表(请参阅内核中的 skb_walk_frags())。你的数据可能在那里。如果不是,那么如果不在内核中从入口到调用 sk_data_ready()
的整个路径上看到您的代码,就很难说出发生了什么。它可能只是某个地方的错误。
sk_data_ready回调函数。通过获取 read_lock(&sk->sk_callback_lock) 来处理 skb。 skb->data_len 显示片段大小。但是当我们引用skb共享信息结构shinfo = skb_shinfo(skb)时,shinfo->nr_frags显示为零,nr_frags值为零。无论如何我们可以从片段中获取数据。
skb_shinfo(skb)->nr_frags
显示分页片段的数量,但这不是唯一可以将数据放置在线性数据区域之外的 skb 中的地方。在 skb_shinfo(skb)->frag_list
处还有附加到此 skb 的 skb 片段列表(请参阅内核中的 skb_walk_frags())。你的数据可能在那里。如果不是,那么如果不在内核中从入口到调用 sk_data_ready()
的整个路径上看到您的代码,就很难说出发生了什么。它可能只是某个地方的错误。