| .. | .. |
|---|
| 74 | 74 | return rvu->cgx_idmap[cgx_id]; |
|---|
| 75 | 75 | } |
|---|
| 76 | 76 | |
|---|
| 77 | +/* Based on P2X connectivity find mapped NIX block for a PF */ |
|---|
| 78 | +static void rvu_map_cgx_nix_block(struct rvu *rvu, int pf, |
|---|
| 79 | + int cgx_id, int lmac_id) |
|---|
| 80 | +{ |
|---|
| 81 | + struct rvu_pfvf *pfvf = &rvu->pf[pf]; |
|---|
| 82 | + u8 p2x; |
|---|
| 83 | + |
|---|
| 84 | + p2x = cgx_lmac_get_p2x(cgx_id, lmac_id); |
|---|
| 85 | + /* Firmware sets P2X_SELECT as either NIX0 or NIX1 */ |
|---|
| 86 | + pfvf->nix_blkaddr = BLKADDR_NIX0; |
|---|
| 87 | + if (is_rvu_supports_nix1(rvu) && p2x == CMR_P2X_SEL_NIX1) |
|---|
| 88 | + pfvf->nix_blkaddr = BLKADDR_NIX1; |
|---|
| 89 | +} |
|---|
| 90 | + |
|---|
| 77 | 91 | static int rvu_map_cgx_lmac_pf(struct rvu *rvu) |
|---|
| 78 | 92 | { |
|---|
| 79 | 93 | struct npc_pkind *pkind = &rvu->hw->pkind; |
|---|
| .. | .. |
|---|
| 117 | 131 | rvu->cgxlmac2pf_map[CGX_OFFSET(cgx) + lmac] = 1 << pf; |
|---|
| 118 | 132 | free_pkind = rvu_alloc_rsrc(&pkind->rsrc); |
|---|
| 119 | 133 | pkind->pfchan_map[free_pkind] = ((pf) & 0x3F) << 16; |
|---|
| 134 | + rvu_map_cgx_nix_block(rvu, pf, cgx, lmac); |
|---|
| 120 | 135 | rvu->cgx_mapped_pfs++; |
|---|
| 121 | 136 | } |
|---|
| 122 | 137 | } |
|---|