Lines Matching defs:recv_mbox

302 				struct hinic_recv_mbox *recv_mbox,
308 if (recv_mbox->mod >= HINIC_MOD_MAX) {
310 recv_mbox->mod);
315 &func_to_func->vf_mbox_cb_state[recv_mbox->mod]);
317 cb = func_to_func->vf_mbox_cb[recv_mbox->mod];
319 &func_to_func->vf_mbox_cb_state[recv_mbox->mod])) {
320 cb(func_to_func->hwdev, recv_mbox->cmd, recv_mbox->mbox,
321 recv_mbox->mbox_len, buf_out, out_size);
328 &func_to_func->vf_mbox_cb_state[recv_mbox->mod]);
335 struct hinic_recv_mbox *recv_mbox,
343 if (recv_mbox->mod >= HINIC_MOD_MAX) {
345 recv_mbox->mod);
350 &func_to_func->pf_mbox_cb_state[recv_mbox->mod]);
352 cb = func_to_func->pf_mbox_cb[recv_mbox->mod];
354 &func_to_func->pf_mbox_cb_state[recv_mbox->mod])) {
357 ret = cb(func_to_func->hwdev, vf_id, recv_mbox->cmd,
358 recv_mbox->mbox, recv_mbox->mbox_len,
362 recv_mbox->mod);
367 &func_to_func->pf_mbox_cb_state[recv_mbox->mod]);
372 static bool check_mbox_seq_id_and_seg_len(struct hinic_recv_mbox *recv_mbox,
379 recv_mbox->seq_id = seq_id;
381 if (seq_id != recv_mbox->seq_id + 1)
384 recv_mbox->seq_id = seq_id;
391 struct hinic_recv_mbox *recv_mbox)
394 if (recv_mbox->msg_info.msg_id == func_to_func->send_msg_id &&
396 complete(&recv_mbox->recv_done);
400 func_to_func->send_msg_id, recv_mbox->msg_info.msg_id,
401 recv_mbox->msg_info.status);
406 struct hinic_recv_mbox *recv_mbox,
413 struct hinic_recv_mbox *recv_mbox;
415 recv_func_mbox_handler(mbox_work->func_to_func, mbox_work->recv_mbox,
418 recv_mbox =
421 atomic_dec(&recv_mbox->msg_cnt);
427 void *header, struct hinic_recv_mbox *recv_mbox)
441 if (!check_mbox_seq_id_and_seg_len(recv_mbox, seq_id, seg_len)) {
444 src_func_idx, recv_mbox->seq_id, seq_id, seg_len);
445 recv_mbox->seq_id = SEQ_ID_MAX_VAL;
450 memcpy((u8 *)recv_mbox->mbox + pos, mbox_body,
456 recv_mbox->cmd = HINIC_MBOX_HEADER_GET(mbox_header, CMD);
457 recv_mbox->mod = HINIC_MBOX_HEADER_GET(mbox_header, MODULE);
458 recv_mbox->mbox_len = HINIC_MBOX_HEADER_GET(mbox_header, MSG_LEN);
459 recv_mbox->ack_type = HINIC_MBOX_HEADER_GET(mbox_header, NO_ACK);
460 recv_mbox->msg_info.msg_id = HINIC_MBOX_HEADER_GET(mbox_header, MSG_ID);
461 recv_mbox->msg_info.status = HINIC_MBOX_HEADER_GET(mbox_header, STATUS);
462 recv_mbox->seq_id = SEQ_ID_MAX_VAL;
466 resp_mbox_handler(func_to_func, recv_mbox);
470 if (atomic_read(&recv_mbox->msg_cnt) > HINIC_MAX_MSG_CNT_TO_PROCESS) {
473 src_func_idx, atomic_read(&recv_mbox->msg_cnt));
477 rcv_mbox_temp = kmemdup(recv_mbox, sizeof(*rcv_mbox_temp), GFP_KERNEL);
481 rcv_mbox_temp->mbox = kmemdup(recv_mbox->mbox, MBOX_MAX_BUF_SZ,
495 mbox_work->recv_mbox = rcv_mbox_temp;
498 atomic_inc(&recv_mbox->msg_cnt);
623 struct hinic_recv_mbox *recv_mbox;
640 recv_mbox = (dir == HINIC_HWIF_DIRECT_SEND) ?
644 recv_mbox_handler(func_to_func, (u64 *)header, recv_mbox);
904 struct hinic_recv_mbox *recv_mbox, int err,
909 if (recv_mbox->ack_type == MBOX_ACK) {
910 msg_info.msg_id = recv_mbox->msg_info.msg_id;
922 send_mbox_to_func(func_to_func, recv_mbox->mod, recv_mbox->cmd,
923 recv_mbox->buf_out, out_size, src_func_idx,
930 struct hinic_recv_mbox *recv_mbox,
933 void *buf_out = recv_mbox->buf_out;
938 err = recv_vf_mbox_handler(func_to_func, recv_mbox, buf_out,
946 recv_mbox,
951 response_for_recv_func_mbox(func_to_func, recv_mbox, err, out_size,
953 kfree(recv_mbox->buf_out);
954 kfree(recv_mbox->mbox);
955 kfree(recv_mbox);