Subject: Re: [RFC] defer skb allocation in virtio_net -- mergable buff part

From: Shirley Ma <[email-masked]>
Date: Fri, 18 Sep 2009 10:04:05 -0700

Hello Michael,

I am working on the patch to address the question you raised below. I am
adding one more function -- destroy_buf in virtqueue_ops, so we don't
need to maintain the list of pending buffers in upper layer (like
virtio_net), when the device is shutdown or removed, this buffer free
func will be called to release all pending buffers in virtio_ring on
behalf of virtio_net.

The rest of comments are minor. The new patch will defer skb allocation
for both mergable and none-mergable buffers.

Thanks
Shirley

On Tue, 2009-08-25 at 14:41 +0300, Michael S. Tsirkin wrote:
> >  #define VIRTNET_SEND_COMMAND_SG_MAX    2
> >  
> > +struct page_list
> > +{
> 
> Kernel style is "struct page_list {".
> Also, prefix with virtnet_?
> 
> > +     struct page *page;
> > +     struct list_head list;
> > +};
> > +
> >  struct virtnet_info
> >  {
> >       struct virtio_device *vdev;
> > @@ -72,6 +79,8 @@ struct virtnet_info
> >  
> >       /* Chain pages by the private ptr. */
> >       struct page *pages;
> 
> Do we need the pages list now? Can we do without?
> 
> Pls document fields below.
> 
> > +     struct list_head used_pages;
> 
> Seems a waste to have this list just for dev down.
> Extend virtio to give us all buffers from vq
> on shutdown?
>