>-----Original Message----- >From: Herbert Xu [mailto:herbert@xxxxxxxxxxxxxxxxxxx] >Sent: Sunday, June 27, 2010 2:15 PM >To: Dong, Eddie >Cc: Xin, Xiaohui; Stephen Hemminger; netdev@xxxxxxxxxxxxxxx; kvm@xxxxxxxxxxxxxxx; >linux-kernel@xxxxxxxxxxxxxxx; mst@xxxxxxxxxx; mingo@xxxxxxx; davem@xxxxxxxxxxxxx; >jdike@xxxxxxxxxxxxxxx >Subject: Re: [RFC PATCH v7 01/19] Add a new structure for skb buffer from external. > >On Fri, Jun 25, 2010 at 09:03:46AM +0800, Dong, Eddie wrote: >> >> In current patch, each SKB for the assigned device (SRIOV VF or NIC or a complete >queue pairs) uses the buffer from guest, so it eliminates copy completely in software and >requires hardware to do so. If we can have an additonal place to store the buffer per skb (may >cause copy later on), we can do copy later on or re-post the buffer to assigned NIC driver >later on. But that may be not very clean either :( > >OK, if I understand you correctly then I don't think have a >problem. With your current patch-set you have exactly the same >situation when the skb->data is reallocated as a kernel buffer. > When will skb->data to be reallocated? May you point me the code path? >This is OK because as you correctly argue, it is a rare situation. > >With my proposal you will need to get this extra external buffer >in even less cases, because you'd only need to do it if the skb >head grows, which only happens if it becomes encapsulated. >So let me explain it in a bit more detail: > >Our packet starts out as a purely non-linear skb, i.e., skb->head >contains nothing and all the page frags come from the guest. > >During host processing we may pull data into skb->head but the >first frag will remain unless we pull all of it. If we did do >that then you would have a free external buffer anyway. > >Now in the common case the header may be modified or pulled, but >it very rarely grows. So you can just copy the header back into >the first frag just before we give it to the guest. > Since the data is still there, so recompute the page offset and size is ok, right? >Only in the case where the packet header grows (e.g., encapsulation) >would you need to get an extra external buffer. > >Cheers, >-- >Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> >Home Page: http://gondor.apana.org.au/~herbert/ >PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html