> -----Original Message-----
> From: Intel-wired-lan <[email protected]> On Behalf Of Jacob 
> Keller
> Sent: Saturday, April 27, 2024 4:17 AM
> To: Intel Wired LAN <[email protected]>
> Cc: Keller, Jacob E <[email protected]>; Michal Swiatkowski 
> <[email protected]>
> Subject: [Intel-wired-lan] [PATCH iwl-next] ice: add and use roundup_u64 
> instead of open coding equivalent
>
> In ice_ptp_cfg_clkout(), the ice driver needs to calculate the nearest next 
> second of a current time value specified in nanoseconds. It implements this 
> using div64_u64, because the time value is a u64. It could use div_u64 since 
> NSEC_PER_SEC is smaller than 32-bits.
>
> Ideally this would be implemented directly with roundup(), but that can't 
> work on all platforms due to a division which requires using the specific 
> macros and functions due to platform restrictions, and to ensure that the 
> most appropriate and fast instructions are used.
>
> The kernel doesn't currently provide any 64-bit equivalents for doing 
> roundup. Attempting to use roundup() on a 32-bit platform will result in a 
> link failure due to not having a direct 64-bit division.
>
> The closest equivalent for this is DIV64_U64_ROUND_UP, which does a division 
> always rounding up. However, this only computes the division, and forces use 
> of the div64_u64 in cases where the divisor is a 32bit value and could make 
> use of div_u64.
>
> Introduce DIV_U64_ROUND_UP based on div_u64, and then use it to implement
> roundup_u64 which takes a u64 input value and a u32 rounding value.
>
> The name roundup_u64 matches the naming scheme of div_u64, and future patches 
> could implement roundup64_u64 if they need to round by a multiple that is 
> greater than 32-bits.
>
> Replace the logic in ice_ptp.c which does this equivalent with the newly 
> added roundup_u64.
>
> Signed-off-by: Jacob Keller <[email protected]>
> ---
> Changes since v1:
> * add DIV_U64_ROUND_UP and use it for clarity
> ---
>  drivers/net/ethernet/intel/ice/ice_ptp.c |  3 +--
>  include/linux/math64.h                   | 27 +++++++++++++++++++++++++++
>  2 files changed, 28 insertions(+), 2 deletions(-)
>

Tested-by: Arpana Arland <[email protected]> (A Contingent worker at 
Intel)

Reply via email to