net: sfc: avoid using timespec
authorArnd Bergmann <arnd@arndb.de>
Mon, 28 Sep 2015 20:21:32 +0000 (22:21 +0200)
committerJohn Stultz <john.stultz@linaro.org>
Thu, 1 Oct 2015 16:59:24 +0000 (09:59 -0700)
commit090e2edb4171dae4872c4eaae972dd3ccf96d4a8
treee9657f62d198c5b4551787328c3109ee1277a396
parentade1bdffe90e59cd257cb9bd4f5abe4de5f14911
net: sfc: avoid using timespec

The sfc driver internally uses a time format based on 32-bit (unsigned)
seconds and 32-bit nanoseconds. This means it will overflow in 2106,
but the value we pass into it is a signed 32-bit tv_sec that already
overflows in 2038 to a negative value.

This patch changes the logic to use the lower 32 bits of the timespec64
tv_sec in efx_ptp_ns_to_s_ns, which will have the correct value beyond the overflow.
While this does not change any of the register values, it lets us
keep using the driver after we deprecate the use of the timespec type
in the kernel.

In the efx_ptp_process_times function, the change to use timespec64
is similar, in that the tv_sec portion is ignored anyway and we only
care about the nanosecond portion that remains unchanged.

Acked-by: Richard Cochran <richardcochran@gmail.com>
Acked-by: David S. Miller <davem@davemloft.net>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: John Stultz <john.stultz@linaro.org>
drivers/net/ethernet/sfc/ptp.c