On Mon, Jul 09, 2018 at 02:34:43AM -0600, Arnd Bergmann wrote: > The nes infiniband driver uses current_kernel_time() to get a nanosecond > granunarity timestamp to initialize its tcp sequence counters. This is > one of only a few remaining users of that deprecated function, so we > should try to get rid of it. > > Aside from using a deprecated API, there are several problems I see here: > > - Using a CLOCK_REALTIME based time source makes it predictable in > case the time base is synchronized. > - Using a coarse timestamp means it only gets updated once per jiffie, > making it even more predictable in order to avoid having to access > the hardware clock source > - The upper 2 bits are always zero because the nanoseconds are at most > 999999999. > > For the Linux TCP implementation, we use secure_tcp_seq(), which appears > to be appropriate here as well, and solves all the above problems. > > i40iw uses a variant of the same code, so I do that same thing there > for ipv4. Unlike nes, i40e also supports ipv6, which needs to call > secure_tcpv6_seq instead. > > Acked-by: Shiraz Saleem <shiraz.saleem@xxxxxxxxx> > Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx> > --- > v2: use secure_tcpv6_seq for IPv6 support as suggested by Shiraz Saleem. > v3: add a soft IPv6 dependency to prevent a link error with CONFIG_IPV6=m, > this now forces i40iw to be a module as well, add an IS_ENABLED() > check to avoid calling it when IPV6 is completely disabled. > > Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx> > --- > drivers/infiniband/hw/i40iw/Kconfig | 1 + > drivers/infiniband/hw/i40iw/i40iw_cm.c | 26 +++++++++++++++++++++----- > drivers/infiniband/hw/nes/nes_cm.c | 8 +++++--- > net/core/secure_seq.c | 1 + > 4 files changed, 28 insertions(+), 8 deletions(-) > > diff --git a/drivers/infiniband/hw/i40iw/Kconfig b/drivers/infiniband/hw/i40iw/Kconfig > index 2962979c06e9..d867ef1ac72a 100644 > --- a/drivers/infiniband/hw/i40iw/Kconfig > +++ b/drivers/infiniband/hw/i40iw/Kconfig > @@ -1,6 +1,7 @@ > config INFINIBAND_I40IW > tristate "Intel(R) Ethernet X722 iWARP Driver" > depends on INET && I40E > + depends on IPV6 || !IPV6 > depends on PCI > select GENERIC_ALLOCATOR > ---help--- v3 update looks ok. Thanks! -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html