> -----Original Message-----
> <adrien.mazarg...@6wind.com>; dpdk-dev <dev@dpdk.org>
> Subject: Re: [PATCH 1/5] ethdev: add API to dump device internal flow info
> 
> On Thu, Jan 16, 2020 at 3:45 PM Xiaoyu Min <jack...@mellanox.com> wrote:
> >
> > Introduce an API which dump the device's internal representation
> > information of rte flows in hardware.
> >
> > Signed-off-by: Xiaoyu Min <jack...@mellanox.com>
> 
> Looks good to me.

Acked-by: Ori Kam <or...@mellanox.com>
Thanks,
Ori
> 
> > ---
> >  lib/librte_ethdev/rte_ethdev_version.map |  3 +++
> >  lib/librte_ethdev/rte_flow.c             | 16 ++++++++++++++++
> >  lib/librte_ethdev/rte_flow.h             | 21 +++++++++++++++++++++
> >  lib/librte_ethdev/rte_flow_driver.h      |  5 +++++
> >  4 files changed, 45 insertions(+)
> >
> > diff --git a/lib/librte_ethdev/rte_ethdev_version.map
> b/lib/librte_ethdev/rte_ethdev_version.map
> > index a7dacf2cf2..3f32fdecf7 100644
> > --- a/lib/librte_ethdev/rte_ethdev_version.map
> > +++ b/lib/librte_ethdev/rte_ethdev_version.map
> > @@ -227,4 +227,7 @@ EXPERIMENTAL {
> >         rte_flow_dynf_metadata_mask;
> >         rte_flow_dynf_metadata_register;
> >         rte_eth_dev_set_ptypes;
> > +
> > +       # added in 20.02
> > +       rte_flow_dev_dump;
> >  };
> > diff --git a/lib/librte_ethdev/rte_flow.c b/lib/librte_ethdev/rte_flow.c
> > index 87a3e8c4c6..751ce721b2 100644
> > --- a/lib/librte_ethdev/rte_flow.c
> > +++ b/lib/librte_ethdev/rte_flow.c
> > @@ -1212,3 +1212,19 @@ rte_flow_expand_rss(struct
> rte_flow_expand_rss *buf, size_t size,
> >         }
> >         return lsize;
> >  }
> > +
> > +int
> > +rte_flow_dev_dump(uint16_t port_id, FILE *file, struct rte_flow_error
> *error)
> > +{
> > +       struct rte_eth_dev *dev = &rte_eth_devices[port_id];
> > +       const struct rte_flow_ops *ops = rte_flow_ops_get(port_id, error);
> > +
> > +       if (unlikely(!ops))
> > +               return -rte_errno;
> > +       if (likely(!!ops->dev_dump))
> > +               return flow_err(port_id, ops->dev_dump(dev, file, error),
> > +                               error);
> > +       return rte_flow_error_set(error, ENOSYS,
> > +                                 RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
> > +                                 NULL, rte_strerror(ENOSYS));
> > +}
> > diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h
> > index 58b50265d2..cf7cf61ae8 100644
> > --- a/lib/librte_ethdev/rte_flow.h
> > +++ b/lib/librte_ethdev/rte_flow.h
> > @@ -2790,6 +2790,27 @@ enum rte_flow_conv_op {
> >         RTE_FLOW_CONV_OP_ACTION_NAME_PTR,
> >  };
> >
> > +/**
> > + * @warning
> > + * @b EXPERIMENTAL: this API may change without prior notice.
> > + *
> > + * Dump hardware internal representation information of
> > + * rte flow to file.
> > + *
> > + * @param[in] port_id
> > + *    The port identifier of the Ethernet device.
> > + * @param[in] file
> > + *   A pointer to a file for output.
> > + * @param[out] error
> > + *   Perform verbose error reporting if not NULL. PMDs initialize this
> > + *   structure in case of error only.
> > + * @return
> > + *   0 on success, a nagative value otherwise.
> > + */
> > +__rte_experimental
> > +int
> > +rte_flow_dev_dump(uint16_t port_id, FILE *file, struct rte_flow_error
> *error);
> > +
> >  /**
> >   * Check if mbuf dynamic field for metadata is registered.
> >   *
> > diff --git a/lib/librte_ethdev/rte_flow_driver.h
> b/lib/librte_ethdev/rte_flow_driver.h
> > index a0359853e6..51a9a57a0f 100644
> > --- a/lib/librte_ethdev/rte_flow_driver.h
> > +++ b/lib/librte_ethdev/rte_flow_driver.h
> > @@ -96,6 +96,11 @@ struct rte_flow_ops {
> >                 (struct rte_eth_dev *,
> >                  int,
> >                  struct rte_flow_error *);
> > +       /** See rte_flow_dev_dump(). */
> > +       int (*dev_dump)
> > +               (struct rte_eth_dev *dev,
> > +                FILE *file,
> > +                struct rte_flow_error *error);
> >  };
> >
> >  /**
> > --
> > 2.24.1
> >

Reply via email to