linux/drivers/infiniband/hw/i40iw
Arnd Bergmann 07f3355df7 infiniband: i40iw, nes: don't use wall time for TCP sequence numbers
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@intel.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
2018-07-11 12:10:19 -06:00
..
i40iw.h RDMA/i40iw: Avoid panic when reading back the IRQ affinity hint 2018-05-09 10:45:19 -04:00
i40iw_cm.c infiniband: i40iw, nes: don't use wall time for TCP sequence numbers 2018-07-11 12:10:19 -06:00
i40iw_cm.h i40iw: Extend port reuse support for listeners 2018-05-16 13:13:20 -06:00
i40iw_ctrl.c i40iw: Refactor of driver generated AEs 2018-03-15 15:58:04 -06:00
i40iw_d.h i40iw: Refactor of driver generated AEs 2018-03-15 15:58:04 -06:00
i40iw_hmc.c i40iw: add hmc resource files 2016-02-29 17:10:53 -05:00
i40iw_hmc.h i40iw: add hmc resource files 2016-02-29 17:10:53 -05:00
i40iw_hw.c i40iw: Reorganize acquire/release of locks in i40iw_manage_apbvt 2018-06-18 11:09:05 -06:00
i40iw_main.c Merge branch 'mr_fix' into git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma for-next 2018-05-28 11:44:35 -06:00
i40iw_osdep.h RDMA/i40iw: Remove MSS change support 2017-06-01 16:59:52 -04:00
i40iw_p.h i40iw: Remove UDA QP from QoS list if creation fails 2017-10-18 13:28:46 -04:00
i40iw_pble.c i40iw: Simplify code 2017-08-18 14:01:08 -04:00
i40iw_pble.h i40iw: add pble resource files 2016-02-29 17:10:53 -05:00
i40iw_puda.c i40iw: Refactor handling of txpend list 2018-03-06 16:00:51 -07:00
i40iw_puda.h i40iw: Free IEQ resources 2018-01-16 20:38:18 -07:00
i40iw_register.h i40iw: add X722 register file 2016-03-16 13:50:53 -04:00
i40iw_status.h i40iw: Correct variable names 2017-08-16 11:27:44 -04:00
i40iw_type.h i40iw: Refactor of driver generated AEs 2018-03-15 15:58:04 -06:00
i40iw_uk.c i40iw: Use utility function roundup_pow_of_two() 2017-12-22 13:37:51 -07:00
i40iw_user.h i40iw: Remove limit on re-posting AEQ entries to HW 2018-01-16 20:38:18 -07:00
i40iw_utils.c i40iw: Refactor of driver generated AEs 2018-03-15 15:58:04 -06:00
i40iw_verbs.c RDMA/i40w: Hold read semaphore while looking after VMA 2018-07-04 11:51:06 -06:00
i40iw_verbs.h RDMA/i40iw: Avoid panic when objects are being created and destroyed 2018-05-09 10:45:18 -04:00
i40iw_vf.c i40iw: constify i40iw_vf_cqp_ops structure 2016-05-13 13:47:07 -04:00
i40iw_vf.h i40iw: constify i40iw_vf_cqp_ops structure 2016-05-13 13:47:07 -04:00
i40iw_virtchnl.c RDMA/i40iw: fix duplicated code for different branches 2017-06-01 17:00:29 -04:00
i40iw_virtchnl.h i40iw: virtual channel handling files 2016-03-16 13:50:53 -04:00
Kconfig infiniband: i40iw, nes: don't use wall time for TCP sequence numbers 2018-07-11 12:10:19 -06:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00