Skip to content

Commit

Permalink
crypto: cpt - Fix sparse warnings
Browse files Browse the repository at this point in the history
This patch fixes all the sparse warnings in the octeontx driver.
Some of these are just trivial type changes.

However, some of the changes are non-trivial on little-endian hosts.
Obviously the driver appears to be broken on either LE or BE as it
was doing different things.  I've taken the BE behaviour as the
correct one.

Signed-off-by: Herbert Xu <[email protected]>
  • Loading branch information
herbertx committed Jul 3, 2020
1 parent f532ed2 commit c414943
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 23 deletions.
9 changes: 5 additions & 4 deletions drivers/crypto/cavium/cpt/cptvf_algs.c
Original file line number Diff line number Diff line change
Expand Up @@ -99,10 +99,10 @@ static inline u32 create_ctx_hdr(struct skcipher_request *req, u32 enc,
struct cvm_enc_ctx *ctx = crypto_skcipher_ctx(tfm);
struct cvm_req_ctx *rctx = skcipher_request_ctx(req);
struct fc_context *fctx = &rctx->fctx;
u64 *offset_control = &rctx->control_word;
u32 enc_iv_len = crypto_skcipher_ivsize(tfm);
struct cpt_request_info *req_info = &rctx->cpt_req;
u64 *ctrl_flags = NULL;
__be64 *ctrl_flags = NULL;
__be64 *offset_control;

req_info->ctrl.s.grp = 0;
req_info->ctrl.s.dma_mode = DMA_GATHER_SCATTER;
Expand All @@ -126,9 +126,10 @@ static inline u32 create_ctx_hdr(struct skcipher_request *req, u32 enc,
memcpy(fctx->enc.encr_key, ctx->enc_key, ctx->key_len * 2);
else
memcpy(fctx->enc.encr_key, ctx->enc_key, ctx->key_len);
ctrl_flags = (u64 *)&fctx->enc.enc_ctrl.flags;
*ctrl_flags = cpu_to_be64(*ctrl_flags);
ctrl_flags = (__be64 *)&fctx->enc.enc_ctrl.flags;
*ctrl_flags = cpu_to_be64(fctx->enc.enc_ctrl.flags);

offset_control = (__be64 *)&rctx->control_word;
*offset_control = cpu_to_be64(((u64)(enc_iv_len) << 16));
/* Storing Packet Data Information in offset
* Control Word First 8 bytes
Expand Down
12 changes: 5 additions & 7 deletions drivers/crypto/cavium/cpt/cptvf_reqmanager.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
*/

#include "cptvf.h"
#include "cptvf_algs.h"
#include "request_manager.h"

/**
Expand Down Expand Up @@ -173,11 +174,10 @@ static inline int setup_sgio_list(struct cpt_vf *cptvf,
goto scatter_gather_clean;
}

((u16 *)info->in_buffer)[0] = req->outcnt;
((u16 *)info->in_buffer)[1] = req->incnt;
((u16 *)info->in_buffer)[2] = 0;
((u16 *)info->in_buffer)[3] = 0;
*(u64 *)info->in_buffer = cpu_to_be64p((u64 *)info->in_buffer);
((__be16 *)info->in_buffer)[0] = cpu_to_be16(req->outcnt);
((__be16 *)info->in_buffer)[1] = cpu_to_be16(req->incnt);
((__be16 *)info->in_buffer)[2] = 0;
((__be16 *)info->in_buffer)[3] = 0;

memcpy(&info->in_buffer[8], info->gather_components,
g_sz_bytes);
Expand Down Expand Up @@ -470,8 +470,6 @@ int process_request(struct cpt_vf *cptvf, struct cpt_request_info *req)
vq_cmd.cmd.s.param2 = cpu_to_be16(cpt_req->param2);
vq_cmd.cmd.s.dlen = cpu_to_be16(cpt_req->dlen);

/* 64-bit swap for microcode data reads, not needed for addresses*/
vq_cmd.cmd.u64 = cpu_to_be64(vq_cmd.cmd.u64);
vq_cmd.dptr = info->dptr_baddr;
vq_cmd.rptr = info->rptr_baddr;
vq_cmd.cptr.u64 = 0;
Expand Down
24 changes: 12 additions & 12 deletions drivers/crypto/cavium/cpt/request_manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,16 +75,16 @@ struct sglist_component {
union {
u64 len;
struct {
u16 len0;
u16 len1;
u16 len2;
u16 len3;
__be16 len0;
__be16 len1;
__be16 len2;
__be16 len3;
} s;
} u;
u64 ptr0;
u64 ptr1;
u64 ptr2;
u64 ptr3;
__be64 ptr0;
__be64 ptr1;
__be64 ptr2;
__be64 ptr3;
};

struct cpt_info_buffer {
Expand Down Expand Up @@ -114,10 +114,10 @@ struct cpt_info_buffer {
union vq_cmd_word0 {
u64 u64;
struct {
u16 opcode;
u16 param1;
u16 param2;
u16 dlen;
__be16 opcode;
__be16 param1;
__be16 param2;
__be16 dlen;
} s;
};

Expand Down

0 comments on commit c414943

Please sign in to comment.