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