diff options
author | Bob Pearson <rpearsonhpe@gmail.com> | 2021-07-06 23:00:37 -0500 |
---|---|---|
committer | Jason Gunthorpe <jgg@nvidia.com> | 2021-07-16 12:43:34 -0300 |
commit | b6c6cc4acdf68f4c98c25fd8975d068009993cd8 (patch) | |
tree | 8ef6666a500583e66e4891f0dc4f0ad5038b65ee /drivers/infiniband/sw/rxe/rxe_icrc.c | |
parent | RDMA/rxe: Move ICRC generation to a subroutine (diff) | |
download | linux-dev-b6c6cc4acdf68f4c98c25fd8975d068009993cd8.tar.xz linux-dev-b6c6cc4acdf68f4c98c25fd8975d068009993cd8.zip |
RDMA/rxe: Move rxe_crc32 to a subroutine
Move rxe_crc32() from rxe.h to rxe_icrc.c as a static local function.
Link: https://lore.kernel.org/r/20210707040040.15434-6-rpearsonhpe@gmail.com
Signed-off-by: Bob Pearson <rpearsonhpe@gmail.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Diffstat (limited to 'drivers/infiniband/sw/rxe/rxe_icrc.c')
-rw-r--r-- | drivers/infiniband/sw/rxe/rxe_icrc.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/infiniband/sw/rxe/rxe_icrc.c b/drivers/infiniband/sw/rxe/rxe_icrc.c index 08ab32eb6445..00916440f17b 100644 --- a/drivers/infiniband/sw/rxe/rxe_icrc.c +++ b/drivers/infiniband/sw/rxe/rxe_icrc.c @@ -7,6 +7,27 @@ #include "rxe.h" #include "rxe_loc.h" +static u32 rxe_crc32(struct rxe_dev *rxe, u32 crc, void *next, size_t len) +{ + u32 icrc; + int err; + + SHASH_DESC_ON_STACK(shash, rxe->tfm); + + shash->tfm = rxe->tfm; + *(u32 *)shash_desc_ctx(shash) = crc; + err = crypto_shash_update(shash, next, len); + if (unlikely(err)) { + pr_warn_ratelimited("failed crc calculation, err: %d\n", err); + return crc32_le(crc, next, len); + } + + icrc = *(u32 *)shash_desc_ctx(shash); + barrier_data(shash_desc_ctx(shash)); + + return icrc; +} + /* Compute a partial ICRC for all the IB transport headers. */ u32 rxe_icrc_hdr(struct rxe_pkt_info *pkt, struct sk_buff *skb) { |