On Thu, Aug 15, 2019 at 6:28 PM Yao, Chengqiang <chengqiang....@intel.com> wrote: > > Hi William, > > That's what memif_refill_queue() does. When you call this function, > libmemif knows you are done with these buffers. > OK thank you William
> > Best Regards, > Chengqiang Yao > > > > -----Original Message----- > From: William Tu <u9012...@gmail.com> > Sent: 2019年8月15日 23:26 > To: Yao, Chengqiang <chengqiang....@intel.com> > Cc: vpp-dev@lists.fd.io > Subject: Re: [vpp-dev] Question about libmemif API > > On Thu, Aug 15, 2019 at 8:02 AM William Tu <u9012...@gmail.com> wrote: > > > > Hi Chengqiang, > > > > Thanks for your reply. > > > > On Wed, Aug 14, 2019 at 11:52 PM Yao, Chengqiang > > <chengqiang....@intel.com> wrote: > > > > > > Hi William, > > > > > > You do not need to copy the packets out of memif. Once you finish > > > processing all these packets, call memif_refill_queue() function to free > > > these buffers. Let's say if you receive 32 packets in memif_rx_burst > > > function, after processing, call memif_refill_queue with count=32 to free. > > > > > > > But if I calling memif_refill_queue() with count=32, then where does > > libmemif get the 32 free buffer to refill on rx? > > And if my code is not copying packet buffer from dev->rx_bufs, how > > does libmemif know that I'm done with these > > 32 packet buffer and libmemif can re-cycle them back to rx? > > > Looking at the source code, > > When calling memif_rx_burst(), users get rx buffer from b0->data = > memif_get_buffer (c, ring, cur_slot & mask); > > at index cur_slot and memif_get_buffer() returns buffer at > conn->regions[ring->desc[index].region].addr + ring->desc[index].offset > > So users are getting the internal packet buffer from conn->regions I'd assume > I have to tell libmemif that I'm done with this buffer and libmemif can reuse > it later. > > Thank you > William > > > Regards, > > William > > > > > > > > Best Regards, > > > Chengqiang Yao > > > > > > > > > > > > -----Original Message----- > > > From: vpp-dev@lists.fd.io <vpp-dev@lists.fd.io> On Behalf Of William > > > Tu > > > Sent: 2019年8月15日 2:07 > > > To: vpp-dev@lists.fd.io > > > Subject: [vpp-dev] Question about libmemif API > > > > > > Hi, > > > > > > I'm working on using libmemif in OVS. > > > https://patchwork.ozlabs.org/patch/1140858/ > > > > > > While using the API, one question I have is, when I call > > > err = memif_rx_burst(dev->handle, qid, dev->rx_bufs, > > > NETDEV_MAX_BURST, &recv); > > > > > > There are 'recv' number of packets are at dev->rx_bufs, do I have to copy > > > the packet buffer immediately to my master side? For example, I received > > > 32 packets from memif_rx_burst, and I might process these packets in > > > different order. Once done, is there an API to free each specific packet > > > buffer back to memif buffer pool? > > > > > > Now the memif_refill_queue() can only specify number of buffers to > > > refill, not which buffer. > > > > > > Thanks > > > William > > > -=-=-=-=-=-=-=-=-=-=-=- > > > Links: You receive all messages sent to this group. > > > > > > View/Reply Online (#13743): > > > https://lists.fd.io/g/vpp-dev/message/13743 > > > Mute This Topic: https://lists.fd.io/mt/32866729/675822 > > > Group Owner: vpp-dev+ow...@lists.fd.io > > > Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub > > > [u9012...@gmail.com] > > > -=-=-=-=-=-=-=-=-=-=-=-
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#13780): https://lists.fd.io/g/vpp-dev/message/13780 Mute This Topic: https://lists.fd.io/mt/32866729/21656 Group Owner: vpp-dev+ow...@lists.fd.io Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-