> -----Original Message----- > From: Vitaly Kuznetsov [mailto:vkuznets@xxxxxxxxxx] > Sent: Friday, June 10, 2016 2:47 AM > To: devel@xxxxxxxxxxxxxxxxxxxxxx > Cc: linux-kernel@xxxxxxxxxxxxxxx; KY Srinivasan <kys@xxxxxxxxxxxxx>; Haiyang > Zhang <haiyangz@xxxxxxxxxxxxx> > Subject: [PATCH 0/4] Drivers: hv: ring_buffer: make in-place consumption > always possible > > K. Y., > > I'd like to accompany your netvsc performance improvement work by making > in-place consumption of VMBus packets always possible. Currently we forbid > it when a packet 'wraps around' the ring so we can't provide a single > pointer to it. > > The idea if this series is dead simple: let's make a single virtual mapping > for two copies (actually, two sets of pages which consist the ring buffer) > of the ring buffer. With such a mapping we can always provide a pointers > for in-place consumption to drivers. Copy path can also benefit from such > mappings as we eliminate the need for conditional checking in copy_to/ > copy_from functions and use a single memcpy(). > > Lightly tested with 'netvsc: Use the new in-place consumption APIs in the > rx path' patch and with storvsc driver. Thank you Vitaly. We will further test it. K. Y > > Vitaly Kuznetsov (4): > Drivers: hv: cleanup vmbus_open() for wrap around mappings > Drivers: hv: ring_buffer: wrap around mappings for ring buffers > Drivers: hv: ring_buffer: use wrap around mappings in > hv_copy{from,to}_ringbuffer() > Drivers: hv: ring_buffer: count on wrap around mappings in > get_next_pkt_raw() > > drivers/hv/channel.c | 68 ++++++++++++++++++++++++----------------------- > drivers/hv/hyperv_vmbus.h | 4 +-- > drivers/hv/ring_buffer.c | 61 ++++++++++++++++++++++++------------------ > include/linux/hyperv.h | 32 ++++++++-------------- > 4 files changed, 83 insertions(+), 82 deletions(-) > > -- > 2.5.5 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel