| // SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) |
| // Copyright (c) 2019 Hisilicon Limited. |
| |
| #include "hnae3.h" |
| #include "hns_roce_device.h" |
| #include "hns_roce_cmd.h" |
| #include "hns_roce_hw_v2.h" |
| |
| int hns_roce_v2_query_cqc_info(struct hns_roce_dev *hr_dev, u32 cqn, |
| int *buffer) |
| { |
| struct hns_roce_v2_cq_context *cq_context; |
| struct hns_roce_cmd_mailbox *mailbox; |
| int ret; |
| |
| mailbox = hns_roce_alloc_cmd_mailbox(hr_dev); |
| if (IS_ERR(mailbox)) |
| return PTR_ERR(mailbox); |
| |
| cq_context = mailbox->buf; |
| ret = hns_roce_cmd_mbox(hr_dev, 0, mailbox->dma, cqn, 0, |
| HNS_ROCE_CMD_QUERY_CQC, |
| HNS_ROCE_CMD_TIMEOUT_MSECS); |
| if (ret) { |
| dev_err(hr_dev->dev, "QUERY cqc cmd process error\n"); |
| goto err_mailbox; |
| } |
| |
| memcpy(buffer, cq_context, sizeof(*cq_context)); |
| |
| err_mailbox: |
| hns_roce_free_cmd_mailbox(hr_dev, mailbox); |
| |
| return ret; |
| } |