Skip to content

Commit de2854c

Browse files
SruChallakuba-moo
authored andcommitted
octeontx2-af: Mailbox changes for 98xx CPT block
This patch changes CPT mailbox message format to support new block CPT1 in 98xx silicon. cpt_rd_wr_reg -> Modify cpt_rd_wr_reg mailbox and its handler to accommodate new block CPT1. cpt_lf_alloc -> Modify cpt_lf_alloc mailbox and its handler to configure LFs from a block address out of multiple blocks of same type. If a PF/VF needs to configure LFs from both the blocks then this mbox should be called twice. Signed-off-by: Mahipal Challa <[email protected]> Signed-off-by: Srujana Challa <[email protected]> Signed-off-by: Jakub Kicinski <[email protected]>
1 parent e0183b9 commit de2854c

File tree

2 files changed

+27
-16
lines changed

2 files changed

+27
-16
lines changed

drivers/net/ethernet/marvell/octeontx2/af/mbox.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1073,13 +1073,15 @@ struct cpt_rd_wr_reg_msg {
10731073
u64 *ret_val;
10741074
u64 val;
10751075
u8 is_write;
1076+
int blkaddr;
10761077
};
10771078

10781079
struct cpt_lf_alloc_req_msg {
10791080
struct mbox_msghdr hdr;
10801081
u16 nix_pf_func;
10811082
u16 sso_pf_func;
10821083
u16 eng_grpmsk;
1084+
int blkaddr;
10831085
};
10841086

10851087
#endif /* MBOX_H */

drivers/net/ethernet/marvell/octeontx2/af/rvu_cpt.c

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,13 @@ int rvu_mbox_handler_cpt_lf_alloc(struct rvu *rvu,
6565
int num_lfs, slot;
6666
u64 val;
6767

68+
blkaddr = req->blkaddr ? req->blkaddr : BLKADDR_CPT0;
69+
if (blkaddr != BLKADDR_CPT0 && blkaddr != BLKADDR_CPT1)
70+
return -ENODEV;
71+
6872
if (req->eng_grpmsk == 0x0)
6973
return CPT_AF_ERR_GRP_INVALID;
7074

71-
blkaddr = rvu_get_blkaddr(rvu, BLKTYPE_CPT, 0);
72-
if (blkaddr < 0)
73-
return blkaddr;
74-
7575
block = &rvu->hw->block[blkaddr];
7676
num_lfs = rvu_get_rsrc_mapcount(rvu_get_pfvf(rvu, pcifunc),
7777
block->addr);
@@ -114,23 +114,17 @@ int rvu_mbox_handler_cpt_lf_alloc(struct rvu *rvu,
114114
return 0;
115115
}
116116

117-
int rvu_mbox_handler_cpt_lf_free(struct rvu *rvu, struct msg_req *req,
118-
struct msg_rsp *rsp)
117+
static int cpt_lf_free(struct rvu *rvu, struct msg_req *req, int blkaddr)
119118
{
120119
u16 pcifunc = req->hdr.pcifunc;
120+
int num_lfs, cptlf, slot;
121121
struct rvu_block *block;
122-
int cptlf, blkaddr;
123-
int num_lfs, slot;
124-
125-
blkaddr = rvu_get_blkaddr(rvu, BLKTYPE_CPT, 0);
126-
if (blkaddr < 0)
127-
return blkaddr;
128122

129123
block = &rvu->hw->block[blkaddr];
130124
num_lfs = rvu_get_rsrc_mapcount(rvu_get_pfvf(rvu, pcifunc),
131125
block->addr);
132126
if (!num_lfs)
133-
return CPT_AF_ERR_LF_INVALID;
127+
return 0;
134128

135129
for (slot = 0; slot < num_lfs; slot++) {
136130
cptlf = rvu_get_lf(rvu, block, pcifunc, slot);
@@ -146,6 +140,21 @@ int rvu_mbox_handler_cpt_lf_free(struct rvu *rvu, struct msg_req *req,
146140
return 0;
147141
}
148142

143+
int rvu_mbox_handler_cpt_lf_free(struct rvu *rvu, struct msg_req *req,
144+
struct msg_rsp *rsp)
145+
{
146+
int ret;
147+
148+
ret = cpt_lf_free(rvu, req, BLKADDR_CPT0);
149+
if (ret)
150+
return ret;
151+
152+
if (is_block_implemented(rvu->hw, BLKADDR_CPT1))
153+
ret = cpt_lf_free(rvu, req, BLKADDR_CPT1);
154+
155+
return ret;
156+
}
157+
149158
static bool is_valid_offset(struct rvu *rvu, struct cpt_rd_wr_reg_msg *req)
150159
{
151160
u64 offset = req->reg_offset;
@@ -208,9 +217,9 @@ int rvu_mbox_handler_cpt_rd_wr_register(struct rvu *rvu,
208217
{
209218
int blkaddr;
210219

211-
blkaddr = rvu_get_blkaddr(rvu, BLKTYPE_CPT, 0);
212-
if (blkaddr < 0)
213-
return blkaddr;
220+
blkaddr = req->blkaddr ? req->blkaddr : BLKADDR_CPT0;
221+
if (blkaddr != BLKADDR_CPT0 && blkaddr != BLKADDR_CPT1)
222+
return -ENODEV;
214223

215224
/* This message is accepted only if sent from CPT PF/VF */
216225
if (!is_cpt_pf(rvu, req->hdr.pcifunc) &&

0 commit comments

Comments
 (0)