From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753751AbcIBLK0 (ORCPT ); Fri, 2 Sep 2016 07:10:26 -0400 Received: from p3plsmtps2ded04.prod.phx3.secureserver.net ([208.109.80.198]:53512 "EHLO p3plsmtps2ded04.prod.phx3.secureserver.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752898AbcIBLJ4 (ORCPT ); Fri, 2 Sep 2016 07:09:56 -0400 x-originating-ip: 72.167.245.219 From: kys@exchange.microsoft.com To: gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, devel@linuxdriverproject.org, olaf@aepfle.de, apw@canonical.com, vkuznets@redhat.com, jasowang@redhat.com, leann.ogasawara@canonical.com, alexng@microsoft.com Cc: "K. Y. Srinivasan" Subject: [PATCH 3/7] Drivers: hv: ring_buffer: use wrap around mappings in hv_copy{from,to}_ringbuffer() Date: Fri, 2 Sep 2016 05:58:21 -0700 Message-Id: <1472821105-7150-3-git-send-email-kys@exchange.microsoft.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1472821105-7150-1-git-send-email-kys@exchange.microsoft.com> References: <1472821013-7106-1-git-send-email-kys@exchange.microsoft.com> <1472821105-7150-1-git-send-email-kys@exchange.microsoft.com> Reply-To: kys@microsoft.com X-CMAE-Envelope: MS4wfGK8zhsVVYb1TxsPR0Eq2hQPvrwv0golr0ucLdj8ExHUX1ggk5WImBgxGjD5nlFRjVeFAlwQRhhKvssIorHuiSlc+yJJhhZcj5Be4gGyKanriWHEUsBb gXPTANquKhUPWIHvnsjpzOIHWs/tbdP/qaMH6/kXUaviSSQLJ69LZd45q5Bmp0KEOFY5Pbg97W/xxQtPw/2gTq+ypwAPtkk93pH6Sgad7+Elr5hagC57grO4 EkZdQjXJfrP1EApqfFLgZxoa2SLJA2L7OGWlivb3MVqX17bT3NcYRw9MFVkNPIla20tl/Kluc3cCjAnUZX/0T6hy5n1HzMTykoexAnOdBeTucmDlrY0wkUAb DtOLXjDR+b1qM4eJSOa1sz1lMe5gBmfi3MaUJXvQiaeOO0zT9R9/pQrG+UlIzDtuA5c8C6Ao0ISZEuRDs31PwR1xO1IE9MrF8DK3g8eEl2LGh/XPeQZEJGLo 4fUfufn0qrLs0z0L Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Vitaly Kuznetsov With wrap around mappings for ring buffers we can always use a single memcpy() to do the job. Signed-off-by: Vitaly Kuznetsov Signed-off-by: K. Y. Srinivasan Tested-by: Dexuan Cui --- drivers/hv/ring_buffer.c | 24 +++--------------------- 1 files changed, 3 insertions(+), 21 deletions(-) diff --git a/drivers/hv/ring_buffer.c b/drivers/hv/ring_buffer.c index 7e21c2c..08043da 100644 --- a/drivers/hv/ring_buffer.c +++ b/drivers/hv/ring_buffer.c @@ -172,18 +172,7 @@ static u32 hv_copyfrom_ringbuffer( void *ring_buffer = hv_get_ring_buffer(ring_info); u32 ring_buffer_size = hv_get_ring_buffersize(ring_info); - u32 frag_len; - - /* wrap-around detected at the src */ - if (destlen > ring_buffer_size - start_read_offset) { - frag_len = ring_buffer_size - start_read_offset; - - memcpy(dest, ring_buffer + start_read_offset, frag_len); - memcpy(dest + frag_len, ring_buffer, destlen - frag_len); - } else - - memcpy(dest, ring_buffer + start_read_offset, destlen); - + memcpy(dest, ring_buffer + start_read_offset, destlen); start_read_offset += destlen; start_read_offset %= ring_buffer_size; @@ -204,15 +193,8 @@ static u32 hv_copyto_ringbuffer( { void *ring_buffer = hv_get_ring_buffer(ring_info); u32 ring_buffer_size = hv_get_ring_buffersize(ring_info); - u32 frag_len; - - /* wrap-around detected! */ - if (srclen > ring_buffer_size - start_write_offset) { - frag_len = ring_buffer_size - start_write_offset; - memcpy(ring_buffer + start_write_offset, src, frag_len); - memcpy(ring_buffer, src + frag_len, srclen - frag_len); - } else - memcpy(ring_buffer + start_write_offset, src, srclen); + + memcpy(ring_buffer + start_write_offset, src, srclen); start_write_offset += srclen; start_write_offset %= ring_buffer_size; -- 1.7.4.1