On Sat, 2016-04-09 at 20:18 -0400, Sowmini Varadhan wrote: > On (04/07/16 07:16), Eric Dumazet wrote: > > Use skb split like TCP in output path ? > > Really, pskb_expand_head() is not supposed to copy payload ;) > > Question- how come skb_split doesnt have to deal with frag_list > and do a skb_walk_frags()? Couldn't the split-line be somewhere > in the frag_list? Also even for the skb_split_inside_header, > dont we have to set > skb_shinfo(skb1)->frag_list = skb_shinfo(skb)->frag_list; > and cut loose the skb_shinfo(skb)->frag_list? > > As I try to mimic skb_split in some new set of "skb_carve" > funtions, I'm running into all the various frag_list cases. I'm > afraid I might end up needing most of the stuff under the "Pure > masohism" (sic) comment in __pskb_pull_tail(). >
The helper was written for TCP I guess. TCP in output path never uses skb_shinfo(skb)->frag_list : It is guaranteed to be NULL for all skbs.