From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752122AbcF1HJt (ORCPT ); Tue, 28 Jun 2016 03:09:49 -0400 Received: from mx1.redhat.com ([209.132.183.28]:35080 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750753AbcF1HJr (ORCPT ); Tue, 28 Jun 2016 03:09:47 -0400 Date: Tue, 28 Jun 2016 10:09:42 +0300 From: "Michael S. Tsirkin" To: Jason Wang Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, virtualization@lists.linux-foundation.org, davem@davemloft.net, eric.dumazet@gmail.com, brouer@redhat.com Subject: Re: [PATCH net-next V2] tun: introduce tx skb ring Message-ID: <20160628100907-mutt-send-email-mst@redhat.com> References: <1465979897-4445-1-git-send-email-jasowang@redhat.com> <20160617033218-mutt-send-email-mst@redhat.com> <20160622211620-mutt-send-email-mst@redhat.com> <576B701F.2020105@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <576B701F.2020105@redhat.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Tue, 28 Jun 2016 07:09:46 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jun 23, 2016 at 01:14:07PM +0800, Jason Wang wrote: > > > On 2016年06月23日 02:18, Michael S. Tsirkin wrote: > > On Fri, Jun 17, 2016 at 03:41:20AM +0300, Michael S. Tsirkin wrote: > > > >Would it help to have ptr_ring_resize that gets an array of > > > >rings and resizes them both to same length? > > OK, here it is. Untested so far, and no skb wrapper. > > Pls let me know whether this is what you had in mind. > > Exactly what I want. > > Thanks Ok and this for skb_array --> skb_array: add wrappers for resizing Signed-off-by: Michael S. Tsirkin -- diff --git a/include/linux/skb_array.h b/include/linux/skb_array.h index c900708..7e01c1f 100644 --- a/include/linux/skb_array.h +++ b/include/linux/skb_array.h @@ -151,16 +151,24 @@ static inline int skb_array_init(struct skb_array *a, int size, gfp_t gfp) return ptr_ring_init(&a->ring, size, 0, gfp); } -void __skb_array_destroy_skb(void *ptr) +static void __skb_array_destroy_skb(void *ptr) { kfree_skb(ptr); } -int skb_array_resize(struct skb_array *a, int size, gfp_t gfp) +static inline int skb_array_resize(struct skb_array *a, int size, gfp_t gfp) { return ptr_ring_resize(&a->ring, size, gfp, __skb_array_destroy_skb); } +static inline int skb_raay_resize_multiple(struct skb_array **rings, int nrings, + int size, gfp_t gfp) +{ + BUILD_BUG_ON(offsetof(struct skb_array, ring)); + ptr_ring_resize_multiple((struct ptr_ring **)rings, nrings, size, gfp, + __skb_array_destroy_skb); +} + static inline void skb_array_cleanup(struct skb_array *a) { ptr_ring_cleanup(&a->ring, __skb_array_destroy_skb);