From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 7F611F8C0 for ; Wed, 11 Jan 2017 18:28:25 +0100 (CET) Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga101.fm.intel.com with ESMTP; 11 Jan 2017 09:28:24 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,346,1477983600"; d="scan'208";a="47880178" Received: from irsmsx153.ger.corp.intel.com ([163.33.192.75]) by orsmga004.jf.intel.com with ESMTP; 11 Jan 2017 09:28:23 -0800 Received: from irsmsx105.ger.corp.intel.com ([169.254.7.38]) by IRSMSX153.ger.corp.intel.com ([169.254.9.160]) with mapi id 14.03.0248.002; Wed, 11 Jan 2017 17:28:22 +0000 From: "Ananyev, Konstantin" To: Stephen Hemminger , Sergey Vyazmitinov CC: "olivier.matz@6wind.com" , "Yigit, Ferruh" , "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH] kni: use bulk functions to allocate and free mbufs Thread-Index: AQHSbCZ0kPj1UHLXZU+5SG545LdluKEzhxEA Date: Wed, 11 Jan 2017 17:28:21 +0000 Message-ID: <2601191342CEEE43887BDE71AB9772583F103F8F@irsmsx105.ger.corp.intel.com> References: <1483048216-2936-1-git-send-email-s.vyazmitinov@brain4net.com> <20170111081759.7b1ee146@xeon-e3> In-Reply-To: <20170111081759.7b1ee146@xeon-e3> Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [163.33.239.182] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 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:28:26 -0000 > -----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@d= pdk.org > Subject: Re: [dpdk-dev] [PATCH] kni: use bulk functions to allocate and f= ree mbufs >=20 > On Fri, 30 Dec 2016 04:50:16 +0700 > Sergey Vyazmitinov wrote: >=20 > > /** > > + * Free n packets mbuf back into its original mempool. > > + * > > + * Free each mbuf, and all its segments in case of chained buffers. Ea= ch > > + * 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 =3D 0; i < n; ++i) { > > + mbuf =3D mbufs[i]; > > + __rte_mbuf_sanity_check(mbuf, 1); > > + > > + mbuf =3D mbuf->next; > > + while (mbuf !=3D NULL) { > > + m_next =3D mbuf->next; > > + rte_pktmbuf_free_seg(mbuf); > > + mbuf =3D m_next; > > + } > > + } > > + rte_mempool_put_bulk(mp, (void * const *)mbufs, n); > > +} >=20 > 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 mempoo= l 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