Lines Matching refs:hdev

17 static void hclgevf_reset_mbx_resp_status(struct hclgevf_dev *hdev)  in hclgevf_reset_mbx_resp_status()  argument
22 hdev->mbx_resp.received_resp = false; in hclgevf_reset_mbx_resp_status()
23 hdev->mbx_resp.origin_mbx_msg = 0; in hclgevf_reset_mbx_resp_status()
24 hdev->mbx_resp.resp_status = 0; in hclgevf_reset_mbx_resp_status()
25 hdev->mbx_resp.match_id++; in hclgevf_reset_mbx_resp_status()
27 if (hdev->mbx_resp.match_id == 0) in hclgevf_reset_mbx_resp_status()
28 hdev->mbx_resp.match_id = HCLGEVF_MBX_MATCH_ID_START; in hclgevf_reset_mbx_resp_status()
29 memset(hdev->mbx_resp.additional_info, 0, HCLGE_MBX_MAX_RESP_DATA_SIZE); in hclgevf_reset_mbx_resp_status()
40 static int hclgevf_get_mbx_resp(struct hclgevf_dev *hdev, u16 code0, u16 code1, in hclgevf_get_mbx_resp() argument
50 dev_err(&hdev->pdev->dev, in hclgevf_get_mbx_resp()
57 while ((!hdev->mbx_resp.received_resp) && (i < HCLGEVF_MAX_TRY_TIMES)) { in hclgevf_get_mbx_resp()
59 &hdev->hw.hw.comm_state)) in hclgevf_get_mbx_resp()
70 dev_err(&hdev->pdev->dev, in hclgevf_get_mbx_resp()
72 code0, code1, hdev->mbx_resp.received_resp, i); in hclgevf_get_mbx_resp()
76 mbx_resp = &hdev->mbx_resp; in hclgevf_get_mbx_resp()
86 hclgevf_reset_mbx_resp_status(hdev); in hclgevf_get_mbx_resp()
89 dev_err(&hdev->pdev->dev, in hclgevf_get_mbx_resp()
92 dev_err(&hdev->pdev->dev, in hclgevf_get_mbx_resp()
101 int hclgevf_send_mbx_msg(struct hclgevf_dev *hdev, in hclgevf_send_mbx_msg() argument
112 dev_err(&hdev->pdev->dev, in hclgevf_send_mbx_msg()
123 if (test_bit(HCLGEVF_STATE_NIC_REGISTERED, &hdev->state)) in hclgevf_send_mbx_msg()
124 trace_hclge_vf_mbx_send(hdev, req); in hclgevf_send_mbx_msg()
128 mutex_lock(&hdev->mbx_resp.mbx_mutex); in hclgevf_send_mbx_msg()
129 hclgevf_reset_mbx_resp_status(hdev); in hclgevf_send_mbx_msg()
130 req->match_id = cpu_to_le16(hdev->mbx_resp.match_id); in hclgevf_send_mbx_msg()
131 status = hclgevf_cmd_send(&hdev->hw, &desc, 1); in hclgevf_send_mbx_msg()
133 dev_err(&hdev->pdev->dev, in hclgevf_send_mbx_msg()
136 mutex_unlock(&hdev->mbx_resp.mbx_mutex); in hclgevf_send_mbx_msg()
140 status = hclgevf_get_mbx_resp(hdev, send_msg->code, in hclgevf_send_mbx_msg()
143 mutex_unlock(&hdev->mbx_resp.mbx_mutex); in hclgevf_send_mbx_msg()
146 status = hclgevf_cmd_send(&hdev->hw, &desc, 1); in hclgevf_send_mbx_msg()
148 dev_err(&hdev->pdev->dev, in hclgevf_send_mbx_msg()
165 static void hclgevf_handle_mbx_response(struct hclgevf_dev *hdev, in hclgevf_handle_mbx_response() argument
170 struct hclgevf_mbx_resp_status *resp = &hdev->mbx_resp; in hclgevf_handle_mbx_response()
175 dev_warn(&hdev->pdev->dev, in hclgevf_handle_mbx_response()
201 static void hclgevf_handle_mbx_msg(struct hclgevf_dev *hdev, in hclgevf_handle_mbx_msg() argument
207 if (atomic_read(&hdev->arq.count) >= in hclgevf_handle_mbx_msg()
209 dev_warn(&hdev->pdev->dev, in hclgevf_handle_mbx_msg()
216 memcpy(hdev->arq.msg_q[hdev->arq.tail], &req->msg, in hclgevf_handle_mbx_msg()
218 hclge_mbx_tail_ptr_move_arq(hdev->arq); in hclgevf_handle_mbx_msg()
219 atomic_inc(&hdev->arq.count); in hclgevf_handle_mbx_msg()
221 hclgevf_mbx_task_schedule(hdev); in hclgevf_handle_mbx_msg()
224 void hclgevf_mbx_handler(struct hclgevf_dev *hdev) in hclgevf_mbx_handler() argument
232 crq = &hdev->hw.hw.cmq.crq; in hclgevf_mbx_handler()
234 while (!hclgevf_cmd_crq_empty(&hdev->hw)) { in hclgevf_mbx_handler()
236 &hdev->hw.hw.comm_state)) { in hclgevf_mbx_handler()
237 dev_info(&hdev->pdev->dev, "vf crq need init\n"); in hclgevf_mbx_handler()
247 dev_warn(&hdev->pdev->dev, in hclgevf_mbx_handler()
257 trace_hclge_vf_mbx_get(hdev, req); in hclgevf_mbx_handler()
267 hclgevf_handle_mbx_response(hdev, req); in hclgevf_mbx_handler()
274 hclgevf_handle_mbx_msg(hdev, req); in hclgevf_mbx_handler()
277 dev_err(&hdev->pdev->dev, in hclgevf_mbx_handler()
287 hclgevf_write_dev(&hdev->hw, HCLGE_COMM_NIC_CRQ_HEAD_REG, in hclgevf_mbx_handler()
291 static void hclgevf_parse_promisc_info(struct hclgevf_dev *hdev, in hclgevf_parse_promisc_info() argument
295 dev_info(&hdev->pdev->dev, in hclgevf_parse_promisc_info()
299 void hclgevf_mbx_async_handler(struct hclgevf_dev *hdev) in hclgevf_mbx_async_handler() argument
314 tail = hdev->arq.tail; in hclgevf_mbx_async_handler()
317 while (tail != hdev->arq.head) { in hclgevf_mbx_async_handler()
319 &hdev->hw.hw.comm_state)) { in hclgevf_mbx_async_handler()
320 dev_info(&hdev->pdev->dev, in hclgevf_mbx_async_handler()
325 msg_q = hdev->arq.msg_q[hdev->arq.head]; in hclgevf_mbx_async_handler()
336 hclgevf_update_speed_duplex(hdev, speed, duplex); in hclgevf_mbx_async_handler()
337 hclgevf_update_link_status(hdev, link_status); in hclgevf_mbx_async_handler()
341 &hdev->state); in hclgevf_mbx_async_handler()
348 hdev->hw.mac.supported = in hclgevf_mbx_async_handler()
351 hdev->hw.mac.advertising = in hclgevf_mbx_async_handler()
362 set_bit(reset_type, &hdev->reset_pending); in hclgevf_mbx_async_handler()
363 set_bit(HCLGEVF_RESET_PENDING, &hdev->reset_state); in hclgevf_mbx_async_handler()
364 hclgevf_reset_task_schedule(hdev); in hclgevf_mbx_async_handler()
371 hclgevf_update_port_base_vlan_info(hdev, state, in hclgevf_mbx_async_handler()
375 hclgevf_parse_promisc_info(hdev, le16_to_cpu(msg_q[1])); in hclgevf_mbx_async_handler()
378 dev_err(&hdev->pdev->dev, in hclgevf_mbx_async_handler()
384 hclge_mbx_head_ptr_move_arq(hdev->arq); in hclgevf_mbx_async_handler()
385 atomic_dec(&hdev->arq.count); in hclgevf_mbx_async_handler()
386 msg_q = hdev->arq.msg_q[hdev->arq.head]; in hclgevf_mbx_async_handler()