Commit 9adb04ff authored by Srujana Challa's avatar Srujana Challa Committed by David S. Miller
Browse files

octeontx2-af: optimize cpt pf identification



Optimize CPT PF identification in mbox handling for faster
mbox response by doing it at AF driver probe instead of
every mbox message.

Signed-off-by: default avatarSrujana Challa <schalla@marvell.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 1286c50a
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -1164,8 +1164,16 @@ static int rvu_setup_hw_resources(struct rvu *rvu)
		goto nix_err;
	}

	err = rvu_cpt_init(rvu);
	if (err) {
		dev_err(rvu->dev, "%s: Failed to initialize cpt\n", __func__);
		goto mcs_err;
	}

	return 0;

mcs_err:
	rvu_mcs_exit(rvu);
nix_err:
	rvu_nix_freemem(rvu);
npa_err:
+2 −0
Original line number Diff line number Diff line
@@ -511,6 +511,7 @@ struct rvu {
	struct ptp		*ptp;

	int			mcs_blk_cnt;
	int			cpt_pf_num;

#ifdef CONFIG_DEBUG_FS
	struct rvu_debugfs	rvu_dbg;
@@ -877,6 +878,7 @@ void rvu_cpt_unregister_interrupts(struct rvu *rvu);
int rvu_cpt_lf_teardown(struct rvu *rvu, u16 pcifunc, int blkaddr, int lf,
			int slot);
int rvu_cpt_ctx_flush(struct rvu *rvu, u16 pcifunc);
int rvu_cpt_init(struct rvu *rvu);

/* CN10K RVU */
int rvu_set_channels_base(struct rvu *rvu);
+10 −3
Original line number Diff line number Diff line
@@ -340,7 +340,7 @@ static int get_cpt_pf_num(struct rvu *rvu)

static bool is_cpt_pf(struct rvu *rvu, u16 pcifunc)
{
	int cpt_pf_num = get_cpt_pf_num(rvu);
	int cpt_pf_num = rvu->cpt_pf_num;

	if (rvu_get_pf(pcifunc) != cpt_pf_num)
		return false;
@@ -352,7 +352,7 @@ static bool is_cpt_pf(struct rvu *rvu, u16 pcifunc)

static bool is_cpt_vf(struct rvu *rvu, u16 pcifunc)
{
	int cpt_pf_num = get_cpt_pf_num(rvu);
	int cpt_pf_num = rvu->cpt_pf_num;

	if (rvu_get_pf(pcifunc) != cpt_pf_num)
		return false;
@@ -1015,7 +1015,7 @@ int rvu_cpt_lf_teardown(struct rvu *rvu, u16 pcifunc, int blkaddr, int lf, int s
static int cpt_inline_inb_lf_cmd_send(struct rvu *rvu, int blkaddr,
				      int nix_blkaddr)
{
	int cpt_pf_num = get_cpt_pf_num(rvu);
	int cpt_pf_num = rvu->cpt_pf_num;
	struct cpt_inst_lmtst_req *req;
	dma_addr_t res_daddr;
	int timeout = 3000;
@@ -1159,3 +1159,10 @@ int rvu_cpt_ctx_flush(struct rvu *rvu, u16 pcifunc)

	return 0;
}

int rvu_cpt_init(struct rvu *rvu)
{
	/* Retrieve CPT PF number */
	rvu->cpt_pf_num = get_cpt_pf_num(rvu);
	return 0;
}