Messages in this thread | | | Date | Fri, 6 Nov 2015 12:43:31 +0100 | Subject | Re: NETIF_F_GSO_SOFTWARE vs NETIF_F_GSO | From | "Jason A. Donenfeld" <> |
| |
On Fri, Nov 6, 2015 at 5:58 AM, Herbert Xu <herbert@gondor.apana.org.au> wrote: > I don't see anything fundamentally wrong with your idea. After > all what you're describing is the basis of GSO, i.e., letting > data stay in the form of super-packets for as long as we can. > > Of course there's going to be a lot of niggly bits that you'll > have to sort out to get it to work.
Okay, great. In that case, it's the niggly bits I need to wrestle with. Any nice convenience functions for this? Or pointers to examples?
Would it be best to (1) allocate a massive linear skb, and then bit by bit call skb_put (as in my example in the last email)? Or would it be best to (2) make individual packets, and then string them together in a FRAGLIST fashion (or is there no driver support for this)? Or would it be best (3) to some how use the array of 16 frags, and allocate with the alloc_skb_wth_frags function, and then super cumbersomely try to iterate over broken-up pages?
I think (3) is going to be super hard if not impossible for my setup. If there were some way of combining multiple skbs into a super packet, or if the fraglist was okay to use in this regard, that'd be a lifesaver. So far my approach with (1) hasn't been working.
| |