From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Clark, Gilbert" Subject: Getting started - sanity check Date: Sat, 9 May 2015 16:27:12 +0000 Message-ID: <1431188832058.4524@ohio.edu> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable To: "dev-VfR2kkLFssw@public.gmane.org" Return-path: Content-Language: en-US List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-VfR2kkLFssw@public.gmane.org Sender: "dev" Hi folks: I'm brand new to DPDK.=A0 Read about it off and on occasionally, but never = had the chance to sit down and play with things until now. =A0It's been fun= so far: just been working on a few toy applications to get myself started. I have run into a question, though: when calling rte_eth_tx_burst with a ri= ng-backed PMD I've set up, the mbufs I've sent never seem to be freed.=A0 T= his seems to make some degree of sense, but ... since I'm new, and because = the documentation says rte_eth_tx_burst should eventually free mbufs that a= re sent [1], I wanted to make sure I'm on track and not just misunderstandi= ng the way something works [2]. Thanks, Gilbert Clark [1] From http://dpdk.org/doc/api/rte__ethdev_8h.html=A0: It is the responsibility of the rte_eth_tx_burst() function to transparentl= y free the memory buffers of packets previously sent [2] From lib/librte_pmd_ring.c: static uint16_t eth_ring_tx(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs) { void **ptrs =3D (void *)&bufs[0]; struct ring_queue *r =3D q; const uint16_t nb_tx =3D (uint16_t)rte_ring_enqueue_burst(r->rng, ptrs, nb_bufs); if (r->rng->flags & RING_F_SP_ENQ) { r->tx_pkts.cnt +=3D nb_tx; r->err_pkts.cnt +=3D nb_bufs - nb_tx; } else { rte_atomic64_add(&(r->tx_pkts), nb_tx); rte_atomic64_add(&(r->err_pkts), nb_bufs - nb_tx); } return nb_tx; } This doesn't ever appear to free a transmitted mbuf ... unless there's code= to do that somewhere else that I'm missing?