Message ID | 1426902420-21492-1-git-send-email-haifeng.lin@huawei.com (mailing list archive) |
---|---|
State | Accepted, archived |
Headers |
Return-Path: <dev-bounces@dpdk.org> X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 3FEAD5A76; Sat, 21 Mar 2015 02:47:08 +0100 (CET) Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [58.251.152.64]) by dpdk.org (Postfix) with ESMTP id 2B92C5A38 for <dev@dpdk.org>; Sat, 21 Mar 2015 02:47:04 +0100 (CET) Received: from 172.24.2.119 (EHLO szxeml432-hub.china.huawei.com) ([172.24.2.119]) by szxrg01-dlp.huawei.com (MOS 4.3.7-GA FastPath queued) with ESMTP id CLC52987; Sat, 21 Mar 2015 09:47:02 +0800 (CST) Received: from localhost (10.177.19.115) by szxeml432-hub.china.huawei.com (10.82.67.209) with Microsoft SMTP Server id 14.3.158.1; Sat, 21 Mar 2015 09:47:01 +0800 From: linhaifeng <haifeng.lin@huawei.com> To: <dev@dpdk.org> Date: Sat, 21 Mar 2015 09:47:00 +0800 Message-ID: <1426902420-21492-1-git-send-email-haifeng.lin@huawei.com> X-Mailer: git-send-email 1.8.5.2.msysgit.0 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.177.19.115] X-CFilter-Loop: Reflected Subject: [dpdk-dev] [PATCH v3] lib/librte_vhost: update used->idx when allocation of mbuf fails X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK <dev.dpdk.org> List-Unsubscribe: <http://dpdk.org/ml/options/dev>, <mailto:dev-request@dpdk.org?subject=unsubscribe> List-Archive: <http://dpdk.org/ml/archives/dev/> List-Post: <mailto:dev@dpdk.org> List-Help: <mailto:dev-request@dpdk.org?subject=help> List-Subscribe: <http://dpdk.org/ml/listinfo/dev>, <mailto:dev-request@dpdk.org?subject=subscribe> Errors-To: dev-bounces@dpdk.org Sender: "dev" <dev-bounces@dpdk.org> |
Commit Message
Linhaifeng
March 21, 2015, 1:47 a.m. UTC
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 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Comments
cc changchun.ouyang@intel.com cc huawei.xie@intel.com On 2015/3/21 9:47, 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 | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/lib/librte_vhost/vhost_rxtx.c b/lib/librte_vhost/vhost_rxtx.c > index 535c7a1..510ffe8 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; > + break; > } > seg_offset = 0; > seg_avail = m->buf_len - RTE_PKTMBUF_HEADROOM; >
> -----Original Message----- > From: linhaifeng [mailto:haifeng.lin@huawei.com] > Sent: Saturday, March 21, 2015 9:47 AM > To: dev@dpdk.org > Cc: Ouyang, Changchun; Xie, Huawei > Subject: [PATCH v3] lib/librte_vhost: update used->idx when allocation of > mbuf fails > > 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> Acked-by: Changchun Ouyang <changchun.ouyang@intel.com>
On 3/22/2015 8:08 PM, Ouyang, Changchun wrote: > >> -----Original Message----- >> From: linhaifeng [mailto:haifeng.lin@huawei.com] >> Sent: Saturday, March 21, 2015 9:47 AM >> To: dev@dpdk.org >> Cc: Ouyang, Changchun; Xie, Huawei >> Subject: [PATCH v3] lib/librte_vhost: update used->idx when allocation of >> mbuf fails >> >> 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> > Acked-by: Changchun Ouyang <changchun.ouyang@intel.com> > > > Acked-by: Huawei Xie <huawei.xie@intel.com> This patch fix the issue. Simple solution like other PMDs is before processing one descriptor, ensure allocation of new mbuf is successfull, and then immediately refill after receiving the packet from the descriptor. In future, we should consider optimized bulk allocation strategy with threshold.
On 2015/3/24 15:14, Xie, Huawei wrote: > On 3/22/2015 8:08 PM, Ouyang, Changchun wrote: >> >>> -----Original Message----- >>> From: linhaifeng [mailto:haifeng.lin@huawei.com] >>> Sent: Saturday, March 21, 2015 9:47 AM >>> To: dev@dpdk.org >>> Cc: Ouyang, Changchun; Xie, Huawei >>> Subject: [PATCH v3] lib/librte_vhost: update used->idx when allocation of >>> mbuf fails >>> >>> 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> >> Acked-by: Changchun Ouyang <changchun.ouyang@intel.com> >> >> >> > Acked-by: Huawei Xie <huawei.xie@intel.com> > > This patch fix the issue. > Simple solution like other PMDs is before processing one descriptor, > ensure allocation of new mbuf is successfull, and then immediately > refill after receiving the packet from the descriptor. > In future, we should consider optimized bulk allocation strategy with > threshold. > Hi, huawei THis is patch is for librte_vhost. Do you want to ack for the other patch for virtio-net-pmd? > > > > >
> >> 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> > > Acked-by: Changchun Ouyang <changchun.ouyang@intel.com> > Acked-by: Huawei Xie <huawei.xie@intel.com> Applied, thanks
diff --git a/lib/librte_vhost/vhost_rxtx.c b/lib/librte_vhost/vhost_rxtx.c index 535c7a1..510ffe8 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; + break; } seg_offset = 0; seg_avail = m->buf_len - RTE_PKTMBUF_HEADROOM;