> -----Original Message-----
> From: Adrien Mazarguil [mailto:adrien.mazarg...@6wind.com]
> Sent: Tuesday, December 27, 2016 8:40 PM
> To: Xing, Beilei <beilei.x...@intel.com>
> Cc: Wu, Jingjing <jingjing...@intel.com>; Zhang, Helin
> <helin.zh...@intel.com>; dev@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH v2 15/17] net/i40e: add flow flush function
> 
> Hi Beilei,
> 
> On Tue, Dec 27, 2016 at 02:26:22PM +0800, Beilei Xing wrote:
> > This patch adds i40e_flow_flush function to flush all filters for
> > users. And flow director flush function is involved first.
> >
> > Signed-off-by: Beilei Xing <beilei.x...@intel.com>
> > ---
> >  drivers/net/i40e/i40e_ethdev.h |  3 +++
> >  drivers/net/i40e/i40e_fdir.c   |  8 ++------
> >  drivers/net/i40e/i40e_flow.c   | 46
> ++++++++++++++++++++++++++++++++++++++++++
> >  3 files changed, 51 insertions(+), 6 deletions(-)
> [...]
> > diff --git a/drivers/net/i40e/i40e_flow.c
> > b/drivers/net/i40e/i40e_flow.c
> [...]
> > +static int
> > +i40e_fdir_filter_flush(struct i40e_pf *pf) {
> > +   struct rte_eth_dev *dev = pf->adapter->eth_dev;
> > +   struct i40e_fdir_info *fdir_info = &pf->fdir;
> > +   struct i40e_fdir_filter *fdir_filter;
> > +   struct i40e_flow *flow;
> > +   int ret = 0;
> > +
> > +   ret = i40e_fdir_flush(dev);
> > +   if (!ret) {
> > +           /* Delete FDIR filters in FDIR list. */
> > +           while ((fdir_filter = TAILQ_FIRST(&fdir_info->fdir_list)))
> > +                   i40e_sw_fdir_filter_del(pf, fdir_filter);
> > +
> > +           /* Delete FDIR flows in flow list. */
> > +           TAILQ_FOREACH(flow, &pf->flow_list, node) {
> > +                   if (flow->filter_type == RTE_ETH_FILTER_FDIR) {
> > +                           TAILQ_REMOVE(&pf->flow_list, flow, node);
> > +                           rte_free(flow);
> > +                   }
> > +           }
> 
> Be careful, I'm not sure calling TAILQ_REMOVE() followed by rte_free()
> inside a TAILQ_FOREACH() is safe. BSD has the _SAFE() variant for this
> purpose but Linux does not.
> 
Yes, thanks for reminder, I'll check it later:)

> > +   }
> > +
> > +   return ret;
> > +}
> 
> --
> Adrien Mazarguil
> 6WIND

Reply via email to