Lines Matching refs:pfvf
29 static void rvu_set_msix_offset(struct rvu *rvu, struct rvu_pfvf *pfvf,
31 static void rvu_clear_msix_offset(struct rvu *rvu, struct rvu_pfvf *pfvf,
341 static void rvu_update_rsrc_map(struct rvu *rvu, struct rvu_pfvf *pfvf, in rvu_update_rsrc_map() argument
369 pfvf->npalf = attach ? true : false; in rvu_update_rsrc_map()
370 num_lfs = pfvf->npalf; in rvu_update_rsrc_map()
374 pfvf->nixlf = attach ? true : false; in rvu_update_rsrc_map()
375 num_lfs = pfvf->nixlf; in rvu_update_rsrc_map()
378 attach ? pfvf->sso++ : pfvf->sso--; in rvu_update_rsrc_map()
379 num_lfs = pfvf->sso; in rvu_update_rsrc_map()
382 attach ? pfvf->ssow++ : pfvf->ssow--; in rvu_update_rsrc_map()
383 num_lfs = pfvf->ssow; in rvu_update_rsrc_map()
386 attach ? pfvf->timlfs++ : pfvf->timlfs--; in rvu_update_rsrc_map()
387 num_lfs = pfvf->timlfs; in rvu_update_rsrc_map()
390 attach ? pfvf->cptlfs++ : pfvf->cptlfs--; in rvu_update_rsrc_map()
391 num_lfs = pfvf->cptlfs; in rvu_update_rsrc_map()
394 attach ? pfvf->cpt1_lfs++ : pfvf->cpt1_lfs--; in rvu_update_rsrc_map()
395 num_lfs = pfvf->cpt1_lfs; in rvu_update_rsrc_map()
550 struct rvu_pfvf *pfvf; in rvu_scan_block() local
564 pfvf = rvu_get_pfvf(rvu, (cfg >> 8) & 0xFFFF); in rvu_scan_block()
565 rvu_update_rsrc_map(rvu, pfvf, block, in rvu_scan_block()
569 rvu_set_msix_offset(rvu, pfvf, block, lf); in rvu_scan_block()
605 struct rvu_pfvf *pfvf; in rvu_setup_msix_resources() local
617 pfvf = &rvu->pf[pf]; in rvu_setup_msix_resources()
620 pfvf->msix.max = ((cfg >> 32) & 0xFFF) + 1; in rvu_setup_msix_resources()
621 rvu_check_min_msix_vec(rvu, pfvf->msix.max, pf, 0); in rvu_setup_msix_resources()
624 err = rvu_alloc_bitmap(&pfvf->msix); in rvu_setup_msix_resources()
629 pfvf->msix_lfmap = devm_kcalloc(rvu->dev, pfvf->msix.max, in rvu_setup_msix_resources()
631 if (!pfvf->msix_lfmap) in rvu_setup_msix_resources()
647 offset = rvu_alloc_rsrc_contig(&pfvf->msix, nvecs); in rvu_setup_msix_resources()
653 pfvf = &rvu->hwvf[hwvf + vf]; in rvu_setup_msix_resources()
657 pfvf->msix.max = (cfg & 0xFFF) + 1; in rvu_setup_msix_resources()
658 rvu_check_min_msix_vec(rvu, pfvf->msix.max, pf, vf + 1); in rvu_setup_msix_resources()
661 err = rvu_alloc_bitmap(&pfvf->msix); in rvu_setup_msix_resources()
665 pfvf->msix_lfmap = in rvu_setup_msix_resources()
666 devm_kcalloc(rvu->dev, pfvf->msix.max, in rvu_setup_msix_resources()
668 if (!pfvf->msix_lfmap) in rvu_setup_msix_resources()
679 offset = rvu_alloc_rsrc_contig(&pfvf->msix, nvecs); in rvu_setup_msix_resources()
722 struct rvu_pfvf *pfvf; in rvu_free_hw_resources() local
738 pfvf = &rvu->pf[id]; in rvu_free_hw_resources()
739 kfree(pfvf->msix.bmap); in rvu_free_hw_resources()
743 pfvf = &rvu->hwvf[id]; in rvu_free_hw_resources()
744 kfree(pfvf->msix.bmap); in rvu_free_hw_resources()
760 pfvf = &rvu->pf[RVU_AFPF]; in rvu_free_hw_resources()
761 qmem_free(rvu->dev, pfvf->nix_qints_ctx); in rvu_free_hw_resources()
762 qmem_free(rvu->dev, pfvf->cq_ints_ctx); in rvu_free_hw_resources()
769 struct rvu_pfvf *pfvf; in rvu_setup_pfvf_macaddress() local
780 pfvf = &rvu->pf[pf]; in rvu_setup_pfvf_macaddress()
784 u64_to_ether_addr(*mac, pfvf->mac_addr); in rvu_setup_pfvf_macaddress()
786 eth_random_addr(pfvf->mac_addr); in rvu_setup_pfvf_macaddress()
788 eth_random_addr(pfvf->mac_addr); in rvu_setup_pfvf_macaddress()
790 ether_addr_copy(pfvf->default_mac, pfvf->mac_addr); in rvu_setup_pfvf_macaddress()
796 pfvf = &rvu->hwvf[hwvf]; in rvu_setup_pfvf_macaddress()
800 u64_to_ether_addr(*mac, pfvf->mac_addr); in rvu_setup_pfvf_macaddress()
802 eth_random_addr(pfvf->mac_addr); in rvu_setup_pfvf_macaddress()
804 eth_random_addr(pfvf->mac_addr); in rvu_setup_pfvf_macaddress()
806 ether_addr_copy(pfvf->default_mac, pfvf->mac_addr); in rvu_setup_pfvf_macaddress()
1250 u16 rvu_get_rsrc_mapcount(struct rvu_pfvf *pfvf, int blkaddr) in rvu_get_rsrc_mapcount() argument
1254 return pfvf->npalf ? 1 : 0; in rvu_get_rsrc_mapcount()
1257 return pfvf->nixlf ? 1 : 0; in rvu_get_rsrc_mapcount()
1259 return pfvf->sso; in rvu_get_rsrc_mapcount()
1261 return pfvf->ssow; in rvu_get_rsrc_mapcount()
1263 return pfvf->timlfs; in rvu_get_rsrc_mapcount()
1265 return pfvf->cptlfs; in rvu_get_rsrc_mapcount()
1267 return pfvf->cpt1_lfs; in rvu_get_rsrc_mapcount()
1273 static bool is_blktype_attached(struct rvu_pfvf *pfvf, int blktype) in is_blktype_attached() argument
1277 return pfvf->npalf ? 1 : 0; in is_blktype_attached()
1279 return pfvf->nixlf ? 1 : 0; in is_blktype_attached()
1281 return !!pfvf->sso; in is_blktype_attached()
1283 return !!pfvf->ssow; in is_blktype_attached()
1285 return !!pfvf->timlfs; in is_blktype_attached()
1287 return pfvf->cptlfs || pfvf->cpt1_lfs; in is_blktype_attached()
1295 struct rvu_pfvf *pfvf; in is_pffunc_map_valid() local
1300 pfvf = rvu_get_pfvf(rvu, pcifunc); in is_pffunc_map_valid()
1303 if (!is_blktype_attached(pfvf, blktype)) in is_pffunc_map_valid()
1333 struct rvu_pfvf *pfvf = rvu_get_pfvf(rvu, pcifunc); in rvu_get_blkaddr_from_slot() local
1340 if (!is_blktype_attached(pfvf, blktype)) in rvu_get_blkaddr_from_slot()
1353 numlfs = rvu_get_rsrc_mapcount(pfvf, blkaddr); in rvu_get_blkaddr_from_slot()
1371 numlfs = rvu_get_rsrc_mapcount(pfvf, num_blkaddr[i]); in rvu_get_blkaddr_from_slot()
1386 struct rvu_pfvf *pfvf = rvu_get_pfvf(rvu, pcifunc); in rvu_detach_block() local
1399 num_lfs = rvu_get_rsrc_mapcount(pfvf, block->addr); in rvu_detach_block()
1409 rvu_nix_reset_mac(pfvf, pcifunc); in rvu_detach_block()
1417 rvu_update_rsrc_map(rvu, pfvf, block, in rvu_detach_block()
1424 rvu_clear_msix_offset(rvu, pfvf, block, lf); in rvu_detach_block()
1483 struct rvu_pfvf *pfvf = rvu_get_pfvf(rvu, pcifunc); in rvu_get_nix_blkaddr() local
1509 pfvf->nix_blkaddr = BLKADDR_NIX1; in rvu_get_nix_blkaddr()
1510 pfvf->nix_rx_intf = NIX_INTFX_RX(1); in rvu_get_nix_blkaddr()
1511 pfvf->nix_tx_intf = NIX_INTFX_TX(1); in rvu_get_nix_blkaddr()
1515 pfvf->nix_blkaddr = BLKADDR_NIX0; in rvu_get_nix_blkaddr()
1516 pfvf->nix_rx_intf = NIX_INTFX_RX(0); in rvu_get_nix_blkaddr()
1517 pfvf->nix_tx_intf = NIX_INTFX_TX(0); in rvu_get_nix_blkaddr()
1521 return pfvf->nix_blkaddr; in rvu_get_nix_blkaddr()
1554 struct rvu_pfvf *pfvf = rvu_get_pfvf(rvu, pcifunc); in rvu_attach_block() local
1581 rvu_update_rsrc_map(rvu, pfvf, block, in rvu_attach_block()
1585 rvu_set_msix_offset(rvu, pfvf, block, lf); in rvu_attach_block()
1592 struct rvu_pfvf *pfvf = rvu_get_pfvf(rvu, pcifunc); in rvu_check_rsrc_availability() local
1598 if (req->npalf && !is_blktype_attached(pfvf, BLKTYPE_NPA)) { in rvu_check_rsrc_availability()
1611 if (req->nixlf && !is_blktype_attached(pfvf, BLKTYPE_NIX)) { in rvu_check_rsrc_availability()
1636 mappedlfs = rvu_get_rsrc_mapcount(pfvf, block->addr); in rvu_check_rsrc_availability()
1652 mappedlfs = rvu_get_rsrc_mapcount(pfvf, block->addr); in rvu_check_rsrc_availability()
1667 mappedlfs = rvu_get_rsrc_mapcount(pfvf, block->addr); in rvu_check_rsrc_availability()
1686 mappedlfs = rvu_get_rsrc_mapcount(pfvf, block->addr); in rvu_check_rsrc_availability()
1780 static u16 rvu_get_msix_offset(struct rvu *rvu, struct rvu_pfvf *pfvf, in rvu_get_msix_offset() argument
1788 for (vec = 0; vec < pfvf->msix.max; vec++) { in rvu_get_msix_offset()
1789 if (pfvf->msix_lfmap[vec] == MSIX_BLKLF(blkaddr, lf)) in rvu_get_msix_offset()
1795 static void rvu_set_msix_offset(struct rvu *rvu, struct rvu_pfvf *pfvf, in rvu_set_msix_offset() argument
1806 if (!rvu_rsrc_check_contig(&pfvf->msix, nvecs)) in rvu_set_msix_offset()
1809 offset = rvu_alloc_rsrc_contig(&pfvf->msix, nvecs); in rvu_set_msix_offset()
1817 pfvf->msix_lfmap[offset + vec] = MSIX_BLKLF(block->addr, lf); in rvu_set_msix_offset()
1820 static void rvu_clear_msix_offset(struct rvu *rvu, struct rvu_pfvf *pfvf, in rvu_clear_msix_offset() argument
1834 offset = rvu_get_msix_offset(rvu, pfvf, block->addr, lf); in rvu_clear_msix_offset()
1838 pfvf->msix_lfmap[offset + vec] = 0; in rvu_clear_msix_offset()
1841 rvu_free_rsrc_contig(&pfvf->msix, nvecs, offset); in rvu_clear_msix_offset()
1849 struct rvu_pfvf *pfvf; in rvu_mbox_handler_msix_offset() local
1852 pfvf = rvu_get_pfvf(rvu, pcifunc); in rvu_mbox_handler_msix_offset()
1853 if (!pfvf->msix.bmap) in rvu_mbox_handler_msix_offset()
1858 rsp->npa_msixoff = rvu_get_msix_offset(rvu, pfvf, BLKADDR_NPA, lf); in rvu_mbox_handler_msix_offset()
1866 rsp->nix_msixoff = rvu_get_msix_offset(rvu, pfvf, blkaddr, lf); in rvu_mbox_handler_msix_offset()
1869 rsp->sso = pfvf->sso; in rvu_mbox_handler_msix_offset()
1873 rvu_get_msix_offset(rvu, pfvf, BLKADDR_SSO, lf); in rvu_mbox_handler_msix_offset()
1876 rsp->ssow = pfvf->ssow; in rvu_mbox_handler_msix_offset()
1880 rvu_get_msix_offset(rvu, pfvf, BLKADDR_SSOW, lf); in rvu_mbox_handler_msix_offset()
1883 rsp->timlfs = pfvf->timlfs; in rvu_mbox_handler_msix_offset()
1887 rvu_get_msix_offset(rvu, pfvf, BLKADDR_TIM, lf); in rvu_mbox_handler_msix_offset()
1890 rsp->cptlfs = pfvf->cptlfs; in rvu_mbox_handler_msix_offset()
1894 rvu_get_msix_offset(rvu, pfvf, BLKADDR_CPT0, lf); in rvu_mbox_handler_msix_offset()
1897 rsp->cpt1_lfs = pfvf->cpt1_lfs; in rvu_mbox_handler_msix_offset()
1901 rvu_get_msix_offset(rvu, pfvf, BLKADDR_CPT1, lf); in rvu_mbox_handler_msix_offset()
2047 struct rvu_pfvf *pfvf; in rvu_mbox_handler_set_vf_perm() local
2056 pfvf = rvu_get_pfvf(rvu, target); in rvu_mbox_handler_set_vf_perm()
2059 pfvf->flags &= RVU_CLEAR_VF_PERM; in rvu_mbox_handler_set_vf_perm()
2060 } else if (test_bit(PF_SET_VF_TRUSTED, &pfvf->flags) ^ in rvu_mbox_handler_set_vf_perm()
2062 change_bit(PF_SET_VF_TRUSTED, &pfvf->flags); in rvu_mbox_handler_set_vf_perm()
2064 if (!test_bit(PF_SET_VF_TRUSTED, &pfvf->flags)) { in rvu_mbox_handler_set_vf_perm()
2998 struct rvu_pfvf *pfvf = &rvu->pf[0]; in rvu_afvf_msix_vectors_num_ok() local
3001 pfvf = &rvu->pf[0]; in rvu_afvf_msix_vectors_num_ok()
3009 return (pfvf->msix.max >= RVU_AF_CN20K_INT_VEC_CNT + in rvu_afvf_msix_vectors_num_ok()
3012 return (pfvf->msix.max >= RVU_AF_INT_VEC_CNT + RVU_PF_INT_VEC_CNT) && in rvu_afvf_msix_vectors_num_ok()