* [PATCH] lib/librte_vhost:fix can't send packet anymore after mempool is full again @ 2015-03-20 3:54 linhaifeng [not found] ` <1426823642-27360-1-git-send-email-haifeng.lin-hv44wF8Li93QT0dZR+AlfA@public.gmane.org> 0 siblings, 1 reply; 4+ messages in thread From: linhaifeng @ 2015-03-20 3:54 UTC (permalink / raw) To: dev-VfR2kkLFssw From: Linhaifeng <haifeng.lin-hv44wF8Li93QT0dZR+AlfA@public.gmane.org> 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 <haifeng.lin-hv44wF8Li93QT0dZR+AlfA@public.gmane.org> --- 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; } 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. */ -- 1.8.5.2.msysgit.0 ^ permalink raw reply related [flat|nested] 4+ messages in thread
[parent not found: <1426823642-27360-1-git-send-email-haifeng.lin-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>]
* Re: [PATCH] lib/librte_vhost:fix can't send packet anymore after mempool is full again [not found] ` <1426823642-27360-1-git-send-email-haifeng.lin-hv44wF8Li93QT0dZR+AlfA@public.gmane.org> @ 2015-03-20 6:36 ` Linhaifeng [not found] ` <550BBFD7.6030206-hv44wF8Li93QT0dZR+AlfA@public.gmane.org> 0 siblings, 1 reply; 4+ messages in thread From: Linhaifeng @ 2015-03-20 6:36 UTC (permalink / raw) To: dev-VfR2kkLFssw On 2015/3/20 11:54, linhaifeng wrote: > From: Linhaifeng <haifeng.lin-hv44wF8Li93QT0dZR+AlfA@public.gmane.org> > > 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 <haifeng.lin-hv44wF8Li93QT0dZR+AlfA@public.gmane.org> > --- > 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 ^ permalink raw reply [flat|nested] 4+ messages in thread
[parent not found: <550BBFD7.6030206-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>]
* Re: [PATCH] lib/librte_vhost:fix can't send packet anymore after mempool is full again [not found] ` <550BBFD7.6030206-hv44wF8Li93QT0dZR+AlfA@public.gmane.org> @ 2015-03-20 7:28 ` Ouyang, Changchun [not found] ` <F52918179C57134FAEC9EA62FA2F962511A68415-E2R4CRU6q/6iAffOGbnezLfspsVTdybXVpNB7YpNyf8@public.gmane.org> 0 siblings, 1 reply; 4+ messages in thread From: Ouyang, Changchun @ 2015-03-20 7:28 UTC (permalink / raw) To: Linhaifeng, dev-VfR2kkLFssw@public.gmane.org > -----Original Message----- > From: Linhaifeng [mailto:haifeng.lin-hv44wF8Li93QT0dZR+AlfA@public.gmane.org] > Sent: Friday, March 20, 2015 2:36 PM > To: dev-VfR2kkLFssw@public.gmane.org > Cc: Ouyang, Changchun; Xie, Huawei > Subject: Re: [PATCH] lib/librte_vhost:fix can't send packet anymore after > mempool is full again > > > > On 2015/3/20 11:54, linhaifeng wrote: > > From: Linhaifeng <haifeng.lin-hv44wF8Li93QT0dZR+AlfA@public.gmane.org> > > > > 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 <haifeng.lin-hv44wF8Li93QT0dZR+AlfA@public.gmane.org> > > --- > > 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' ? Make sense, I can review if you make a v2 patch Thanks Changchun ^ permalink raw reply [flat|nested] 4+ messages in thread
[parent not found: <F52918179C57134FAEC9EA62FA2F962511A68415-E2R4CRU6q/6iAffOGbnezLfspsVTdybXVpNB7YpNyf8@public.gmane.org>]
* Re: [PATCH] lib/librte_vhost:fix can't send packet anymore after mempool is full again [not found] ` <F52918179C57134FAEC9EA62FA2F962511A68415-E2R4CRU6q/6iAffOGbnezLfspsVTdybXVpNB7YpNyf8@public.gmane.org> @ 2015-03-21 3:58 ` Linhaifeng 0 siblings, 0 replies; 4+ messages in thread From: Linhaifeng @ 2015-03-21 3:58 UTC (permalink / raw) To: Ouyang, Changchun, dev-VfR2kkLFssw@public.gmane.org Hi, changchun & xie I have modify the path with your suggestions.Please review. Thank you. On 2015/3/20 15:28, Ouyang, Changchun wrote: > > >> -----Original Message----- >> From: Linhaifeng [mailto:haifeng.lin-hv44wF8Li93QT0dZR+AlfA@public.gmane.org] >> Sent: Friday, March 20, 2015 2:36 PM >> To: dev-VfR2kkLFssw@public.gmane.org >> Cc: Ouyang, Changchun; Xie, Huawei >> Subject: Re: [PATCH] lib/librte_vhost:fix can't send packet anymore after >> mempool is full again >> >> >> >> On 2015/3/20 11:54, linhaifeng wrote: >>> From: Linhaifeng <haifeng.lin-hv44wF8Li93QT0dZR+AlfA@public.gmane.org> >>> >>> 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 <haifeng.lin-hv44wF8Li93QT0dZR+AlfA@public.gmane.org> >>> --- >>> 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' ? > > Make sense, I can review if you make a v2 patch > Thanks > Changchun > > > > -- Regards, Haifeng ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-03-21 3:58 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-03-20 3:54 [PATCH] lib/librte_vhost:fix can't send packet anymore after mempool is full again linhaifeng [not found] ` <1426823642-27360-1-git-send-email-haifeng.lin-hv44wF8Li93QT0dZR+AlfA@public.gmane.org> 2015-03-20 6:36 ` Linhaifeng [not found] ` <550BBFD7.6030206-hv44wF8Li93QT0dZR+AlfA@public.gmane.org> 2015-03-20 7:28 ` Ouyang, Changchun [not found] ` <F52918179C57134FAEC9EA62FA2F962511A68415-E2R4CRU6q/6iAffOGbnezLfspsVTdybXVpNB7YpNyf8@public.gmane.org> 2015-03-21 3:58 ` Linhaifeng
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).