On Thu, Jan 25, 2018 at 12:37 AM, Stephen Hemminger <stephen@xxxxxxxxxxxxxxxxxx> wrote: > On Wed, 24 Jan 2018 14:21:30 +0800 > lantianyu1986@xxxxxxxxx wrote: > >> From: Tianyu Lan <Tianyu.Lan@xxxxxxxxxxxxx> >> >> The "next" variable is redundant in hv_get_next_write_location(). >> This patch is to remove it and return write_index directly. >> >> Signed-off-by: Tianyu Lan <Tianyu.Lan@xxxxxxxxxxxxx> >> --- >> drivers/hv/ring_buffer.c | 4 +--- >> 1 file changed, 1 insertion(+), 3 deletions(-) >> >> diff --git a/drivers/hv/ring_buffer.c b/drivers/hv/ring_buffer.c >> index 12eb8ca..71558e7 100644 >> --- a/drivers/hv/ring_buffer.c >> +++ b/drivers/hv/ring_buffer.c >> @@ -82,9 +82,7 @@ static void hv_signal_on_write(u32 old_write, struct vmbus_channel *channel) >> static inline u32 >> hv_get_next_write_location(struct hv_ring_buffer_info *ring_info) >> { >> - u32 next = ring_info->ring_buffer->write_index; >> - >> - return next; >> + return ring_info->ring_buffer->write_index; >> } >> >> /* Set the next write location for the specified ring buffer. */ > > Looks good. > But let's go farther since function is only used in one location in the file > just eliminate it completely and do simple variable references. > > The get/set functions in this file are unnecessary. Yes, agree and will update patch. > > Better still it is possible to replace the lock based ring structure > with a compare-exchange solution. There are several read/write operations of ring structure in the hv_ringbuffer_write() and these operations should be under protection. Especially for ring_buffer->write_index, we need to read it to calculate available write buffer, determine write position and then update it after writing buffer. This sequence should be under protection, right? -- Best regards Tianyu Lan _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel