.. | .. |
---|
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 | } |
---|