Lines Matching refs:cptpf
28 static int forward_to_af(struct otx2_cptpf_dev *cptpf, in forward_to_af() argument
35 mutex_lock(&cptpf->lock); in forward_to_af()
36 msg = otx2_mbox_alloc_msg(&cptpf->afpf_mbox, 0, size); in forward_to_af()
38 mutex_unlock(&cptpf->lock); in forward_to_af()
49 ret = otx2_cpt_sync_mbox_msg(&cptpf->afpf_mbox); in forward_to_af()
56 dev_warn(&cptpf->pdev->dev, in forward_to_af()
58 mutex_unlock(&cptpf->lock); in forward_to_af()
61 mutex_unlock(&cptpf->lock); in forward_to_af()
65 static int handle_msg_get_caps(struct otx2_cptpf_dev *cptpf, in handle_msg_get_caps() argument
72 otx2_mbox_alloc_msg(&cptpf->vfpf_mbox, vf->vf_id, in handle_msg_get_caps()
81 rsp->cpt_revision = cptpf->pdev->revision; in handle_msg_get_caps()
82 memcpy(&rsp->eng_caps, &cptpf->eng_caps, sizeof(rsp->eng_caps)); in handle_msg_get_caps()
87 static int handle_msg_get_eng_grp_num(struct otx2_cptpf_dev *cptpf, in handle_msg_get_eng_grp_num() argument
96 otx2_mbox_alloc_msg(&cptpf->vfpf_mbox, vf->vf_id, sizeof(*rsp)); in handle_msg_get_eng_grp_num()
104 rsp->eng_grp_num = otx2_cpt_get_eng_grp(&cptpf->eng_grps, in handle_msg_get_eng_grp_num()
110 static int handle_msg_kvf_limits(struct otx2_cptpf_dev *cptpf, in handle_msg_kvf_limits() argument
117 otx2_mbox_alloc_msg(&cptpf->vfpf_mbox, vf->vf_id, sizeof(*rsp)); in handle_msg_kvf_limits()
124 rsp->kvf_limits = cptpf->kvf_limits; in handle_msg_kvf_limits()
129 static int send_inline_ipsec_inbound_msg(struct otx2_cptpf_dev *cptpf, in send_inline_ipsec_inbound_msg() argument
133 struct pci_dev *pdev = cptpf->pdev; in send_inline_ipsec_inbound_msg()
136 otx2_mbox_alloc_msg_rsp(&cptpf->afpf_mbox, 0, in send_inline_ipsec_inbound_msg()
145 req->hdr.pcifunc = OTX2_CPT_RVU_PFFUNC(cptpf->pf_id, 0); in send_inline_ipsec_inbound_msg()
148 req->sso_pf_func_ovrd = cptpf->sso_pf_func_ovrd; in send_inline_ipsec_inbound_msg()
152 return otx2_cpt_send_mbox_msg(&cptpf->afpf_mbox, pdev); in send_inline_ipsec_inbound_msg()
155 static int rx_inline_ipsec_lf_cfg(struct otx2_cptpf_dev *cptpf, u8 egrp, in rx_inline_ipsec_lf_cfg() argument
159 struct pci_dev *pdev = cptpf->pdev; in rx_inline_ipsec_lf_cfg()
163 otx2_mbox_alloc_msg_rsp(&cptpf->afpf_mbox, 0, in rx_inline_ipsec_lf_cfg()
185 nix_req->inst_qsel.cpt_pf_func = OTX2_CPT_RVU_PFFUNC(cptpf->pf_id, 0); in rx_inline_ipsec_lf_cfg()
187 ret = otx2_cpt_send_mbox_msg(&cptpf->afpf_mbox, pdev); in rx_inline_ipsec_lf_cfg()
191 if (cptpf->has_cpt1) { in rx_inline_ipsec_lf_cfg()
192 ret = send_inline_ipsec_inbound_msg(cptpf, req->sso_pf_func, 1); in rx_inline_ipsec_lf_cfg()
197 return send_inline_ipsec_inbound_msg(cptpf, req->sso_pf_func, 0); in rx_inline_ipsec_lf_cfg()
200 static int handle_msg_rx_inline_ipsec_lf_cfg(struct otx2_cptpf_dev *cptpf, in handle_msg_rx_inline_ipsec_lf_cfg() argument
208 if (cptpf->lfs.lfs_num) { in handle_msg_rx_inline_ipsec_lf_cfg()
209 dev_err(&cptpf->pdev->dev, in handle_msg_rx_inline_ipsec_lf_cfg()
217 egrp = otx2_cpt_get_eng_grp(&cptpf->eng_grps, OTX2_CPT_IE_TYPES); in handle_msg_rx_inline_ipsec_lf_cfg()
219 dev_err(&cptpf->pdev->dev, in handle_msg_rx_inline_ipsec_lf_cfg()
224 otx2_cptlf_set_dev_info(&cptpf->lfs, cptpf->pdev, cptpf->reg_base, in handle_msg_rx_inline_ipsec_lf_cfg()
225 &cptpf->afpf_mbox, BLKADDR_CPT0); in handle_msg_rx_inline_ipsec_lf_cfg()
226 ret = otx2_cptlf_init(&cptpf->lfs, 1 << egrp, OTX2_CPT_QUEUE_HI_PRIO, in handle_msg_rx_inline_ipsec_lf_cfg()
229 dev_err(&cptpf->pdev->dev, in handle_msg_rx_inline_ipsec_lf_cfg()
234 if (cptpf->has_cpt1) { in handle_msg_rx_inline_ipsec_lf_cfg()
235 cptpf->rsrc_req_blkaddr = BLKADDR_CPT1; in handle_msg_rx_inline_ipsec_lf_cfg()
236 otx2_cptlf_set_dev_info(&cptpf->cpt1_lfs, cptpf->pdev, in handle_msg_rx_inline_ipsec_lf_cfg()
237 cptpf->reg_base, &cptpf->afpf_mbox, in handle_msg_rx_inline_ipsec_lf_cfg()
239 ret = otx2_cptlf_init(&cptpf->cpt1_lfs, 1 << egrp, in handle_msg_rx_inline_ipsec_lf_cfg()
242 dev_err(&cptpf->pdev->dev, in handle_msg_rx_inline_ipsec_lf_cfg()
246 cptpf->rsrc_req_blkaddr = 0; in handle_msg_rx_inline_ipsec_lf_cfg()
249 ret = rx_inline_ipsec_lf_cfg(cptpf, egrp, cfg_req); in handle_msg_rx_inline_ipsec_lf_cfg()
256 otx2_cptlf_shutdown(&cptpf->cpt1_lfs); in handle_msg_rx_inline_ipsec_lf_cfg()
258 otx2_cptlf_shutdown(&cptpf->lfs); in handle_msg_rx_inline_ipsec_lf_cfg()
262 static int cptpf_handle_vf_req(struct otx2_cptpf_dev *cptpf, in cptpf_handle_vf_req() argument
274 err = handle_msg_get_eng_grp_num(cptpf, vf, req); in cptpf_handle_vf_req()
277 err = handle_msg_get_caps(cptpf, vf, req); in cptpf_handle_vf_req()
280 err = handle_msg_kvf_limits(cptpf, vf, req); in cptpf_handle_vf_req()
283 err = handle_msg_rx_inline_ipsec_lf_cfg(cptpf, req); in cptpf_handle_vf_req()
287 err = forward_to_af(cptpf, vf, req, size); in cptpf_handle_vf_req()
293 otx2_reply_invalid_msg(&cptpf->vfpf_mbox, vf->vf_id, 0, req->id); in cptpf_handle_vf_req()
294 otx2_mbox_msg_send(&cptpf->vfpf_mbox, vf->vf_id); in cptpf_handle_vf_req()
300 struct otx2_cptpf_dev *cptpf = arg; in otx2_cptpf_vfpf_mbox_intr() local
311 intr = otx2_cpt_read64(cptpf->reg_base, BLKADDR_RVUM, 0, in otx2_cptpf_vfpf_mbox_intr()
314 for (vf_idx = i * 64; vf_idx < cptpf->enabled_vfs; vf_idx++) { in otx2_cptpf_vfpf_mbox_intr()
315 vf = &cptpf->vf[vf_idx]; in otx2_cptpf_vfpf_mbox_intr()
317 queue_work(cptpf->vfpf_mbox_wq, in otx2_cptpf_vfpf_mbox_intr()
320 otx2_cpt_write64(cptpf->reg_base, BLKADDR_RVUM, in otx2_cptpf_vfpf_mbox_intr()
331 struct otx2_cptpf_dev *cptpf; in otx2_cptpf_vfpf_mbox_handler() local
340 cptpf = vf->cptpf; in otx2_cptpf_vfpf_mbox_handler()
341 mbox = &cptpf->vfpf_mbox; in otx2_cptpf_vfpf_mbox_handler()
353 msg->pcifunc = ((u16)cptpf->pf_id << RVU_PFVF_PF_SHIFT) | in otx2_cptpf_vfpf_mbox_handler()
356 err = cptpf_handle_vf_req(cptpf, vf, msg, in otx2_cptpf_vfpf_mbox_handler()
377 struct otx2_cptpf_dev *cptpf = arg; in otx2_cptpf_afpf_mbox_intr() local
384 intr = otx2_cpt_read64(cptpf->reg_base, BLKADDR_RVUM, 0, RVU_PF_INT); in otx2_cptpf_afpf_mbox_intr()
387 mbox = &cptpf->afpf_mbox; in otx2_cptpf_afpf_mbox_intr()
392 queue_work(cptpf->afpf_mbox_wq, &cptpf->afpf_mbox_work); in otx2_cptpf_afpf_mbox_intr()
394 mbox = &cptpf->afpf_mbox_up; in otx2_cptpf_afpf_mbox_intr()
399 queue_work(cptpf->afpf_mbox_wq, &cptpf->afpf_mbox_up_work); in otx2_cptpf_afpf_mbox_intr()
401 otx2_cpt_write64(cptpf->reg_base, BLKADDR_RVUM, 0, RVU_PF_INT, in otx2_cptpf_afpf_mbox_intr()
407 static void process_afpf_mbox_msg(struct otx2_cptpf_dev *cptpf, in process_afpf_mbox_msg() argument
410 struct otx2_cptlfs_info *lfs = &cptpf->lfs; in process_afpf_mbox_msg()
411 struct device *dev = &cptpf->pdev->dev; in process_afpf_mbox_msg()
423 if (cptpf->rsrc_req_blkaddr == BLKADDR_CPT1) in process_afpf_mbox_msg()
424 lfs = &cptpf->cpt1_lfs; in process_afpf_mbox_msg()
428 cptpf->pf_id = (msg->pcifunc >> RVU_PFVF_PF_SHIFT) & in process_afpf_mbox_msg()
461 static void forward_to_vf(struct otx2_cptpf_dev *cptpf, struct mbox_msghdr *msg, in forward_to_vf() argument
468 dev_err(&cptpf->pdev->dev, in forward_to_vf()
473 dev_err(&cptpf->pdev->dev, in forward_to_vf()
478 vfpf_mbox = &cptpf->vfpf_mbox; in forward_to_vf()
480 if (vf_id >= cptpf->enabled_vfs) { in forward_to_vf()
481 dev_err(&cptpf->pdev->dev, in forward_to_vf()
483 vf_id, cptpf->enabled_vfs); in forward_to_vf()
491 dev_err(&cptpf->pdev->dev, in forward_to_vf()
507 struct otx2_cptpf_dev *cptpf; in otx2_cptpf_afpf_mbox_handler() local
514 cptpf = container_of(work, struct otx2_cptpf_dev, afpf_mbox_work); in otx2_cptpf_afpf_mbox_handler()
515 afpf_mbox = &cptpf->afpf_mbox; in otx2_cptpf_afpf_mbox_handler()
529 forward_to_vf(cptpf, msg, vf_id, in otx2_cptpf_afpf_mbox_handler()
532 process_afpf_mbox_msg(cptpf, msg); in otx2_cptpf_afpf_mbox_handler()
542 static void handle_msg_cpt_inst_lmtst(struct otx2_cptpf_dev *cptpf, in handle_msg_cpt_inst_lmtst() argument
546 struct otx2_cptlfs_info *lfs = &cptpf->lfs; in handle_msg_cpt_inst_lmtst()
549 if (cptpf->lfs.lfs_num) in handle_msg_cpt_inst_lmtst()
553 rsp = (struct msg_rsp *)otx2_mbox_alloc_msg(&cptpf->afpf_mbox_up, 0, in handle_msg_cpt_inst_lmtst()
564 static void process_afpf_mbox_up_msg(struct otx2_cptpf_dev *cptpf, in process_afpf_mbox_up_msg() argument
568 dev_err(&cptpf->pdev->dev, in process_afpf_mbox_up_msg()
575 handle_msg_cpt_inst_lmtst(cptpf, msg); in process_afpf_mbox_up_msg()
578 otx2_reply_invalid_msg(&cptpf->afpf_mbox_up, 0, 0, msg->id); in process_afpf_mbox_up_msg()
584 struct otx2_cptpf_dev *cptpf; in otx2_cptpf_afpf_mbox_up_handler() local
591 cptpf = container_of(work, struct otx2_cptpf_dev, afpf_mbox_up_work); in otx2_cptpf_afpf_mbox_up_handler()
592 mbox = &cptpf->afpf_mbox_up; in otx2_cptpf_afpf_mbox_up_handler()
603 process_afpf_mbox_up_msg(cptpf, msg); in otx2_cptpf_afpf_mbox_up_handler()