* [dpdk-dev] [PATCH] lib/librte_vhost:fix can't send packet anymore after mempool is full again
@ 2015-03-20 3:54 linhaifeng
2015-03-20 6:36 ` Linhaifeng
0 siblings, 1 reply; 4+ messages in thread
From: linhaifeng @ 2015-03-20 3:54 UTC (permalink / raw)
To: dev
From: Linhaifeng <haifeng.lin@huawei.com>
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@huawei.com>
---
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 [flat|nested] 4+ messages in thread
* Re: [dpdk-dev] [PATCH] lib/librte_vhost:fix can't send packet anymore after mempool is full again
2015-03-20 3:54 [dpdk-dev] [PATCH] lib/librte_vhost:fix can't send packet anymore after mempool is full again linhaifeng
@ 2015-03-20 6:36 ` Linhaifeng
2015-03-20 7:28 ` Ouyang, Changchun
0 siblings, 1 reply; 4+ messages in thread
From: Linhaifeng @ 2015-03-20 6:36 UTC (permalink / raw)
To: dev
On 2015/3/20 11:54, linhaifeng wrote:
> From: Linhaifeng <haifeng.lin@huawei.com>
>
> 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@huawei.com>
> ---
> 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
* Re: [dpdk-dev] [PATCH] lib/librte_vhost:fix can't send packet anymore after mempool is full again
2015-03-20 6:36 ` Linhaifeng
@ 2015-03-20 7:28 ` Ouyang, Changchun
2015-03-21 3:58 ` Linhaifeng
0 siblings, 1 reply; 4+ messages in thread
From: Ouyang, Changchun @ 2015-03-20 7:28 UTC (permalink / raw)
To: Linhaifeng, dev
> -----Original Message-----
> From: Linhaifeng [mailto:haifeng.lin@huawei.com]
> Sent: Friday, March 20, 2015 2:36 PM
> To: dev@dpdk.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@huawei.com>
> >
> > 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@huawei.com>
> > ---
> > 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
* Re: [dpdk-dev] [PATCH] lib/librte_vhost:fix can't send packet anymore after mempool is full again
2015-03-20 7:28 ` Ouyang, Changchun
@ 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
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@huawei.com]
>> Sent: Friday, March 20, 2015 2:36 PM
>> To: dev@dpdk.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@huawei.com>
>>>
>>> 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@huawei.com>
>>> ---
>>> 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 [dpdk-dev] [PATCH] lib/librte_vhost:fix can't send packet anymore after mempool is full again linhaifeng
2015-03-20 6:36 ` Linhaifeng
2015-03-20 7:28 ` Ouyang, Changchun
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).