RDMA/efa: Remove redundant NULL pointer check of CQE
A pointer to store the command completion must be provided as it is always used in efa_com_put_comp_ctx() to return the completion context back to the pool. Remove the NULL pointer check and the redundant 'status' field stored on the context as it could be retrieved from the completion itself. Link: https://lore.kernel.org/r/20210126120702.9807-2-galpress@amazon.com Reviewed-by: Firas JahJah <firasj@amazon.com> Reviewed-by: Yossi Leybovich <sleybo@amazon.com> Signed-off-by: Gal Pressman <galpress@amazon.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
This commit is contained in:
parent
c2a54b6873
commit
68fb9f3e31
@ -1,6 +1,6 @@
|
||||
// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
|
||||
/*
|
||||
* Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All rights reserved.
|
||||
* Copyright 2018-2021 Amazon.com, Inc. or its affiliates. All rights reserved.
|
||||
*/
|
||||
|
||||
#include "efa_com.h"
|
||||
@ -33,8 +33,6 @@ struct efa_comp_ctx {
|
||||
struct efa_admin_acq_entry *user_cqe;
|
||||
u32 comp_size;
|
||||
enum efa_cmd_status status;
|
||||
/* status from the device */
|
||||
u8 comp_status;
|
||||
u8 cmd_opcode;
|
||||
u8 occupied;
|
||||
};
|
||||
@ -421,9 +419,7 @@ static void efa_com_handle_single_admin_completion(struct efa_com_admin_queue *a
|
||||
}
|
||||
|
||||
comp_ctx->status = EFA_CMD_COMPLETED;
|
||||
comp_ctx->comp_status = cqe->acq_common_descriptor.status;
|
||||
if (comp_ctx->user_cqe)
|
||||
memcpy(comp_ctx->user_cqe, cqe, comp_ctx->comp_size);
|
||||
memcpy(comp_ctx->user_cqe, cqe, comp_ctx->comp_size);
|
||||
|
||||
if (!test_bit(EFA_AQ_STATE_POLLING_BIT, &aq->state))
|
||||
complete(&comp_ctx->wait_event);
|
||||
@ -521,7 +517,7 @@ static int efa_com_wait_and_process_admin_cq_polling(struct efa_comp_ctx *comp_c
|
||||
msleep(aq->poll_interval);
|
||||
}
|
||||
|
||||
err = efa_com_comp_status_to_errno(comp_ctx->comp_status);
|
||||
err = efa_com_comp_status_to_errno(comp_ctx->user_cqe->acq_common_descriptor.status);
|
||||
out:
|
||||
efa_com_put_comp_ctx(aq, comp_ctx);
|
||||
return err;
|
||||
@ -569,7 +565,7 @@ static int efa_com_wait_and_process_admin_cq_interrupts(struct efa_comp_ctx *com
|
||||
goto out;
|
||||
}
|
||||
|
||||
err = efa_com_comp_status_to_errno(comp_ctx->comp_status);
|
||||
err = efa_com_comp_status_to_errno(comp_ctx->user_cqe->acq_common_descriptor.status);
|
||||
out:
|
||||
efa_com_put_comp_ctx(aq, comp_ctx);
|
||||
return err;
|
||||
@ -641,8 +637,8 @@ int efa_com_cmd_exec(struct efa_com_admin_queue *aq,
|
||||
aq->efa_dev,
|
||||
"Failed to process command %s (opcode %u) comp_status %d err %d\n",
|
||||
efa_com_cmd_str(cmd->aq_common_descriptor.opcode),
|
||||
cmd->aq_common_descriptor.opcode, comp_ctx->comp_status,
|
||||
err);
|
||||
cmd->aq_common_descriptor.opcode,
|
||||
comp_ctx->user_cqe->acq_common_descriptor.status, err);
|
||||
atomic64_inc(&aq->stats.cmd_err);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user