From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg0-f47.google.com (mail-pg0-f47.google.com [74.125.83.47]) by dpdk.org (Postfix) with ESMTP id 87A38D592 for ; Wed, 11 Jan 2017 18:36:07 +0100 (CET) Received: by mail-pg0-f47.google.com with SMTP id 194so22539164pgd.2 for ; Wed, 11 Jan 2017 09:36:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=l8LcUCP38NU6lS6RH1LXM57xVL11O9Rck2x95IXPQqw=; b=abEXmsT77B6/9cfON+K0eszjy4+wbb6WM93hJDsx5P1vGqaJLB4qLoUyvWWud219ph RnK/qvMoOiVfZVOvKtIzGodIhNfKlZElY3Z0H534WTAasiReEE57txYz2JAOZ40l3vo6 n0ZxYBP5+5aW16w7FzwP6g5Iu1lIqIS976jNEOR+b2OyN/VC2U1CELpTSB0x9f1WMl+O g0YPXt0UXHMa+MWBg50K/RbhVKe6RklCyHVK1sCChPdQa9KTxQo0CPDMLkA00qMt6wfz aLdczyHpITAxallwaSaHeBRZo4ESMp3PZrTAg93PAWvIlI7WDb/a0wmuSsxmzshbaGBG ik+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=l8LcUCP38NU6lS6RH1LXM57xVL11O9Rck2x95IXPQqw=; b=KCNCDWwF49/ZQ2YKgFPpbq2ICnsS5U57YNq7LPvp5M1QckeNbtWMvY0cVvjXcZcFVz 5Q0agVj5XcOo4jMYZ70+zuD/7YDm8noQunMIwq/DVNrehkpnl1wpjR0Rk49ZRCcl+Rve X+RabxmrP4mwOStN0mHgJZzNAzWwFkGmEHnvY42+C1O1nrhZ+F/MMjec2096BtugyyzL vstwMzY+cj9ayjlNtbB87X7JdsyofGsjdP9FMm5GhTkwL/bewoldiFnItQJKWs64SRaQ fvPQwWRU9U4EYB3Vo+wVgy0/ri7mg+x4fN4T3PMwx8M4y7QawCp2D0uvAsaX8uV7AU+h r+2w== X-Gm-Message-State: AIkVDXKNtzef8RSXF5eLn/1pGTC5TDUBki8l9wHadtqQ6F1KADZcdrIr9wHg30CkSmO40Q== X-Received: by 10.99.211.21 with SMTP id b21mr12303969pgg.120.1484156166707; Wed, 11 Jan 2017 09:36:06 -0800 (PST) Received: from xeon-e3 (204-195-18-65.wavecable.com. [204.195.18.65]) by smtp.gmail.com with ESMTPSA id e88sm15324855pfb.16.2017.01.11.09.36.06 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 11 Jan 2017 09:36:06 -0800 (PST) Date: Wed, 11 Jan 2017 09:35:59 -0800 From: Stephen Hemminger To: "Ananyev, Konstantin" Cc: Sergey Vyazmitinov , "olivier.matz@6wind.com" , "Yigit, Ferruh" , "dev@dpdk.org" Message-ID: <20170111093559.753a0fc9@xeon-e3> In-Reply-To: <2601191342CEEE43887BDE71AB9772583F103F8F@irsmsx105.ger.corp.intel.com> References: <1483048216-2936-1-git-send-email-s.vyazmitinov@brain4net.com> <20170111081759.7b1ee146@xeon-e3> <2601191342CEEE43887BDE71AB9772583F103F8F@irsmsx105.ger.corp.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: Re: [dpdk-dev] [PATCH] kni: use bulk functions to allocate and free mbufs X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2017 17:36:08 -0000 On Wed, 11 Jan 2017 17:28:21 +0000 "Ananyev, Konstantin" wrote: > > -----Original Message----- > > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Stephen Hemminger > > Sent: Wednesday, January 11, 2017 4:18 PM > > To: Sergey Vyazmitinov > > Cc: olivier.matz@6wind.com; Yigit, Ferruh ; dev@dpdk.org > > Subject: Re: [dpdk-dev] [PATCH] kni: use bulk functions to allocate and free mbufs > > > > On Fri, 30 Dec 2016 04:50:16 +0700 > > Sergey Vyazmitinov wrote: > > > > > /** > > > + * Free n packets mbuf back into its original mempool. > > > + * > > > + * Free each mbuf, and all its segments in case of chained buffers. Each > > > + * segment is added back into its original mempool. > > > + * > > > + * @param mp > > > + * The packets mempool. > > > + * @param mbufs > > > + * The packets mbufs array to be freed. > > > + * @param n > > > + * Number of packets. > > > + */ > > > +static inline void rte_pktmbuf_free_bulk(struct rte_mempool *mp, > > > + struct rte_mbuf **mbufs, unsigned n) > > > +{ > > > + struct rte_mbuf *mbuf, *m_next; > > > + unsigned i; > > > + for (i = 0; i < n; ++i) { > > > + mbuf = mbufs[i]; > > > + __rte_mbuf_sanity_check(mbuf, 1); > > > + > > > + mbuf = mbuf->next; > > > + while (mbuf != NULL) { > > > + m_next = mbuf->next; > > > + rte_pktmbuf_free_seg(mbuf); > > > + mbuf = m_next; > > > + } > > > + } > > > + rte_mempool_put_bulk(mp, (void * const *)mbufs, n); > > > +} > > > > The mbufs may come from different pools. You need to handle that. > > I suppose both stituations are possible: > 1) user knows off-hand that all mbufs in the group are from the same mempool > 2) user can't guarantee that all mbufs in the group are from same mempool. > > As I understand that patch is for case 1) only. > For 2) it could be a separate function and separate patch. > > Konstantin > > Please don't make unnecessary assumptions in pursuit of minor optimizations. It is trivial to write a correct free bulk that handles pool changing. Also the free_seg could be bulked as well.