From mboxrd@z Thu Jan 1 00:00:00 1970 From: Linhaifeng Subject: Re: [PATCH] lib/librte_vhost:fix can't send packet anymore after mempool is full again Date: Fri, 20 Mar 2015 14:36:07 +0800 Message-ID: <550BBFD7.6030206@huawei.com> References: <1426823642-27360-1-git-send-email-haifeng.lin@huawei.com> Mime-Version: 1.0 Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit To: Return-path: In-Reply-To: <1426823642-27360-1-git-send-email-haifeng.lin-hv44wF8Li93QT0dZR+AlfA@public.gmane.org> 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" On 2015/3/20 11:54, linhaifeng wrote: > From: Linhaifeng > > When failed to malloc buffer from mempool we just update last_used_idx but > not used->idx so after many times vhost thought have handle all packets > but virtio_net thought vhost have not handle all packets and will not > update avail->idx. > > Signed-off-by: Linhaifeng > --- > lib/librte_vhost/vhost_rxtx.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/lib/librte_vhost/vhost_rxtx.c b/lib/librte_vhost/vhost_rxtx.c > index 535c7a1..93a8fff 100644 > --- a/lib/librte_vhost/vhost_rxtx.c > +++ b/lib/librte_vhost/vhost_rxtx.c > @@ -609,7 +609,7 @@ rte_vhost_dequeue_burst(struct virtio_net *dev, uint16_t queue_id, > if (unlikely(m == NULL)) { > RTE_LOG(ERR, VHOST_DATA, > "Failed to allocate memory for mbuf.\n"); > - return entry_success; > + goto finish; or use 'break' replace of 'goto' ? > } > seg_offset = 0; > seg_avail = m->buf_len - RTE_PKTMBUF_HEADROOM; > @@ -721,6 +721,7 @@ rte_vhost_dequeue_burst(struct virtio_net *dev, uint16_t queue_id, > entry_success++; > } > > +finish: > rte_compiler_barrier(); > vq->used->idx += entry_success; > /* Kick guest if required. */ > -- Regards, Haifeng