From 96b8cea9be12e75622775b99ded5cd8cc4be6c8f Mon Sep 17 00:00:00 2001 From: Yingying Tang Date: Mon, 6 Mar 2017 18:14:14 +0800 Subject: [PATCH] qcacmn: Fix "__aeabi_uldivmod" symbol error There is an unknown symbol error "__aeabi_uldivmod" due to a division operation between uint64 value in wlan driver. Add qdf API to use do_div to avoid "__aeabi_uldivmod" symbol error. Change-Id: I24e51990ff9e0ecea327ad9c71266fd768d62a6c CRs-Fixed: 2013952 --- qdf/inc/qdf_util.h | 13 +++++++++++++ qdf/linux/src/i_qdf_util.h | 15 +++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/qdf/inc/qdf_util.h b/qdf/inc/qdf_util.h index b5b19f22cd..c2c4823d1e 100644 --- a/qdf/inc/qdf_util.h +++ b/qdf/inc/qdf_util.h @@ -602,6 +602,19 @@ int qdf_set_dma_coherent_mask(struct device *dev, uint8_t addr_bits) return __qdf_set_dma_coherent_mask(dev, addr_bits); } +/** + * qdf_do_div() - wrapper function for kernel macro(do_div). + * @dividend: Dividend value + * @divisor : Divisor value + * + * Return: Quotient + */ +static inline +uint64_t qdf_do_div(uint64_t dividend, uint32_t divisor) +{ + return __qdf_do_div(dividend, divisor); +} + /** * qdf_get_random_bytes() - returns nbytes bytes of random * data diff --git a/qdf/linux/src/i_qdf_util.h b/qdf/linux/src/i_qdf_util.h index e419dd6498..6068291823 100644 --- a/qdf/linux/src/i_qdf_util.h +++ b/qdf/linux/src/i_qdf_util.h @@ -422,4 +422,19 @@ void __qdf_get_random_bytes(void *buf, int nbytes) return get_random_bytes(buf, nbytes); } +/** + * __qdf_do_div() - wrapper function for kernel macro(do_div). + * @dividend: Dividend value + * @divisor : Divisor value + * + * Return: Quotient + */ +static inline +uint64_t __qdf_do_div(uint64_t dividend, uint32_t divisor) +{ + do_div(dividend, divisor); + /*do_div macro updates dividend with Quotient of dividend/divisor */ + return dividend; +} + #endif /*_I_QDF_UTIL_H*/