Message ID | 1303328648.19336.24.camel@localhost.localdomain (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wed, 2011-04-20 at 12:44 -0700, Shirley Ma wrote: > This zerocopy flag is used to support device DMA userspace buffers. > > Signed-off-by: Shirley Ma <xma@us.ibm.com> > --- > > include/linux/netdevice.h | 3 +++ > 1 files changed, 3 insertions(+), 0 deletions(-) > > diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h > index 0249fe7..0998d3d 100644 > --- a/include/linux/netdevice.h > +++ b/include/linux/netdevice.h > @@ -1067,6 +1067,9 @@ struct net_device { > #define NETIF_F_RXHASH (1 << 28) /* Receive hashing offload */ > #define NETIF_F_RXCSUM (1 << 29) /* Receive checksumming offload */ > > +/* bit 29 is for device to map userspace buffers -- zerocopy */ > +#define NETIF_F_ZEROCOPY (1 << 29) Look above. Ben. > /* Segmentation offload features */ > #define NETIF_F_GSO_SHIFT 16 > #define NETIF_F_GSO_MASK 0x00ff0000 > > > -- > To unsubscribe from this list: send the line "unsubscribe netdev" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html
Thanks. I need to update it to 30 bit. Shirley -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wed, Apr 20, 2011 at 12:44:08PM -0700, Shirley Ma wrote: > This zerocopy flag is used to support device DMA userspace buffers. > > Signed-off-by: Shirley Ma <xma@us.ibm.com> > --- > > include/linux/netdevice.h | 3 +++ > 1 files changed, 3 insertions(+), 0 deletions(-) > > diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h > index 0249fe7..0998d3d 100644 > --- a/include/linux/netdevice.h > +++ b/include/linux/netdevice.h > @@ -1067,6 +1067,9 @@ struct net_device { > #define NETIF_F_RXHASH (1 << 28) /* Receive hashing offload */ > #define NETIF_F_RXCSUM (1 << 29) /* Receive checksumming offload */ > > +/* bit 29 is for device to map userspace buffers -- zerocopy */ This comment should specify what exactly is the promise the device makes by setting this flag. Specifically, the condition is that no skb fragments are used after the uinfo callback has been called. The way it's implemented, it probably means the device should not use any of skb_clone, expand head etc. > +#define NETIF_F_ZEROCOPY (1 << 29) > + > /* Segmentation offload features */ > #define NETIF_F_GSO_SHIFT 16 > #define NETIF_F_GSO_MASK 0x00ff0000 > -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, 2011-05-02 at 13:42 +0300, Michael S. Tsirkin wrote: > This comment should specify what exactly is the promise the > device makes by setting this flag. Specifically, the > condition is that no skb fragments are used > after the uinfo callback has been called. > > The way it's implemented, it probably means the device > should not use any of skb_clone, expand head etc. Agree. Or maybe force a copy when device uses skb_clone, expand head ...? Thanks Shirley -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, May 02, 2011 at 11:47:08AM -0700, Shirley Ma wrote: > On Mon, 2011-05-02 at 13:42 +0300, Michael S. Tsirkin wrote: > > This comment should specify what exactly is the promise the > > device makes by setting this flag. Specifically, the > > condition is that no skb fragments are used > > after the uinfo callback has been called. > > > > The way it's implemented, it probably means the device > > should not use any of skb_clone, expand head etc. > > Agree. Or maybe force a copy when device uses skb_clone, expand > head ...? > > Thanks > Shirley Copy from userspace upfront without locking is probably cheaper?
On Mon, 2011-05-02 at 22:53 +0300, Michael S. Tsirkin wrote: > On Mon, May 02, 2011 at 11:47:08AM -0700, Shirley Ma wrote: > > On Mon, 2011-05-02 at 13:42 +0300, Michael S. Tsirkin wrote: > > > This comment should specify what exactly is the promise the > > > device makes by setting this flag. Specifically, the > > > condition is that no skb fragments are used > > > after the uinfo callback has been called. > > > > > > The way it's implemented, it probably means the device > > > should not use any of skb_clone, expand head etc. > > > > Agree. Or maybe force a copy when device uses skb_clone, expand > > head ...? > > > > Thanks > > Shirley > > Copy from userspace upfront without locking is probably cheaper? Better to prevent this kind of skbs to be used in skb_clone, expand head for now. Thanks Shirley -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, 2011-05-03 at 10:42 -0700, Shirley Ma wrote: > Better to prevent this kind of skbs to be used in skb_clone, expand > head > for now. I looked at the code, skb_clone shouldn't have any problem since ubuf callback is only called after the lower device DMA has done. I can modify the zerocopy len to 256 bytes so expand head should be OK as well. So we only need to prevent recycle skb. I also checked the device drivers, only a few device do RX buffers recycle. So there shouldn't be any problem. I will add more comments here to make sure when ZEROCOPY flag is set, the ubuf callback should only be called when last reference to this skb is gone. Thanks Shirley -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 0249fe7..0998d3d 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -1067,6 +1067,9 @@ struct net_device { #define NETIF_F_RXHASH (1 << 28) /* Receive hashing offload */ #define NETIF_F_RXCSUM (1 << 29) /* Receive checksumming offload */ +/* bit 29 is for device to map userspace buffers -- zerocopy */ +#define NETIF_F_ZEROCOPY (1 << 29) + /* Segmentation offload features */ #define NETIF_F_GSO_SHIFT 16 #define NETIF_F_GSO_MASK 0x00ff0000
This zerocopy flag is used to support device DMA userspace buffers. Signed-off-by: Shirley Ma <xma@us.ibm.com> --- include/linux/netdevice.h | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html