Lines Matching full:mbox
106 struct mbox *mbox = &pf->mbox; in otx2_flr_handler() local
112 mutex_lock(&mbox->lock); in otx2_flr_handler()
113 req = otx2_mbox_alloc_msg_vf_flr(mbox); in otx2_flr_handler()
115 mutex_unlock(&mbox->lock); in otx2_flr_handler()
121 if (!otx2_sync_mbox_msg(&pf->mbox)) { in otx2_flr_handler()
131 mutex_unlock(&mbox->lock); in otx2_flr_handler()
285 static void otx2_queue_work(struct mbox *mw, struct workqueue_struct *mbox_wq, in otx2_queue_work()
289 struct otx2_mbox *mbox; in otx2_queue_work() local
298 mbox = &mw->mbox; in otx2_queue_work()
299 mdev = &mbox->dev[i]; in otx2_queue_work()
301 otx2_sync_mbox_bbuf(mbox, i); in otx2_queue_work()
302 hdr = mdev->mbase + mbox->rx_start; in otx2_queue_work()
306 * pf->mbox.num_msgs holds the data for use in pfaf_mbox_handler in otx2_queue_work()
307 * pf>mbox.up_num_msgs holds the data for use in in otx2_queue_work()
314 memset(mbox->hwbase + mbox->rx_start, 0, in otx2_queue_work()
321 mbox = &mw->mbox_up; in otx2_queue_work()
322 mdev = &mbox->dev[i]; in otx2_queue_work()
324 otx2_sync_mbox_bbuf(mbox, i); in otx2_queue_work()
325 hdr = mdev->mbase + mbox->rx_start; in otx2_queue_work()
330 memset(mbox->hwbase + mbox->rx_start, 0, in otx2_queue_work()
346 /* Msgs are already copied, trigger VF's mbox irq */ in otx2_forward_msg_pfvf()
352 /* Restore VF's mbox bounce buffer region address */ in otx2_forward_msg_pfvf()
363 struct mbox *dst_mbox; in otx2_forward_vf_mbox_msgs()
368 * that explicit copying of VF's msgs to PF=>AF mbox region in otx2_forward_vf_mbox_msgs()
369 * and AF=>PF responses to VF's mbox region can be avoided. in otx2_forward_vf_mbox_msgs()
375 dst_mbox = &pf->mbox; in otx2_forward_vf_mbox_msgs()
376 dst_size = dst_mbox->mbox.tx_size - in otx2_forward_vf_mbox_msgs()
382 dst_mdev = &dst_mbox->mbox.dev[0]; in otx2_forward_vf_mbox_msgs()
384 mutex_lock(&pf->mbox.lock); in otx2_forward_vf_mbox_msgs()
393 dst_mdev->mbase = pf->mbox.bbuf_base; in otx2_forward_vf_mbox_msgs()
394 mutex_unlock(&pf->mbox.lock); in otx2_forward_vf_mbox_msgs()
402 dst_mbox->mbox.rx_start); in otx2_forward_vf_mbox_msgs()
405 otx2_forward_msg_pfvf(dst_mdev, &pf->mbox_pfvf[0].mbox, in otx2_forward_vf_mbox_msgs()
406 pf->mbox.bbuf_base, vf); in otx2_forward_vf_mbox_msgs()
407 mutex_unlock(&pf->mbox.lock); in otx2_forward_vf_mbox_msgs()
437 &pf->mbox.mbox_up, in otx2_forward_vf_mbox_msgs()
451 struct otx2_mbox *mbox; in otx2_pfvf_mbox_handler() local
452 struct mbox *vf_mbox; in otx2_pfvf_mbox_handler()
455 vf_mbox = container_of(work, struct mbox, mbox_wrk); in otx2_pfvf_mbox_handler()
459 mbox = &pf->mbox_pfvf[0].mbox; in otx2_pfvf_mbox_handler()
460 mdev = &mbox->dev[vf_idx]; in otx2_pfvf_mbox_handler()
461 req_hdr = (struct mbox_hdr *)(mdev->mbase + mbox->rx_start); in otx2_pfvf_mbox_handler()
466 msg = (struct mbox_msghdr *)(mdev->mbase + mbox->rx_start + in otx2_pfvf_mbox_handler()
477 err = otx2_forward_vf_mbox_msgs(pf, mbox, MBOX_DIR_PFAF, vf_idx, in otx2_pfvf_mbox_handler()
484 otx2_reply_invalid_msg(mbox, vf_idx, 0, msg->id); in otx2_pfvf_mbox_handler()
485 otx2_mbox_msg_send(mbox, vf_idx); in otx2_pfvf_mbox_handler()
490 struct mbox *vf_mbox = container_of(work, struct mbox, mbox_up_wrk); in otx2_pfvf_mbox_up_handler()
496 struct otx2_mbox *mbox; in otx2_pfvf_mbox_up_handler() local
499 mbox = &pf->mbox_pfvf[0].mbox_up; in otx2_pfvf_mbox_up_handler()
500 mdev = &mbox->dev[vf_idx]; in otx2_pfvf_mbox_up_handler()
502 rsp_hdr = (struct mbox_hdr *)(mdev->mbase + mbox->rx_start); in otx2_pfvf_mbox_up_handler()
503 offset = mbox->rx_start + ALIGN(sizeof(*rsp_hdr), MBOX_MSG_ALIGN); in otx2_pfvf_mbox_up_handler()
510 "Mbox msg with unknown ID 0x%x\n", msg->id); in otx2_pfvf_mbox_up_handler()
516 "Mbox msg with wrong signature %x, ID 0x%x\n", in otx2_pfvf_mbox_up_handler()
527 "Mbox msg response has err %d, ID 0x%x\n", in otx2_pfvf_mbox_up_handler()
533 offset = mbox->rx_start + msg->next_msgoff; in otx2_pfvf_mbox_up_handler()
535 __otx2_mbox_reset(mbox, 0); in otx2_pfvf_mbox_up_handler()
544 struct mbox *mbox; in otx2_pfvf_mbox_intr_handler() local
547 mbox = pf->mbox_pfvf; in otx2_pfvf_mbox_intr_handler()
552 otx2_queue_work(mbox, pf->mbox_pfvf_wq, 64, vfs, intr, in otx2_pfvf_mbox_intr_handler()
560 otx2_queue_work(mbox, pf->mbox_pfvf_wq, 0, vfs, intr, TYPE_PFVF); in otx2_pfvf_mbox_intr_handler()
562 trace_otx2_msg_interrupt(mbox->mbox.pdev, "VF(s) to PF", intr); in otx2_pfvf_mbox_intr_handler()
570 struct mbox *mbox; in otx2_pfvf_mbox_init() local
578 sizeof(struct mbox), GFP_KERNEL); in otx2_pfvf_mbox_init()
604 mbox = &pf->mbox_pfvf[0]; in otx2_pfvf_mbox_init()
605 err = otx2_mbox_init(&mbox->mbox, hwbase, pf->pdev, pf->reg_base, in otx2_pfvf_mbox_init()
610 err = otx2_mbox_init(&mbox->mbox_up, hwbase, pf->pdev, pf->reg_base, in otx2_pfvf_mbox_init()
616 mbox->pfvf = pf; in otx2_pfvf_mbox_init()
617 INIT_WORK(&mbox->mbox_wrk, otx2_pfvf_mbox_handler); in otx2_pfvf_mbox_init()
618 INIT_WORK(&mbox->mbox_up_wrk, otx2_pfvf_mbox_up_handler); in otx2_pfvf_mbox_init()
619 mbox++; in otx2_pfvf_mbox_init()
634 struct mbox *mbox = &pf->mbox_pfvf[0]; in otx2_pfvf_mbox_destroy() local
636 if (!mbox) in otx2_pfvf_mbox_destroy()
644 if (mbox->mbox.hwbase) in otx2_pfvf_mbox_destroy()
645 iounmap(mbox->mbox.hwbase); in otx2_pfvf_mbox_destroy()
647 otx2_mbox_destroy(&mbox->mbox); in otx2_pfvf_mbox_destroy()
736 "Mbox msg with unknown ID 0x%x\n", msg->id); in otx2_process_pfaf_mbox_msg()
742 "Mbox msg with wrong signature %x, ID 0x%x\n", in otx2_process_pfaf_mbox_msg()
796 "Mbox msg response has err %d, ID 0x%x\n", in otx2_process_pfaf_mbox_msg()
807 struct otx2_mbox *mbox; in otx2_pfaf_mbox_handler() local
808 struct mbox *af_mbox; in otx2_pfaf_mbox_handler()
812 af_mbox = container_of(work, struct mbox, mbox_wrk); in otx2_pfaf_mbox_handler()
813 mbox = &af_mbox->mbox; in otx2_pfaf_mbox_handler()
814 mdev = &mbox->dev[0]; in otx2_pfaf_mbox_handler()
815 rsp_hdr = (struct mbox_hdr *)(mdev->mbase + mbox->rx_start); in otx2_pfaf_mbox_handler()
817 offset = mbox->rx_start + ALIGN(sizeof(*rsp_hdr), MBOX_MSG_ALIGN); in otx2_pfaf_mbox_handler()
823 offset = mbox->rx_start + msg->next_msgoff; in otx2_pfaf_mbox_handler()
825 __otx2_mbox_reset(mbox, 0); in otx2_pfaf_mbox_handler()
881 otx2_reply_invalid_msg(&pf->mbox.mbox_up, 0, 0, req->id); in otx2_process_mbox_msg_up()
892 &pf->mbox.mbox_up, 0, \ in otx2_process_mbox_msg_up()
910 otx2_reply_invalid_msg(&pf->mbox.mbox_up, 0, 0, req->id); in otx2_process_mbox_msg_up()
918 struct mbox *af_mbox = container_of(work, struct mbox, mbox_up_wrk); in otx2_pfaf_mbox_up_handler()
919 struct otx2_mbox *mbox = &af_mbox->mbox_up; in otx2_pfaf_mbox_up_handler() local
920 struct otx2_mbox_dev *mdev = &mbox->dev[0]; in otx2_pfaf_mbox_up_handler()
926 rsp_hdr = (struct mbox_hdr *)(mdev->mbase + mbox->rx_start); in otx2_pfaf_mbox_up_handler()
928 offset = mbox->rx_start + ALIGN(sizeof(*rsp_hdr), MBOX_MSG_ALIGN); in otx2_pfaf_mbox_up_handler()
937 offset = mbox->rx_start + msg->next_msgoff; in otx2_pfaf_mbox_up_handler()
940 otx2_forward_vf_mbox_msgs(pf, &pf->mbox.mbox_up, in otx2_pfaf_mbox_up_handler()
946 otx2_mbox_msg_send(mbox, 0); in otx2_pfaf_mbox_up_handler()
952 struct mbox *mbox; in otx2_pfaf_mbox_intr_handler() local
957 mbox = &pf->mbox; in otx2_pfaf_mbox_intr_handler()
959 trace_otx2_msg_interrupt(mbox->mbox.pdev, "AF to PF", BIT_ULL(0)); in otx2_pfaf_mbox_intr_handler()
961 otx2_queue_work(mbox, pf->mbox_wq, 0, 1, 1, TYPE_PFAF); in otx2_pfaf_mbox_intr_handler()
984 snprintf(irq_name, NAME_SIZE, "RVUPFAF Mbox"); in otx2_register_mbox_intr()
989 "RVUPF: IRQ registration failed for PFAF mbox irq\n"); in otx2_register_mbox_intr()
1003 req = otx2_mbox_alloc_msg_ready(&pf->mbox); in otx2_register_mbox_intr()
1008 err = otx2_sync_mbox_msg(&pf->mbox); in otx2_register_mbox_intr()
1021 struct mbox *mbox = &pf->mbox; in otx2_pfaf_mbox_destroy() local
1028 if (mbox->mbox.hwbase) in otx2_pfaf_mbox_destroy()
1029 iounmap((void __iomem *)mbox->mbox.hwbase); in otx2_pfaf_mbox_destroy()
1031 otx2_mbox_destroy(&mbox->mbox); in otx2_pfaf_mbox_destroy()
1032 otx2_mbox_destroy(&mbox->mbox_up); in otx2_pfaf_mbox_destroy()
1037 struct mbox *mbox = &pf->mbox; in otx2_pfaf_mbox_init() local
1041 mbox->pfvf = pf; in otx2_pfaf_mbox_init()
1060 err = otx2_mbox_init(&mbox->mbox, hwbase, pf->pdev, pf->reg_base, in otx2_pfaf_mbox_init()
1065 err = otx2_mbox_init(&mbox->mbox_up, hwbase, pf->pdev, pf->reg_base, in otx2_pfaf_mbox_init()
1070 err = otx2_mbox_bbuf_init(mbox, pf->pdev); in otx2_pfaf_mbox_init()
1074 INIT_WORK(&mbox->mbox_wrk, otx2_pfaf_mbox_handler); in otx2_pfaf_mbox_init()
1075 INIT_WORK(&mbox->mbox_up_wrk, otx2_pfaf_mbox_up_handler); in otx2_pfaf_mbox_init()
1076 mutex_init(&mbox->lock); in otx2_pfaf_mbox_init()
1089 mutex_lock(&pf->mbox.lock); in otx2_cgx_config_linkevents()
1091 msg = otx2_mbox_alloc_msg_cgx_start_linkevents(&pf->mbox); in otx2_cgx_config_linkevents()
1093 msg = otx2_mbox_alloc_msg_cgx_stop_linkevents(&pf->mbox); in otx2_cgx_config_linkevents()
1096 mutex_unlock(&pf->mbox.lock); in otx2_cgx_config_linkevents()
1100 err = otx2_sync_mbox_msg(&pf->mbox); in otx2_cgx_config_linkevents()
1101 mutex_unlock(&pf->mbox.lock); in otx2_cgx_config_linkevents()
1115 mutex_lock(&pf->mbox.lock); in otx2_cgx_config_loopback()
1117 msg = otx2_mbox_alloc_msg_cgx_intlbk_enable(&pf->mbox); in otx2_cgx_config_loopback()
1119 msg = otx2_mbox_alloc_msg_cgx_intlbk_disable(&pf->mbox); in otx2_cgx_config_loopback()
1122 mutex_unlock(&pf->mbox.lock); in otx2_cgx_config_loopback()
1126 err = otx2_sync_mbox_msg(&pf->mbox); in otx2_cgx_config_loopback()
1127 mutex_unlock(&pf->mbox.lock); in otx2_cgx_config_loopback()
1269 otx2_ctx_disable(&pf->mbox, NIX_AQ_CTYPE_CQ, false); in otx2_free_cq_res()
1283 otx2_ctx_disable(&pf->mbox, NIX_AQ_CTYPE_SQ, false); in otx2_free_sq_res()
1325 struct mbox *mbox = &pf->mbox; in otx2_init_hw_resources() local
1342 mutex_lock(&mbox->lock); in otx2_init_hw_resources()
1359 mutex_unlock(&mbox->lock); in otx2_init_hw_resources()
1365 mutex_unlock(&mbox->lock); in otx2_init_hw_resources()
1371 mutex_unlock(&mbox->lock); in otx2_init_hw_resources()
1377 mutex_unlock(&mbox->lock); in otx2_init_hw_resources()
1383 mutex_unlock(&mbox->lock); in otx2_init_hw_resources()
1387 mutex_unlock(&mbox->lock); in otx2_init_hw_resources()
1393 otx2_ctx_disable(mbox, NIX_AQ_CTYPE_RQ, false); in otx2_init_hw_resources()
1401 otx2_ctx_disable(mbox, NPA_AQ_CTYPE_POOL, true); in otx2_init_hw_resources()
1402 otx2_ctx_disable(mbox, NPA_AQ_CTYPE_AURA, true); in otx2_init_hw_resources()
1405 mutex_lock(&mbox->lock); in otx2_init_hw_resources()
1406 free_req = otx2_mbox_alloc_msg_nix_lf_free(mbox); in otx2_init_hw_resources()
1409 if (otx2_sync_mbox_msg(mbox)) in otx2_init_hw_resources()
1414 req = otx2_mbox_alloc_msg_npa_lf_free(mbox); in otx2_init_hw_resources()
1416 if (otx2_sync_mbox_msg(mbox)) in otx2_init_hw_resources()
1420 mutex_unlock(&mbox->lock); in otx2_init_hw_resources()
1428 struct mbox *mbox = &pf->mbox; in otx2_free_hw_resources() local
1441 mutex_lock(&mbox->lock); in otx2_free_hw_resources()
1445 mutex_unlock(&mbox->lock); in otx2_free_hw_resources()
1448 otx2_ctx_disable(mbox, NIX_AQ_CTYPE_RQ, false); in otx2_free_hw_resources()
1469 mutex_lock(&mbox->lock); in otx2_free_hw_resources()
1471 free_req = otx2_mbox_alloc_msg_nix_lf_free(mbox); in otx2_free_hw_resources()
1476 if (otx2_sync_mbox_msg(mbox)) in otx2_free_hw_resources()
1479 mutex_unlock(&mbox->lock); in otx2_free_hw_resources()
1482 otx2_ctx_disable(mbox, NPA_AQ_CTYPE_POOL, true); in otx2_free_hw_resources()
1483 otx2_ctx_disable(mbox, NPA_AQ_CTYPE_AURA, true); in otx2_free_hw_resources()
1486 mutex_lock(&mbox->lock); in otx2_free_hw_resources()
1488 req = otx2_mbox_alloc_msg_npa_lf_free(mbox); in otx2_free_hw_resources()
1490 if (otx2_sync_mbox_msg(mbox)) in otx2_free_hw_resources()
1493 mutex_unlock(&mbox->lock); in otx2_free_hw_resources()
1813 mutex_lock(&pf->mbox.lock); in otx2_do_set_rx_mode()
1814 req = otx2_mbox_alloc_msg_nix_set_rx_mode(&pf->mbox); in otx2_do_set_rx_mode()
1816 mutex_unlock(&pf->mbox.lock); in otx2_do_set_rx_mode()
1829 otx2_sync_mbox_msg(&pf->mbox); in otx2_do_set_rx_mode()
1830 mutex_unlock(&pf->mbox.lock); in otx2_do_set_rx_mode()
1914 mutex_lock(&pfvf->mbox.lock); in otx2_config_hw_rx_tstamp()
1916 req = otx2_mbox_alloc_msg_cgx_ptp_rx_enable(&pfvf->mbox); in otx2_config_hw_rx_tstamp()
1918 req = otx2_mbox_alloc_msg_cgx_ptp_rx_disable(&pfvf->mbox); in otx2_config_hw_rx_tstamp()
1920 mutex_unlock(&pfvf->mbox.lock); in otx2_config_hw_rx_tstamp()
1924 err = otx2_sync_mbox_msg(&pfvf->mbox); in otx2_config_hw_rx_tstamp()
1926 mutex_unlock(&pfvf->mbox.lock); in otx2_config_hw_rx_tstamp()
1930 mutex_unlock(&pfvf->mbox.lock); in otx2_config_hw_rx_tstamp()
1946 mutex_lock(&pfvf->mbox.lock); in otx2_config_hw_tx_tstamp()
1948 req = otx2_mbox_alloc_msg_nix_lf_ptp_tx_enable(&pfvf->mbox); in otx2_config_hw_tx_tstamp()
1950 req = otx2_mbox_alloc_msg_nix_lf_ptp_tx_disable(&pfvf->mbox); in otx2_config_hw_tx_tstamp()
1952 mutex_unlock(&pfvf->mbox.lock); in otx2_config_hw_tx_tstamp()
1956 err = otx2_sync_mbox_msg(&pfvf->mbox); in otx2_config_hw_tx_tstamp()
1958 mutex_unlock(&pfvf->mbox.lock); in otx2_config_hw_tx_tstamp()
1962 mutex_unlock(&pfvf->mbox.lock); in otx2_config_hw_tx_tstamp()
2048 mutex_lock(&pf->mbox.lock); in otx2_do_set_vf_mac()
2049 req = otx2_mbox_alloc_msg_npc_install_flow(&pf->mbox); in otx2_do_set_vf_mac()
2065 err = otx2_sync_mbox_msg(&pf->mbox); in otx2_do_set_vf_mac()
2067 mutex_unlock(&pf->mbox.lock); in otx2_do_set_vf_mac()
2115 mutex_lock(&pf->mbox.lock); in otx2_do_set_vf_vlan()
2119 vtag_req = otx2_mbox_alloc_msg_nix_vtag_cfg(&pf->mbox); in otx2_do_set_vf_vlan()
2128 err = otx2_sync_mbox_msg(&pf->mbox); in otx2_do_set_vf_vlan()
2135 del_req = otx2_mbox_alloc_msg_npc_delete_flow(&pf->mbox); in otx2_do_set_vf_vlan()
2143 err = otx2_sync_mbox_msg(&pf->mbox); in otx2_do_set_vf_vlan()
2148 del_req = otx2_mbox_alloc_msg_npc_delete_flow(&pf->mbox); in otx2_do_set_vf_vlan()
2156 err = otx2_sync_mbox_msg(&pf->mbox); in otx2_do_set_vf_vlan()
2162 req = otx2_mbox_alloc_msg_npc_install_flow(&pf->mbox); in otx2_do_set_vf_vlan()
2183 err = otx2_sync_mbox_msg(&pf->mbox); in otx2_do_set_vf_vlan()
2188 vtag_req = otx2_mbox_alloc_msg_nix_vtag_cfg(&pf->mbox); in otx2_do_set_vf_vlan()
2200 err = otx2_sync_mbox_msg(&pf->mbox); in otx2_do_set_vf_vlan()
2205 (&pf->mbox.mbox, 0, &vtag_req->hdr); in otx2_do_set_vf_vlan()
2212 req = otx2_mbox_alloc_msg_npc_install_flow(&pf->mbox); in otx2_do_set_vf_vlan()
2230 err = otx2_sync_mbox_msg(&pf->mbox); in otx2_do_set_vf_vlan()
2233 mutex_unlock(&pf->mbox.lock); in otx2_do_set_vf_vlan()
2290 mutex_lock(&pf->mbox.lock); in otx2_set_vf_permissions()
2291 req = otx2_mbox_alloc_msg_set_vf_perm(&pf->mbox); in otx2_set_vf_permissions()
2306 rc = otx2_sync_mbox_msg(&pf->mbox); in otx2_set_vf_permissions()
2308 mutex_unlock(&pf->mbox.lock); in otx2_set_vf_permissions()
2667 otx2_detach_resources(&pf->mbox); in otx2_probe()
2807 otx2_detach_resources(&pf->mbox); in otx2_remove()