linux/drivers/infiniband/sw/rxe
Andrew Boyer 13eb1e21d6 IB/rxe: Avoid ICRC errors by copying into the skb first
The current process is to first calculate the CRC and then copy the client
data into the packet. This leaves a window in which the packet contents and
CRC can get out of sync, if the client changes the data after the CRC is
calculated but before the data is copied.

By copying the data into the packet and then calculating the CRC directly
from the packet contents we eliminate the window.

This can be seen with qperf's ud_bi_bw test. This seems like very
strange/reckless client behavior, but whether the client has mangled its
data or not RXE should be able to transfer it reliably.

Fixes: 8700e3e7c4 ("Soft RoCE driver")
Signed-off-by: Andrew Boyer <andrew.boyer@dell.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
2017-08-28 19:12:36 -04:00
..
Kconfig IB/rxe: Offload CRC calculation when possible 2017-04-21 10:45:02 -04:00
Makefile IB/rxe: Add port protocol stats 2017-04-21 10:43:28 -04:00
rxe_av.c IB/rxe: Remove unneeded check 2017-08-18 14:01:10 -04:00
rxe_comp.c IB/rxe: Add port protocol stats 2017-04-21 10:43:28 -04:00
rxe_cq.c IB/rxe: Disable completion upcalls when a CQ is destroyed 2017-08-28 19:12:32 -04:00
rxe_hdr.h IB/rxe: Enable type checking on SKB_TO_PKT() and PKT_TO_SKB() arguments 2017-01-10 16:52:47 -05:00
rxe_hw_counters.c IB/rxe: Make rxe_counter_name static 2017-08-24 16:44:48 -04:00
rxe_hw_counters.h IB/rxe: Add port protocol stats 2017-04-21 10:43:28 -04:00
rxe_icrc.c IB/rxe: Offload CRC calculation when possible 2017-04-21 10:45:02 -04:00
rxe_loc.h IB/rxe: Remove dangling prototype 2017-08-28 19:12:32 -04:00
rxe_mcast.c IB/rxe: Remove a pointless indirection layer 2017-01-10 16:52:47 -05:00
rxe_mmap.c IB/rxe: Constify static rxe_vm_ops 2017-07-24 08:43:12 -04:00
rxe_mr.c IB/rxe: Avoid ICRC errors by copying into the skb first 2017-08-28 19:12:36 -04:00
rxe_net.c IB/rxe: Remove unneeded initialization in prepare6() 2017-08-28 19:12:35 -04:00
rxe_net.h IB/rxe: improved debug prints & code cleanup 2016-10-06 13:50:04 -04:00
rxe_opcode.c
rxe_opcode.h
rxe_param.h rxe: expose num_possible_cpus() cnum_comp_vectors 2017-05-04 19:33:02 -04:00
rxe_pool.c IB/rxe: Prefer 'unsigned int' to bare use of 'unsigned' 2017-07-24 08:43:12 -04:00
rxe_pool.h IB/rxe: Let the compiler check the type of the cleanup functions 2017-01-10 16:52:47 -05:00
rxe_qp.c IB/rxe: Fix up rxe_qp_cleanup() 2017-08-28 19:12:34 -04:00
rxe_queue.c IB/rxe: Clear queue buffer when modifying QP to reset 2016-11-16 20:03:44 -05:00
rxe_queue.h IB/rxe: Clear queue buffer when modifying QP to reset 2016-11-16 20:03:44 -05:00
rxe_recv.c IB/rxe: Offload CRC calculation when possible 2017-04-21 10:45:02 -04:00
rxe_req.c IB/rxe: Another fix for broken receive queue draining 2017-08-28 19:12:35 -04:00
rxe_resp.c IB/rxe: Fix up the responder's find_resources() function 2017-08-28 19:12:33 -04:00
rxe_srq.c IB/rxe: Remove unneeded cast in rxe_srq_from_attr() 2016-12-12 16:31:45 -05:00
rxe_sysfs.c IB/rxe: improved debug prints & code cleanup 2016-10-06 13:50:04 -04:00
rxe_task.c IB/rxe: Use __func__ to print function's name 2017-07-24 08:43:12 -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 IB/rxe: Disable completion upcalls when a CQ is destroyed 2017-08-28 19:12:32 -04:00
rxe_verbs.h IB/rxe: Fix destination cache for IPv6 2017-08-28 19:12:33 -04:00
rxe.c RDMA: Remove useless MODULE_VERSION 2017-07-24 08:45:11 -04:00
rxe.h IB/rxe: Use "foo *bar" instead of "foo * bar" 2017-07-24 08:43:12 -04:00