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 :(

Reply via email to