return status;
}
-static bool hclgevf_cmd_crq_empty(struct hclgevf_hw *hw)
-{
- u32 tail = hclgevf_read_dev(hw, HCLGEVF_NIC_CRQ_TAIL_REG);
-
- return tail == hw->cmq.crq.next_to_use;
-}
-
void hclgevf_mbx_handler(struct hclgevf_dev *hdev)
{
struct hclgevf_mbx_resp_status *resp;
resp = &hdev->mbx_resp;
crq = &hdev->hw.cmq.crq;
- while (!hclgevf_cmd_crq_empty(&hdev->hw)) {
+ flag = le16_to_cpu(crq->desc[crq->next_to_use].flag);
+ while (hnae3_get_bit(flag, HCLGEVF_CMDQ_RX_OUTVLD_B)) {
desc = &crq->desc[crq->next_to_use];
req = (struct hclge_mbx_pf_to_vf_cmd *)desc->data;
- flag = le16_to_cpu(crq->desc[crq->next_to_use].flag);
- if (unlikely(!hnae3_get_bit(flag, HCLGEVF_CMDQ_RX_OUTVLD_B))) {
- dev_warn(&hdev->pdev->dev,
- "dropped invalid mailbox message, code = %d\n",
- req->msg[0]);
-
- /* dropping/not processing this invalid message */
- crq->desc[crq->next_to_use].flag = 0;
- hclge_mbx_ring_ptr_move_crq(crq);
- continue;
- }
-
/* synchronous messages are time critical and need preferential
* treatment. Therefore, we need to acknowledge all the sync
* responses as quickly as possible so that waiting tasks do not
}
crq->desc[crq->next_to_use].flag = 0;
hclge_mbx_ring_ptr_move_crq(crq);
+ flag = le16_to_cpu(crq->desc[crq->next_to_use].flag);
}
/* Write back CMDQ_RQ header pointer, M7 need this pointer */