The sk_buff has two places where it can store the next fragmentation data:
skb_shinfo(head)->frag_list
skb_shinfo(head)->frags[]
What are the differences between these two ways to handle fragmentation?
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
Both are used for different cases.
frags[]
When your device supports scatter-gather I/O, and you want it to do the combining of data, etc., you can populate the
frags[]structure starting with the second fragment till the nth fragment. The first fragment is always specified by thedataandtailpointers. The rest of the fragments are filled in thefrags[]structure. If you don’t use scatter gather, this variable is empty.frag_list
This is the list of IP fragments. This will be filled during
ip_push_pending_frames.Say your
sk_buffsare in this arrangement,After
ip_push_pending_framesis calledSimply put
frags[]are for scatter-gather I/O buffersfrag_listis for IP fragments