обратный вызов sk_data_ready не может получить данные фрагмента - PullRequest
0 голосов
/ 08 мая 2018

sk_data_ready обратный вызов предоставляется с функцией. обработка skb путем получения read_lock (& ​​sk-> sk_callback_lock). skb-> data_len показывает размер фрагмента. но когда мы обращаемся к структуре общей информации skb shinfo = skb_shinfo (skb), shinfo-> nr_frags показывают ноль, значение nr_frags равно нулю. Есть ли в любом случае мы можем получить данные из фрагментов.

1 Ответ

0 голосов
/ 25 мая 2018

skb_shinfo(skb)->nr_frags показывает количество фрагментов с разбивкой по страницам, но это не единственное место, где данные могут быть помещены в skb за пределами линейной области данных. Также есть список фрагментов skb, прикрепленных к этому skb в skb_shinfo(skb)->frag_list (см. Skb_walk_frags () в ядре). Ваши данные могут быть там. Если нет, то трудно сказать, что происходит, не видя ваш код на всем пути в ядре от входа и до вызова sk_data_ready(). Это может быть просто ошибка где-то.

...