• Home
  • Raw
  • Download

Lines Matching refs:recv_mbox

307 				struct hinic_recv_mbox *recv_mbox,  in recv_vf_mbox_handler()  argument
313 if (recv_mbox->mod >= HINIC_MOD_MAX) { in recv_vf_mbox_handler()
315 recv_mbox->mod); in recv_vf_mbox_handler()
320 &func_to_func->vf_mbox_cb_state[recv_mbox->mod]); in recv_vf_mbox_handler()
322 cb = func_to_func->vf_mbox_cb[recv_mbox->mod]; in recv_vf_mbox_handler()
324 &func_to_func->vf_mbox_cb_state[recv_mbox->mod])) { in recv_vf_mbox_handler()
325 cb(func_to_func->hwdev, recv_mbox->cmd, recv_mbox->mbox, in recv_vf_mbox_handler()
326 recv_mbox->mbox_len, buf_out, out_size); in recv_vf_mbox_handler()
333 &func_to_func->vf_mbox_cb_state[recv_mbox->mod]); in recv_vf_mbox_handler()
340 struct hinic_recv_mbox *recv_mbox, in recv_pf_from_vf_mbox_handler() argument
348 if (recv_mbox->mod >= HINIC_MOD_MAX) { in recv_pf_from_vf_mbox_handler()
350 recv_mbox->mod); in recv_pf_from_vf_mbox_handler()
355 &func_to_func->pf_mbox_cb_state[recv_mbox->mod]); in recv_pf_from_vf_mbox_handler()
357 cb = func_to_func->pf_mbox_cb[recv_mbox->mod]; in recv_pf_from_vf_mbox_handler()
359 &func_to_func->pf_mbox_cb_state[recv_mbox->mod])) { in recv_pf_from_vf_mbox_handler()
362 ret = cb(func_to_func->hwdev, vf_id, recv_mbox->cmd, in recv_pf_from_vf_mbox_handler()
363 recv_mbox->mbox, recv_mbox->mbox_len, in recv_pf_from_vf_mbox_handler()
367 recv_mbox->mod); in recv_pf_from_vf_mbox_handler()
372 &func_to_func->pf_mbox_cb_state[recv_mbox->mod]); in recv_pf_from_vf_mbox_handler()
377 static bool check_mbox_seq_id_and_seg_len(struct hinic_recv_mbox *recv_mbox, in check_mbox_seq_id_and_seg_len() argument
384 recv_mbox->seq_id = seq_id; in check_mbox_seq_id_and_seg_len()
386 if (seq_id != recv_mbox->seq_id + 1) in check_mbox_seq_id_and_seg_len()
389 recv_mbox->seq_id = seq_id; in check_mbox_seq_id_and_seg_len()
396 struct hinic_recv_mbox *recv_mbox) in resp_mbox_handler() argument
399 if (recv_mbox->msg_info.msg_id == func_to_func->send_msg_id && in resp_mbox_handler()
401 complete(&recv_mbox->recv_done); in resp_mbox_handler()
405 func_to_func->send_msg_id, recv_mbox->msg_info.msg_id, in resp_mbox_handler()
406 recv_mbox->msg_info.status); in resp_mbox_handler()
411 struct hinic_recv_mbox *recv_mbox,
418 struct hinic_recv_mbox *recv_mbox; in recv_func_mbox_work_handler() local
420 recv_func_mbox_handler(mbox_work->func_to_func, mbox_work->recv_mbox, in recv_func_mbox_work_handler()
423 recv_mbox = in recv_func_mbox_work_handler()
426 atomic_dec(&recv_mbox->msg_cnt); in recv_func_mbox_work_handler()
432 void *header, struct hinic_recv_mbox *recv_mbox) in recv_mbox_handler() argument
446 if (!check_mbox_seq_id_and_seg_len(recv_mbox, seq_id, seg_len)) { in recv_mbox_handler()
449 src_func_idx, recv_mbox->seq_id, seq_id, seg_len); in recv_mbox_handler()
450 recv_mbox->seq_id = SEQ_ID_MAX_VAL; in recv_mbox_handler()
455 memcpy((u8 *)recv_mbox->mbox + pos, mbox_body, in recv_mbox_handler()
461 recv_mbox->cmd = HINIC_MBOX_HEADER_GET(mbox_header, CMD); in recv_mbox_handler()
462 recv_mbox->mod = HINIC_MBOX_HEADER_GET(mbox_header, MODULE); in recv_mbox_handler()
463 recv_mbox->mbox_len = HINIC_MBOX_HEADER_GET(mbox_header, MSG_LEN); in recv_mbox_handler()
464 recv_mbox->ack_type = HINIC_MBOX_HEADER_GET(mbox_header, NO_ACK); in recv_mbox_handler()
465 recv_mbox->msg_info.msg_id = HINIC_MBOX_HEADER_GET(mbox_header, MSG_ID); in recv_mbox_handler()
466 recv_mbox->msg_info.status = HINIC_MBOX_HEADER_GET(mbox_header, STATUS); in recv_mbox_handler()
467 recv_mbox->seq_id = SEQ_ID_MAX_VAL; in recv_mbox_handler()
471 resp_mbox_handler(func_to_func, recv_mbox); in recv_mbox_handler()
475 if (atomic_read(&recv_mbox->msg_cnt) > HINIC_MAX_MSG_CNT_TO_PROCESS) { in recv_mbox_handler()
478 src_func_idx, atomic_read(&recv_mbox->msg_cnt)); in recv_mbox_handler()
482 rcv_mbox_temp = kmemdup(recv_mbox, sizeof(*rcv_mbox_temp), GFP_KERNEL); in recv_mbox_handler()
486 rcv_mbox_temp->mbox = kmemdup(recv_mbox->mbox, MBOX_MAX_BUF_SZ, in recv_mbox_handler()
500 mbox_work->recv_mbox = rcv_mbox_temp; in recv_mbox_handler()
503 atomic_inc(&recv_mbox->msg_cnt); in recv_mbox_handler()
628 struct hinic_recv_mbox *recv_mbox; in hinic_mbox_func_aeqe_handler() local
645 recv_mbox = (dir == HINIC_HWIF_DIRECT_SEND) ? in hinic_mbox_func_aeqe_handler()
649 recv_mbox_handler(func_to_func, (u64 *)header, recv_mbox); in hinic_mbox_func_aeqe_handler()
909 struct hinic_recv_mbox *recv_mbox, int err, in response_for_recv_func_mbox() argument
914 if (recv_mbox->ack_type == MBOX_ACK) { in response_for_recv_func_mbox()
915 msg_info.msg_id = recv_mbox->msg_info.msg_id; in response_for_recv_func_mbox()
927 send_mbox_to_func(func_to_func, recv_mbox->mod, recv_mbox->cmd, in response_for_recv_func_mbox()
928 recv_mbox->buf_out, out_size, src_func_idx, in response_for_recv_func_mbox()
935 struct hinic_recv_mbox *recv_mbox, in recv_func_mbox_handler() argument
938 void *buf_out = recv_mbox->buf_out; in recv_func_mbox_handler()
943 err = recv_vf_mbox_handler(func_to_func, recv_mbox, buf_out, in recv_func_mbox_handler()
951 recv_mbox, in recv_func_mbox_handler()
956 response_for_recv_func_mbox(func_to_func, recv_mbox, err, out_size, in recv_func_mbox_handler()
958 kfree(recv_mbox->buf_out); in recv_func_mbox_handler()
959 kfree(recv_mbox->mbox); in recv_func_mbox_handler()
960 kfree(recv_mbox); in recv_func_mbox_handler()