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()
67 dev_err(&hdev->pdev->dev, in hclgevf_get_mbx_resp()
69 code0, code1, hdev->mbx_resp.received_resp, i); in hclgevf_get_mbx_resp()
73 mbx_resp = &hdev->mbx_resp; in hclgevf_get_mbx_resp()
83 hclgevf_reset_mbx_resp_status(hdev); in hclgevf_get_mbx_resp()
86 dev_err(&hdev->pdev->dev, in hclgevf_get_mbx_resp()
89 dev_err(&hdev->pdev->dev, in hclgevf_get_mbx_resp()
98 int hclgevf_send_mbx_msg(struct hclgevf_dev *hdev, in hclgevf_send_mbx_msg() argument
109 dev_err(&hdev->pdev->dev, in hclgevf_send_mbx_msg()
120 if (test_bit(HCLGEVF_STATE_NIC_REGISTERED, &hdev->state)) in hclgevf_send_mbx_msg()
121 trace_hclge_vf_mbx_send(hdev, req); in hclgevf_send_mbx_msg()
125 mutex_lock(&hdev->mbx_resp.mbx_mutex); in hclgevf_send_mbx_msg()
126 hclgevf_reset_mbx_resp_status(hdev); in hclgevf_send_mbx_msg()
127 req->match_id = cpu_to_le16(hdev->mbx_resp.match_id); in hclgevf_send_mbx_msg()
128 status = hclgevf_cmd_send(&hdev->hw, &desc, 1); in hclgevf_send_mbx_msg()
130 dev_err(&hdev->pdev->dev, in hclgevf_send_mbx_msg()
133 mutex_unlock(&hdev->mbx_resp.mbx_mutex); in hclgevf_send_mbx_msg()
137 status = hclgevf_get_mbx_resp(hdev, send_msg->code, in hclgevf_send_mbx_msg()
140 mutex_unlock(&hdev->mbx_resp.mbx_mutex); in hclgevf_send_mbx_msg()
143 status = hclgevf_cmd_send(&hdev->hw, &desc, 1); in hclgevf_send_mbx_msg()
145 dev_err(&hdev->pdev->dev, in hclgevf_send_mbx_msg()
162 static void hclgevf_handle_mbx_response(struct hclgevf_dev *hdev, in hclgevf_handle_mbx_response() argument
167 struct hclgevf_mbx_resp_status *resp = &hdev->mbx_resp; in hclgevf_handle_mbx_response()
172 dev_warn(&hdev->pdev->dev, in hclgevf_handle_mbx_response()
194 static void hclgevf_handle_mbx_msg(struct hclgevf_dev *hdev, in hclgevf_handle_mbx_msg() argument
200 if (atomic_read(&hdev->arq.count) >= in hclgevf_handle_mbx_msg()
202 dev_warn(&hdev->pdev->dev, in hclgevf_handle_mbx_msg()
209 memcpy(hdev->arq.msg_q[hdev->arq.tail], &req->msg, in hclgevf_handle_mbx_msg()
211 hclge_mbx_tail_ptr_move_arq(hdev->arq); in hclgevf_handle_mbx_msg()
212 atomic_inc(&hdev->arq.count); in hclgevf_handle_mbx_msg()
214 hclgevf_mbx_task_schedule(hdev); in hclgevf_handle_mbx_msg()
217 void hclgevf_mbx_handler(struct hclgevf_dev *hdev) in hclgevf_mbx_handler() argument
225 crq = &hdev->hw.hw.cmq.crq; in hclgevf_mbx_handler()
227 while (!hclgevf_cmd_crq_empty(&hdev->hw)) { in hclgevf_mbx_handler()
229 &hdev->hw.hw.comm_state)) { in hclgevf_mbx_handler()
230 dev_info(&hdev->pdev->dev, "vf crq need init\n"); in hclgevf_mbx_handler()
240 dev_warn(&hdev->pdev->dev, in hclgevf_mbx_handler()
250 trace_hclge_vf_mbx_get(hdev, req); in hclgevf_mbx_handler()
260 hclgevf_handle_mbx_response(hdev, req); in hclgevf_mbx_handler()
267 hclgevf_handle_mbx_msg(hdev, req); in hclgevf_mbx_handler()
270 dev_err(&hdev->pdev->dev, in hclgevf_mbx_handler()
280 hclgevf_write_dev(&hdev->hw, HCLGE_COMM_NIC_CRQ_HEAD_REG, in hclgevf_mbx_handler()
284 static void hclgevf_parse_promisc_info(struct hclgevf_dev *hdev, in hclgevf_parse_promisc_info() argument
288 dev_info(&hdev->pdev->dev, in hclgevf_parse_promisc_info()
292 void hclgevf_mbx_async_handler(struct hclgevf_dev *hdev) in hclgevf_mbx_async_handler() argument
307 tail = hdev->arq.tail; in hclgevf_mbx_async_handler()
310 while (tail != hdev->arq.head) { in hclgevf_mbx_async_handler()
312 &hdev->hw.hw.comm_state)) { in hclgevf_mbx_async_handler()
313 dev_info(&hdev->pdev->dev, in hclgevf_mbx_async_handler()
318 msg_q = hdev->arq.msg_q[hdev->arq.head]; in hclgevf_mbx_async_handler()
329 hclgevf_update_speed_duplex(hdev, speed, duplex); in hclgevf_mbx_async_handler()
330 hclgevf_update_link_status(hdev, link_status); in hclgevf_mbx_async_handler()
334 &hdev->state); in hclgevf_mbx_async_handler()
341 hdev->hw.mac.supported = in hclgevf_mbx_async_handler()
344 hdev->hw.mac.advertising = in hclgevf_mbx_async_handler()
355 set_bit(reset_type, &hdev->reset_pending); in hclgevf_mbx_async_handler()
356 set_bit(HCLGEVF_RESET_PENDING, &hdev->reset_state); in hclgevf_mbx_async_handler()
357 hclgevf_reset_task_schedule(hdev); in hclgevf_mbx_async_handler()
364 hclgevf_update_port_base_vlan_info(hdev, state, in hclgevf_mbx_async_handler()
368 hclgevf_parse_promisc_info(hdev, le16_to_cpu(msg_q[1])); in hclgevf_mbx_async_handler()
371 dev_err(&hdev->pdev->dev, in hclgevf_mbx_async_handler()
377 hclge_mbx_head_ptr_move_arq(hdev->arq); in hclgevf_mbx_async_handler()
378 atomic_dec(&hdev->arq.count); in hclgevf_mbx_async_handler()
379 msg_q = hdev->arq.msg_q[hdev->arq.head]; in hclgevf_mbx_async_handler()