To achieve this, a new function pointer, dev_supported_ptypes_get, is added into struct eth_dev_ops. For those devices who do not implement it, it means it does not support any ptypes.
v8: - Rebased on dpdk-next-net/rel_16_04 branch. - Rename ptypes_info -> supported_ptypes. - Abandon info about newly added API in release_16_04.rst. - concise -> correct. v7: - 2.2 -> 16.04 - Add note: this API better invoked after device is already started. - Update release_16_04.rst for newly added API. v6: - Remove extern in function declaration. - Update rte_ether_version.map. v5: - Exclude l3fwd change from this series, as a separated one. - Fix malposition of mlx4 code in mlx5 commit introduced in v4. v4: - Change how to use this API: to previously agreement reached in mail. v3: - Change how to use this API: api to allocate mem for storing ptype array; and caller to free the mem. - Change how to return back ptypes from PMDs: return a pointer to corresponding static const array of supported ptypes, terminated by RTE_PTYPE_UNKNOWN. - Fix l3fwd parse_packet_type() when EXACT_MATCH is enabled. - Fix l3fwd memory leak when calling the API. v2: - Move ptype_mask filter function from each PMDs into ether layer. - Add ixgbe vPMD's ptype info. - Fix code style issues. Signed-off-by: Jianfeng Tan <jianfeng.tan at intel.com> Acked-by: Konstantin Ananyev <konstantin.ananyev at intel.com> Acked-by: Adrien Mazarguil <adrien.mazarguil at 6wind.com> Jianfeng Tan (11): ethdev: add API to query supported packet types cxgbe: add dev_supported_ptypes_get implementation e1000: add dev_supported_ptypes_get implementation enic: add dev_supported_ptypes_get implementation fm10k: add dev_supported_ptypes_get implementation i40e: add dev_supported_ptypes_get implementation ixgbe: add dev_supported_ptypes_get implementation mlx4: add dev_supported_ptypes_get implementation mlx5: add dev_supported_ptypes_get implementation nfp: add dev_supported_ptypes_get implementation vmxnet3: add dev_supported_ptypes_get implementation drivers/net/cxgbe/cxgbe_ethdev.c | 15 ++++++++++ drivers/net/e1000/igb_ethdev.c | 30 ++++++++++++++++++++ drivers/net/enic/enic_ethdev.c | 14 ++++++++++ drivers/net/fm10k/fm10k_ethdev.c | 50 ++++++++++++++++++++++++++++++++++ drivers/net/fm10k/fm10k_rxtx.c | 3 ++ drivers/net/fm10k/fm10k_rxtx_vec.c | 3 ++ drivers/net/i40e/i40e_ethdev.c | 1 + drivers/net/i40e/i40e_ethdev_vf.c | 1 + drivers/net/i40e/i40e_rxtx.c | 46 ++++++++++++++++++++++++++++++- drivers/net/i40e/i40e_rxtx.h | 1 + drivers/net/ixgbe/ixgbe_ethdev.c | 38 ++++++++++++++++++++++++++ drivers/net/ixgbe/ixgbe_ethdev.h | 3 ++ drivers/net/ixgbe/ixgbe_rxtx.c | 4 ++- drivers/net/mlx4/mlx4.c | 21 ++++++++++++++ drivers/net/mlx5/mlx5.c | 1 + drivers/net/mlx5/mlx5.h | 1 + drivers/net/mlx5/mlx5_ethdev.c | 20 ++++++++++++++ drivers/net/mlx5/mlx5_rxtx.c | 2 ++ drivers/net/nfp/nfp_net.c | 19 +++++++++++++ drivers/net/vmxnet3/vmxnet3_ethdev.c | 17 ++++++++++++ lib/librte_ether/rte_ethdev.c | 27 ++++++++++++++++++ lib/librte_ether/rte_ethdev.h | 27 ++++++++++++++++++ lib/librte_ether/rte_ether_version.map | 5 ++++ 23 files changed, 347 insertions(+), 2 deletions(-) -- 2.1.4