Hi Thomas, > -----Original Message----- > From: Thomas Monjalon <tho...@monjalon.net> > Sent: Friday, November 8, 2019 20:55 > To: Wang, Haiyue <haiyue.w...@intel.com> > Cc: dev@dpdk.org; olivier.m...@6wind.com; Ye, Xiaolong > <xiaolong...@intel.com>; Yigit, Ferruh > <ferruh.yi...@intel.com> > Subject: Re: [dpdk-dev] [PATCH v9] net/ice: optimize protocol extraction by > dynamic mbuf API > > 07/11/2019 11:44, Haiyue Wang: > > --- a/drivers/net/ice/rte_pmd_ice_version.map > > +++ b/drivers/net/ice/rte_pmd_ice_version.map > > +EXPERIMENTAL { > > + global: > > + > > + # added in 19.11 > > + rte_net_ice_dynfield_proto_xtr_metadata_offs; > > + rte_net_ice_dynflag_proto_xtr_vlan_mask; > > + rte_net_ice_dynflag_proto_xtr_ipv4_mask; > > + rte_net_ice_dynflag_proto_xtr_ipv6_mask; > > + rte_net_ice_dynflag_proto_xtr_ipv6_flow_mask; > > + rte_net_ice_dynflag_proto_xtr_tcp_mask; > > +}; > > Given that you provide some functions to access to the metadata, > why do you need to export these flags and field in the .map? > > However, the functions are missing in the .map. > Did you try to compile as a shared library? >
These functions are 'static inline', no need to be exported in the .map. And the macros like 'PKT_RX_DYNF_PROTO_XTR_XXX', in fact, their real definitions are global values defined in rte_pmd_ice like: rte_net_ice_dynflag_proto_xtr_xxx_mask. Since rte_pmd_ice are required to compiled as a shared library, so it is needed to export these flags and field in the .map. This design is referred to the below upstream practice about dynamic mbuf. commit 7743e81854944ed17df05bfdcba26556cb41ca0c Author: Viacheslav Ovsiienko <viachesl...@mellanox.com> Date: Tue Nov 5 14:19:30 2019 +0000 ethdev: extend flow metadata --- a/lib/librte_ethdev/rte_ethdev_version.map +++ b/lib/librte_ethdev/rte_ethdev_version.map @@ -289,4 +289,7 @@ EXPERIMENTAL { rte_eth_rx_hairpin_queue_setup; rte_eth_tx_burst_mode_get; rte_eth_tx_hairpin_queue_setup; + rte_flow_dynf_metadata_offs; + rte_flow_dynf_metadata_mask; + rte_flow_dynf_metadata_register; };