On Wed, Jun 28, 2017 at 06:28:17PM -0700, Jakub Kicinski wrote: > On Wed, 28 Jun 2017 22:30:01 +0200, Simon Horman wrote: > > @@ -288,7 +292,21 @@ nfp_flower_del_offload(struct nfp_app *app, struct > > net_device *netdev, > > static int > > nfp_flower_get_stats(struct nfp_app *app, struct tc_cls_flower_offload > > *flow) > > { > > - return -EOPNOTSUPP; > > + struct nfp_fl_payload *nfp_flow; > > + > > + nfp_flow = nfp_flower_find_in_fl_table(app, flow->cookie); > > + if (!nfp_flow) > > + return -EINVAL; > > + > > + spin_lock(&nfp_flow->lock); > > + tcf_exts_stats_update(flow->exts, nfp_flow->stats.bytes, > > + nfp_flow->stats.pkts, nfp_flow->stats.used); > > + > > + nfp_flow->stats.pkts = 0; > > + nfp_flow->stats.bytes = 0; > > + spin_unlock(&nfp_flow->lock); > > + > > + return 0; > > } > > This needs to take spin_lock_bh() to lock out the RX path safely :(
Sorry about that, will fix.