From: Hyong Youb Kim Date: Fri, 29 Jun 2018 09:29:33 +0000 (-0700) Subject: net/enic: initialize RQ fetch index before enabling RQ X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=1c7c3ad1a001239c78403ab0155ef2b3f4a4fa37;p=dpdk.git net/enic: initialize RQ fetch index before enabling RQ The fetch index must be initialized only when RQ is disabled. Otherwise, it may lead to stale entries in IG descriptor cache on the VIC. Fixes: a74629cfa3a1 ("net/enic: enable RQ first and then post Rx buffers") Cc: stable@dpdk.org Signed-off-by: Hyong Youb Kim Reviewed-by: John Daley --- diff --git a/drivers/net/enic/enic_main.c b/drivers/net/enic/enic_main.c index aba2ff5a70..863d2463c9 100644 --- a/drivers/net/enic/enic_main.c +++ b/drivers/net/enic/enic_main.c @@ -320,6 +320,8 @@ enic_alloc_rx_queue_mbufs(struct enic *enic, struct vnic_rq *rq) * enic_start_rq(). */ rq->need_initial_post = true; + /* Initialize fetch index while RQ is disabled */ + iowrite32(0, &rq->ctrl->fetch_index); return 0; } @@ -345,7 +347,6 @@ enic_initial_post_rx(struct enic *enic, struct vnic_rq *rq) dev_debug(enic, "port=%u, qidx=%u, Write %u posted idx, %u sw held\n", enic->port_id, rq->index, rq->posted_index, rq->rx_nb_hold); iowrite32(rq->posted_index, &rq->ctrl->posted_index); - iowrite32(0, &rq->ctrl->fetch_index); rte_rmb(); rq->need_initial_post = false; }