> -----Original Message-----
> From: Thomas Monjalon <tho...@monjalon.net>
> Sent: Friday, March 12, 2021 06:18
> To: dev@dpdk.org
> Cc: Ori Kam <or...@nvidia.com>; Ajit Khaparde <ajit.khapa...@broadcom.com>; 
> Somnath Kotur
> <somnath.ko...@broadcom.com>; Chas Williams <ch...@att.com>; Min Hu (Connor) 
> <humi...@huawei.com>;
> Rahul Lakkireddy <rahul.lakkire...@chelsio.com>; Hemant Agrawal 
> <hemant.agra...@nxp.com>; Sachin
> Saxena <sachin.sax...@oss.nxp.com>; Guo, Jia <jia....@intel.com>; Wang, 
> Haiyue <haiyue.w...@intel.com>;
> Daley, John <johnd...@cisco.com>; Hyong Youb Kim <hyon...@cisco.com>; Gaetan 
> Rivet <gr...@u256.net>;
> Ziyang Xuan <xuanziya...@huawei.com>; Xiaoyun Wang 
> <cloud.wangxiao...@huawei.com>; Guoyang Zhou
> <zhouguoy...@huawei.com>; Yisen Zhuang <yisen.zhu...@huawei.com>; Lijun Ou 
> <ouli...@huawei.com>; Xing,
> Beilei <beilei.x...@intel.com>; Wu, Jingjing <jingjing...@intel.com>; Yang, 
> Qiming
> <qiming.y...@intel.com>; Zhang, Qi Z <qi.z.zh...@intel.com>; Xu, Rosen 
> <rosen...@intel.com>; Matan
> Azrad <ma...@nvidia.com>; Shahaf Shuler <shah...@nvidia.com>; Viacheslav 
> Ovsiienko
> <viachesl...@nvidia.com>; Liron Himi <lir...@marvell.com>; Jerin Jacob 
> <jer...@marvell.com>; Nithin
> Dabilpuram <ndabilpu...@marvell.com>; Kiran Kumar K 
> <kirankum...@marvell.com>; Rasesh Mody
> <rm...@marvell.com>; Shahed Shaikh <shsha...@marvell.com>; Andrew Rybchenko
> <andrew.rybche...@oktetlabs.ru>; Singh, Jasvinder 
> <jasvinder.si...@intel.com>; Dumitrescu, Cristian
> <cristian.dumitre...@intel.com>; Wiles, Keith <keith.wi...@intel.com>; Jiawen 
> Wu
> <jiawe...@trustnetic.com>; Jian Wang <jianw...@trustnetic.com>; Yigit, Ferruh 
> <ferruh.yi...@intel.com>
> Subject: [PATCH 1/2] ethdev: replace callback getting filter operations
> 
> Since rte_flow is the only API for filtering operations,
> the legacy driver interface filter_ctrl was too much complicated
> for the simple task of getting the struct rte_flow_ops.
> 
> The filter type RTE_ETH_FILTER_GENERIC and
> the filter operarion RTE_ETH_FILTER_GET are removed.
> The new driver callback flow_ops_get replaces filter_ctrl.
> 
> Signed-off-by: Thomas Monjalon <tho...@monjalon.net>
> ---
>  doc/guides/nics/features.rst            |  4 +--
>  doc/guides/prog_guide/rte_flow.rst      | 14 +-------
>  doc/guides/rel_notes/release_20_11.rst  |  2 +-
>  doc/guides/rel_notes/release_2_2.rst    |  2 +-
>  drivers/net/bnxt/bnxt.h                 |  6 ++--
>  drivers/net/bnxt/bnxt_ethdev.c          | 40 +++++++--------------
>  drivers/net/bnxt/bnxt_reps.c            |  2 +-
>  drivers/net/bonding/rte_eth_bond_pmd.c  | 13 +++----
>  drivers/net/cxgbe/cxgbe_ethdev.c        |  2 +-
>  drivers/net/cxgbe/cxgbe_flow.c          | 22 +++---------
>  drivers/net/cxgbe/cxgbe_flow.h          |  7 ++--
>  drivers/net/dpaa2/dpaa2_ethdev.c        | 44 +++--------------------
>  drivers/net/dpaa2/dpaa2_flow.c          | 29 +++++-----------
>  drivers/net/e1000/igb_ethdev.c          | 31 ++++-------------
>  drivers/net/enic/enic_ethdev.c          | 30 +++++-----------
>  drivers/net/enic/enic_vf_representor.c  | 33 ++++++------------
>  drivers/net/failsafe/failsafe_ops.c     | 16 +++------
>  drivers/net/hinic/hinic_pmd_ethdev.c    | 36 ++++---------------
>  drivers/net/hns3/hns3_ethdev.c          |  2 +-
>  drivers/net/hns3/hns3_ethdev.h          |  5 ++-
>  drivers/net/hns3/hns3_ethdev_vf.c       |  2 +-
>  drivers/net/hns3/hns3_flow.c            | 30 ++++------------
>  drivers/net/i40e/i40e_ethdev.c          | 32 ++++-------------
>  drivers/net/iavf/iavf_ethdev.c          | 32 ++++-------------
>  drivers/net/ice/ice_dcf_ethdev.c        | 27 +++------------
>  drivers/net/ice/ice_ethdev.c            | 32 ++++-------------
>  drivers/net/igc/igc_ethdev.c            |  2 +-
>  drivers/net/igc/igc_filter.c            | 23 +++----------
>  drivers/net/igc/igc_filter.h            |  5 ++-
>  drivers/net/ipn3ke/ipn3ke_representor.c | 28 ++++-----------
>  drivers/net/ixgbe/ixgbe_ethdev.c        | 32 ++++-------------
>  drivers/net/mlx4/mlx4.c                 |  2 +-
>  drivers/net/mlx4/mlx4_flow.c            | 32 ++++-------------
>  drivers/net/mlx4/mlx4_flow.h            |  5 +--
>  drivers/net/mlx5/mlx5.c                 |  4 +--
>  drivers/net/mlx5/mlx5.h                 |  5 +--
>  drivers/net/mlx5/mlx5_flow.c            | 32 ++++-------------
>  drivers/net/mvpp2/mrvl_ethdev.c         | 26 ++++----------
>  drivers/net/octeontx2/otx2_ethdev.c     |  2 +-
>  drivers/net/octeontx2/otx2_ethdev.h     |  5 ++-
>  drivers/net/octeontx2/otx2_ethdev_ops.c | 21 +++--------
>  drivers/net/qede/qede_ethdev.c          |  2 +-
>  drivers/net/qede/qede_ethdev.h          |  7 ++--
>  drivers/net/qede/qede_filter.c          | 27 ++++-----------
>  drivers/net/sfc/sfc_ethdev.c            | 31 +++--------------
>  drivers/net/softnic/rte_eth_softnic.c   | 17 +++------
>  drivers/net/tap/rte_eth_tap.c           |  2 +-
>  drivers/net/tap/tap_flow.c              | 27 ++++-----------
>  drivers/net/tap/tap_flow.h              |  6 ++--
>  drivers/net/txgbe/txgbe_ethdev.c        | 26 +++-----------
>  lib/librte_ethdev/ethdev_driver.h       | 46 +++++++++----------------
>  lib/librte_ethdev/rte_eth_ctrl.h        |  2 +-
>  lib/librte_ethdev/rte_flow.c            |  9 ++---
>  lib/librte_ethdev/rte_flow_driver.h     | 25 --------------
>  54 files changed, 226 insertions(+), 720 deletions(-)
> 

> -enum rte_filter_op {
> -     RTE_ETH_FILTER_GET,      /**< get flow API ops */
> -};
> -
> -typedef int (*eth_filter_ctrl_t)(struct rte_eth_dev *dev,
> -                              enum rte_filter_type filter_type,
> -                              enum rte_filter_op filter_op,
> -                              void *arg);
> -/**< @internal Take operations to assigned filter type on an Ethernet device 
> */
> +struct rte_flow_ops;
> +typedef int (*eth_flow_ops_get_t)(struct rte_eth_dev *dev,
> +                               const struct rte_flow_ops **ops);
> +/**< @internal Get flow operations */
> 

How about to change the return type to "const struct rte_flow_ops *" directly ?

typedef const struct rte_flow_ops * (*eth_flow_ops_get_t)(struct rte_eth_dev 
*dev);


> --
> 2.30.1

Reply via email to