Lines Matching defs:func_to_func

146 #define MBOX_MSG_ID(func_to_func)	((func_to_func)->send_msg_id)
228 struct hinic_mbox_func_to_func *func_to_func = hwdev->func_to_func;
233 func_to_func->pf_mbox_cb[mod] = callback;
235 set_bit(HINIC_PF_MBOX_CB_REG, &func_to_func->pf_mbox_cb_state[mod]);
251 struct hinic_mbox_func_to_func *func_to_func = hwdev->func_to_func;
256 func_to_func->vf_mbox_cb[mod] = callback;
258 set_bit(HINIC_VF_MBOX_CB_REG, &func_to_func->vf_mbox_cb_state[mod]);
271 struct hinic_mbox_func_to_func *func_to_func = hwdev->func_to_func;
273 clear_bit(HINIC_PF_MBOX_CB_REG, &func_to_func->pf_mbox_cb_state[mod]);
276 &func_to_func->pf_mbox_cb_state[mod]))
279 func_to_func->pf_mbox_cb[mod] = NULL;
290 struct hinic_mbox_func_to_func *func_to_func = hwdev->func_to_func;
292 clear_bit(HINIC_VF_MBOX_CB_REG, &func_to_func->vf_mbox_cb_state[mod]);
295 &func_to_func->vf_mbox_cb_state[mod]))
298 func_to_func->vf_mbox_cb[mod] = NULL;
301 static int recv_vf_mbox_handler(struct hinic_mbox_func_to_func *func_to_func,
309 dev_err(&func_to_func->hwif->pdev->dev, "Receive illegal mbox message, mod = %d\n",
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,
323 dev_err(&func_to_func->hwif->pdev->dev, "VF mbox cb is not registered\n");
328 &func_to_func->vf_mbox_cb_state[recv_mbox->mod]);
334 recv_pf_from_vf_mbox_handler(struct hinic_mbox_func_to_func *func_to_func,
344 dev_err(&func_to_func->hwif->pdev->dev, "Receive illegal mbox message, mod = %d\n",
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])) {
356 hinic_glb_pf_vf_offset(func_to_func->hwif);
357 ret = cb(func_to_func->hwdev, vf_id, recv_mbox->cmd,
361 dev_err(&func_to_func->hwif->pdev->dev, "PF mbox mod(0x%x) cb is not registered\n",
367 &func_to_func->pf_mbox_cb_state[recv_mbox->mod]);
390 static void resp_mbox_handler(struct hinic_mbox_func_to_func *func_to_func,
393 spin_lock(&func_to_func->mbox_lock);
394 if (recv_mbox->msg_info.msg_id == func_to_func->send_msg_id &&
395 func_to_func->event_flag == EVENT_START)
398 dev_err(&func_to_func->hwif->pdev->dev,
400 func_to_func->send_msg_id, recv_mbox->msg_info.msg_id,
402 spin_unlock(&func_to_func->mbox_lock);
405 static void recv_func_mbox_handler(struct hinic_mbox_func_to_func *func_to_func,
415 recv_func_mbox_handler(mbox_work->func_to_func, mbox_work->recv_mbox,
419 &mbox_work->func_to_func->mbox_send[mbox_work->src_func_idx];
426 static void recv_mbox_handler(struct hinic_mbox_func_to_func *func_to_func,
442 dev_err(&func_to_func->hwif->pdev->dev,
466 resp_mbox_handler(func_to_func, recv_mbox);
471 dev_warn(&func_to_func->hwif->pdev->dev,
494 mbox_work->func_to_func = func_to_func;
500 queue_work(func_to_func->workq, &mbox_work->work);
516 struct hinic_mbox_func_to_func *func_to_func = hwdev->func_to_func;
529 func_to_func->vf_mbx_rand_id[func_id] = rand_info.random_id;
545 func_to_func->vf_mbx_old_rand_id[func_id] =
546 func_to_func->vf_mbx_rand_id[func_id];
555 struct hinic_mbox_func_to_func *func_to_func;
558 func_to_func = mbox_work->func_to_func;
560 if (set_vf_mbox_random_id(func_to_func->hwdev, src))
561 dev_warn(&func_to_func->hwdev->hwif->pdev->dev, "Update VF id: 0x%x random id failed\n",
567 static bool check_vf_mbox_random_id(struct hinic_mbox_func_to_func *func_to_func,
570 struct hinic_hwdev *hwdev = func_to_func->hwdev;
579 if (IS_PF_OR_PPF_SRC(src) || !func_to_func->support_vf_random)
598 if (random_id == func_to_func->vf_mbx_rand_id[src] ||
599 random_id == func_to_func->vf_mbx_old_rand_id[src])
604 random_id, src, func_to_func->vf_mbx_rand_id[src]);
610 mbox_work->func_to_func = func_to_func;
614 queue_work(func_to_func->workq, &mbox_work->work);
621 struct hinic_mbox_func_to_func *func_to_func;
626 func_to_func = ((struct hinic_hwdev *)handle)->func_to_func;
632 dev_err(&func_to_func->hwif->pdev->dev,
637 if (!check_vf_mbox_random_id(func_to_func, header))
641 &func_to_func->mbox_send[src] :
642 &func_to_func->mbox_resp[src];
644 recv_mbox_handler(func_to_func, (u64 *)header, recv_mbox);
649 struct hinic_mbox_func_to_func *func_to_func;
652 func_to_func = ((struct hinic_hwdev *)handle)->func_to_func;
653 send_mbox = &func_to_func->send_mbox;
699 static void write_mbox_msg_attr(struct hinic_mbox_func_to_func *func_to_func,
716 hinic_hwif_write_reg(func_to_func->hwif,
727 hinic_hwif_write_reg(func_to_func->hwif,
756 wait_for_mbox_seg_completion(struct hinic_mbox_func_to_func *func_to_func,
759 struct hinic_send_mbox *send_mbox = &func_to_func->send_mbox;
760 struct hinic_hwdev *hwdev = func_to_func->hwdev;
796 static int send_mbox_seg(struct hinic_mbox_func_to_func *func_to_func,
800 struct hinic_send_mbox *send_mbox = &func_to_func->send_mbox;
802 struct hinic_hwdev *hwdev = func_to_func->hwdev;
822 write_mbox_msg_attr(func_to_func, dst_func, dst_aeqn, seg_len, poll);
826 if (wait_for_mbox_seg_completion(func_to_func, poll, &wb_status))
839 static int send_mbox_to_func(struct hinic_mbox_func_to_func *func_to_func,
846 struct hinic_hwdev *hwdev = func_to_func->hwdev;
854 down(&func_to_func->msg_send_sem);
879 err = send_mbox_seg(func_to_func, header, dst_func, msg_seg,
897 up(&func_to_func->msg_send_sem);
903 response_for_recv_func_mbox(struct hinic_mbox_func_to_func *func_to_func,
922 send_mbox_to_func(func_to_func, recv_mbox->mod, recv_mbox->cmd,
929 static void recv_func_mbox_handler(struct hinic_mbox_func_to_func *func_to_func,
937 if (HINIC_IS_VF(func_to_func->hwif)) {
938 err = recv_vf_mbox_handler(func_to_func, recv_mbox, buf_out,
942 dev_warn(&func_to_func->hwif->pdev->dev,
945 err = recv_pf_from_vf_mbox_handler(func_to_func,
951 response_for_recv_func_mbox(func_to_func, recv_mbox, err, out_size,
958 static void set_mbox_to_func_event(struct hinic_mbox_func_to_func *func_to_func,
961 spin_lock(&func_to_func->mbox_lock);
962 func_to_func->event_flag = event_flag;
963 spin_unlock(&func_to_func->mbox_lock);
966 static int mbox_resp_info_handler(struct hinic_mbox_func_to_func *func_to_func,
976 dev_err(&func_to_func->hwif->pdev->dev, "Mbox response error(0x%x)\n",
983 dev_err(&func_to_func->hwif->pdev->dev,
999 int hinic_mbox_to_func(struct hinic_mbox_func_to_func *func_to_func,
1009 mbox_for_resp = &func_to_func->mbox_resp[dst_func];
1011 down(&func_to_func->mbox_send_sem);
1015 msg_info.msg_id = MBOX_MSG_ID_INC(func_to_func);
1017 set_mbox_to_func_event(func_to_func, EVENT_START);
1019 err = send_mbox_to_func(func_to_func, mod, cmd, buf_in, in_size,
1023 dev_err(&func_to_func->hwif->pdev->dev, "Send mailbox failed, msg_id: %d\n",
1025 set_mbox_to_func_event(func_to_func, EVENT_FAIL);
1031 set_mbox_to_func_event(func_to_func, EVENT_TIMEOUT);
1032 dev_err(&func_to_func->hwif->pdev->dev,
1034 hinic_dump_aeq_info(func_to_func->hwdev);
1039 set_mbox_to_func_event(func_to_func, EVENT_END);
1041 err = mbox_resp_info_handler(func_to_func, mbox_for_resp, mod, cmd,
1045 up(&func_to_func->mbox_send_sem);
1050 static int mbox_func_params_valid(struct hinic_mbox_func_to_func *func_to_func,
1054 dev_err(&func_to_func->hwif->pdev->dev,
1067 struct hinic_mbox_func_to_func *func_to_func = hwdev->func_to_func;
1068 int err = mbox_func_params_valid(func_to_func, buf_in, in_size);
1079 return hinic_mbox_to_func(func_to_func, mod, cmd,
1088 struct hinic_mbox_func_to_func *func_to_func;
1095 func_to_func = hwdev->func_to_func;
1096 err = mbox_func_params_valid(func_to_func, buf_in, in_size);
1117 return hinic_mbox_to_func(func_to_func, mod, cmd, dst_func_idx, buf_in,
1185 static void prepare_send_mbox(struct hinic_mbox_func_to_func *func_to_func)
1187 struct hinic_send_mbox *send_mbox = &func_to_func->send_mbox;
1189 send_mbox->data = MBOX_AREA(func_to_func->hwif);
1192 static int alloc_mbox_wb_status(struct hinic_mbox_func_to_func *func_to_func)
1194 struct hinic_send_mbox *send_mbox = &func_to_func->send_mbox;
1195 struct hinic_hwdev *hwdev = func_to_func->hwdev;
1218 static void free_mbox_wb_status(struct hinic_mbox_func_to_func *func_to_func)
1220 struct hinic_send_mbox *send_mbox = &func_to_func->send_mbox;
1221 struct hinic_hwdev *hwdev = func_to_func->hwdev;
1400 struct hinic_mbox_func_to_func *func_to_func;
1405 func_to_func = kzalloc(sizeof(*func_to_func), GFP_KERNEL);
1406 if (!func_to_func)
1409 hwdev->func_to_func = func_to_func;
1410 func_to_func->hwdev = hwdev;
1411 func_to_func->hwif = hwdev->hwif;
1412 sema_init(&func_to_func->mbox_send_sem, 1);
1413 sema_init(&func_to_func->msg_send_sem, 1);
1414 spin_lock_init(&func_to_func->mbox_lock);
1415 func_to_func->workq = create_singlethread_workqueue(HINIC_MBOX_WQ_NAME);
1416 if (!func_to_func->workq) {
1422 err = alloc_mbox_info(hwdev, func_to_func->mbox_send);
1428 err = alloc_mbox_info(hwdev, func_to_func->mbox_resp);
1434 err = alloc_mbox_wb_status(func_to_func);
1440 prepare_send_mbox(func_to_func);
1454 free_mbox_info(func_to_func->mbox_resp);
1457 free_mbox_info(func_to_func->mbox_send);
1460 destroy_workqueue(func_to_func->workq);
1463 kfree(func_to_func);
1470 struct hinic_mbox_func_to_func *func_to_func = hwdev->func_to_func;
1479 destroy_workqueue(func_to_func->workq);
1481 free_mbox_wb_status(func_to_func);
1482 free_mbox_info(func_to_func->mbox_resp);
1483 free_mbox_info(func_to_func->mbox_send);
1485 kfree(func_to_func);
1506 hwdev->func_to_func->support_vf_random = false;
1511 hwdev->func_to_func->support_vf_random = true;