[dpdk-dev] [PATCH v3] net/dpaa2: fix build error about timesync functions

Ferruh Yigit ferruh.yigit at intel.com
Thu Oct 8 15:12:52 CEST 2020


On 10/8/2020 3:24 AM, Sachin Saxena (OSS) wrote:

[please don't top post, I moved reply to down]

> 
> On 06-Oct-20 10:46 PM, Ferruh Yigit wrote:
>> From: Chenxu Di<chenxux.di at intel.com>
>>
>> Some timesync related source files are built only when
>> 'RTE_LIBRTE_IEEE1588' config is set, which is missing in meson.
>>
>> Building with '-DRTE_LIBRTE_IEEE1588' cflag will enable timesync
>> functionality in the files that are build, but it won't build files
>> that require 'RTE_LIBRTE_IEEE1588' config.
>> This causes the build error.
>>
>> Fixing by removing config check in meson file and build all .c files by
>> default, but wrap relevant code part with 'RTE_LIBRTE_IEEE1588' macro.
>>
>> Also removing 'RTE_LIBRTE_IEEE1588' ifdef around some fields of the data
>> structures, to not require finer grained macro wraps on the functions
>> using them.
>> Since the registration of the function disabled with macro check, having
>> functions compiled shouldn't affect the functionality.
>>
>> Fixes: 184c39d16568 ("net/dpaa2: add DPRTC sub-module")
>> Cc:stable at dpdk.org
>>
>> Signed-off-by: Chenxu Di<chenxux.di at intel.com>
>> Signed-off-by: Ferruh Yigit<ferruh.yigit at intel.com>
>> ---
>>   drivers/net/dpaa2/dpaa2_ethdev.h | 4 ----
>>   drivers/net/dpaa2/dpaa2_ptp.c    | 2 ++
>>   drivers/net/dpaa2/meson.build    | 7 ++-----
>>   3 files changed, 4 insertions(+), 9 deletions(-)
>>
>> diff --git a/drivers/net/dpaa2/dpaa2_ethdev.h b/drivers/net/dpaa2/dpaa2_ethdev.h
>> index e577355d57..94cf253827 100644
>> --- a/drivers/net/dpaa2/dpaa2_ethdev.h
>> +++ b/drivers/net/dpaa2/dpaa2_ethdev.h
>> @@ -160,7 +160,6 @@ struct dpaa2_dev_priv {
>>   	uint16_t ss_offset;
>>   	uint64_t ss_iova;
>>   	uint64_t ss_param_iova;
>> -#if defined(RTE_LIBRTE_IEEE1588)
>>   	/*stores timestamp of last received packet on dev*/
>>   	uint64_t rx_timestamp;
>>   	/*stores timestamp of last received tx confirmation packet on dev*/
>> @@ -169,7 +168,6 @@ struct dpaa2_dev_priv {
>>   	 * it corresponds to last packet transmitted
>>   	 */
>>   	struct dpaa2_queue *next_tx_conf_queue;
>> -#endif
>>   
>>   	struct rte_eth_dev *eth_dev; /**< Pointer back to holding ethdev */
>>   
>> @@ -227,7 +225,6 @@ void dpaa2_dev_free_eqresp_buf(uint16_t eqresp_ci);
>>   void dpaa2_flow_clean(struct rte_eth_dev *dev);
>>   uint16_t dpaa2_dev_tx_conf(void *queue)  __rte_unused;
>>   
>> -#if defined(RTE_LIBRTE_IEEE1588)
>>   int dpaa2_timesync_enable(struct rte_eth_dev *dev);
>>   int dpaa2_timesync_disable(struct rte_eth_dev *dev);
>>   int dpaa2_timesync_read_time(struct rte_eth_dev *dev,
>> @@ -240,5 +237,4 @@ int dpaa2_timesync_read_rx_timestamp(struct rte_eth_dev *dev,
>>   						uint32_t flags __rte_unused);
>>   int dpaa2_timesync_read_tx_timestamp(struct rte_eth_dev *dev,
>>   					  struct timespec *timestamp);
>> -#endif
>>   #endif /* _DPAA2_ETHDEV_H */
>> diff --git a/drivers/net/dpaa2/dpaa2_ptp.c b/drivers/net/dpaa2/dpaa2_ptp.c
>> index f58eedb314..899dd5d442 100644
>> --- a/drivers/net/dpaa2/dpaa2_ptp.c
>> +++ b/drivers/net/dpaa2/dpaa2_ptp.c
>> @@ -129,6 +129,7 @@ int dpaa2_timesync_read_rx_timestamp(struct rte_eth_dev *dev,
>>   	return 0;
>>   }
>>   
>> +#if defined(RTE_LIBRTE_IEEE1588)
>>   static int
>>   dpaa2_create_dprtc_device(int vdev_fd __rte_unused,
>>   			   struct vfio_device_info *obj_info __rte_unused,
>> @@ -179,3 +180,4 @@ static struct rte_dpaa2_object rte_dpaa2_dprtc_obj = {
>>   };
>>   
>>   RTE_PMD_REGISTER_DPAA2_OBJECT(dprtc, rte_dpaa2_dprtc_obj);
>> +#endif
>> diff --git a/drivers/net/dpaa2/meson.build b/drivers/net/dpaa2/meson.build
>> index 6dd0eb274c..4312aa73f7 100644
>> --- a/drivers/net/dpaa2/meson.build
>> +++ b/drivers/net/dpaa2/meson.build
>> @@ -13,15 +13,12 @@ sources = files('base/dpaa2_hw_dpni.c',
>>   		'dpaa2_flow.c',
>>   		'dpaa2_rxtx.c',
>>   		'dpaa2_sparser.c',
>> +		'dpaa2_ptp.c',
>> +		'mc/dprtc.c',
>>   		'mc/dpkg.c',
>>   		'mc/dpdmux.c',
>>   		'mc/dpni.c')
>>   
>> -if dpdk_conf.has('RTE_LIBRTE_IEEE1588')
>> -	sources += files('mc/dprtc.c')
>> -	sources += files('dpaa2_ptp.c')
>> -endif
>> -
>>   includes += include_directories('base', 'mc')
>>   
>>   install_headers('rte_pmd_dpaa2.h')
> 
 > Following change should also be handled as suggested by Ferruh in earlier.
 >
 >     diff --git a/drivers/net/dpaa2/dpaa2_ptp.c b/drivers/net/dpaa2/dpaa2_ptp.c
 >     index 9f755e84bf..0e44d4c6bf 100644
 >     --- a/drivers/net/dpaa2/dpaa2_ptp.c
 >     +++ b/drivers/net/dpaa2/dpaa2_ptp.c
 >     @@ -178,4 +178,6 @@ static struct rte_dpaa2_object rte_dpaa2_dprtc_obj = {
 >              .create = dpaa2_create_dprtc_device,
 >       };
 >
 >     +#if defined(RTE_LIBRTE_IEEE1588)
 >       RTE_PMD_REGISTER_DPAA2_OBJECT(dprtc, rte_dpaa2_dprtc_obj);
 >     +#endif
 >

I think it is already covered in the patch.

Since just wrapping the macro cause a warning on unused static 
variable/function, I need to wrap 'rte_dpaa2_dprtc_obj' & 
'dpaa2_create_dprtc_device()' too along with above macro you mentioned.


More information about the dev mailing list