linux-stable/drivers/infiniband/sw/rxe
Steve Wise 2030abddec rxe: correctly calculate iCRC for unaligned payloads
If RoCE PDUs being sent or received contain pad bytes, then the iCRC
is miscalculated, resulting in PDUs being emitted by RXE with an incorrect
iCRC, as well as ingress PDUs being dropped due to erroneously detecting
a bad iCRC in the PDU.  The fix is to include the pad bytes, if any,
in iCRC computations.

Note: This bug has caused broken on-the-wire compatibility with actual
hardware RoCE devices since the soft-RoCE driver was first put into the
mainstream kernel.  Fixing it will create an incompatibility with the
original soft-RoCE devices, but is necessary to be compatible with real
hardware devices.

Fixes: 8700e3e7c4 ("Soft RoCE driver")
Signed-off-by: Steve Wise <larrystevenwise@gmail.com>
Link: https://lore.kernel.org/r/20191203020319.15036-2-larrystevenwise@gmail.com
Signed-off-by: Doug Ledford <dledford@redhat.com>
2019-12-09 13:55:26 -05:00
..
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
rxe.c RDMA/rxe: Remove useless rxe_init_device_param assignments 2019-10-24 15:20:18 -03:00
rxe.h RDMA: Introduce ib_port_phys_state enum 2019-08-12 10:18:52 -04:00
rxe_av.c RDMA/rxe: Improve loopback marking 2019-02-04 15:57:49 -07:00
rxe_comp.c ibverbs/rxe: Remove variable self-initialization 2019-07-07 09:19:38 -03:00
rxe_cq.c IB: Pass only ib_udata in function prototypes 2019-04-01 15:00:47 -03:00
rxe_hdr.h RDMA: Use __packed annotation instead of __attribute__ ((packed)) 2019-03-25 21:14:12 -03:00
rxe_hw_counters.c IB/rxe: Make counters thread safe 2018-12-20 14:09:45 -07:00
rxe_hw_counters.h RDMA/rxe: Add link_down, rdma_sends, rdma_recvs stats counters 2018-11-08 14:22:54 -07:00
rxe_icrc.c IB/rxe: Offload CRC calculation when possible 2017-04-21 10:45:02 -04:00
rxe_loc.h IB: Pass only ib_udata in function prototypes 2019-04-01 15:00:47 -03:00
rxe_mcast.c IB/rxe: Remove a pointless indirection layer 2017-01-10 16:52:47 -05:00
rxe_mmap.c IB: Pass only ib_udata in function prototypes 2019-04-01 15:00:47 -03:00
rxe_mr.c IB/umem: remove the dmasync argument to ib_umem_get 2019-11-17 10:37:00 -04:00
rxe_net.c net: ipv6_stub: use ip6_dst_lookup_flow instead of ip6_dst_lookup 2019-12-04 12:27:13 -08:00
rxe_net.h rdma_rxe: Use netlink messages to add/delete links 2019-02-19 20:52:19 -07:00
rxe_opcode.c IB/rxe: add RXE_START_MASK for rxe_opcode IB_OPCODE_RC_SEND_ONLY_INV 2018-04-27 14:20:47 -04:00
rxe_opcode.h
rxe_param.h RDMA/rxe: Remove useless rxe_init_device_param assignments 2019-10-24 15:20:18 -03:00
rxe_pool.c RDMA: Convert CQ allocations to be under core responsibility 2019-06-11 16:39:49 -04:00
rxe_pool.h RDMA: Handle PD allocations by IB/core 2019-02-08 16:51:04 -07:00
rxe_qp.c IB: Pass only ib_udata in function prototypes 2019-04-01 15:00:47 -03:00
rxe_queue.c IB: Pass only ib_udata in function prototypes 2019-04-01 15:00:47 -03:00
rxe_queue.h IB: Pass only ib_udata in function prototypes 2019-04-01 15:00:47 -03:00
rxe_recv.c rxe: correctly calculate iCRC for unaligned payloads 2019-12-09 13:55:26 -05:00
rxe_req.c rxe: correctly calculate iCRC for unaligned payloads 2019-12-09 13:55:26 -05:00
rxe_resp.c rxe: correctly calculate iCRC for unaligned payloads 2019-12-09 13:55:26 -05:00
rxe_srq.c IB: Pass only ib_udata in function prototypes 2019-04-01 15:00:47 -03:00
rxe_sysfs.c rdma_rxe: Use netlink messages to add/delete links 2019-02-19 20:52:19 -07:00
rxe_task.c RDMA/rxe: Suppress gcc 7 fall-through complaints 2017-10-14 20:47:07 -04:00
rxe_task.h IB/rxe: Wait for tasklets to finish before tearing down QP 2016-12-12 16:31:45 -05:00
rxe_verbs.c RDMA/rxe: Increase DMA max_segment_size parameter 2019-10-28 14:52:03 -03:00
rxe_verbs.h RDMA/rxe: Increase DMA max_segment_size parameter 2019-10-28 14:52:03 -03:00