Skip to content

Commit 5129bd8

Browse files
SruChalladavem330
authored andcommitted
octeontx2-af: update CPT inbound inline IPsec config mailbox
Updates CPT inbound inline IPsec configure mailbox to take CPT credit, opcode, credit_th and bpid from VF. This patch also adds a mailbox to read inbound IPsec configuration. Signed-off-by: Srujana Challa <schalla@marvell.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 298bfe2 commit 5129bd8

File tree

2 files changed

+47
-5
lines changed

2 files changed

+47
-5
lines changed

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,8 @@ M(NIX_BANDPROF_FREE, 0x801e, nix_bandprof_free, nix_bandprof_free_req, \
297297
msg_rsp) \
298298
M(NIX_BANDPROF_GET_HWINFO, 0x801f, nix_bandprof_get_hwinfo, msg_req, \
299299
nix_bandprof_get_hwinfo_rsp) \
300+
M(NIX_READ_INLINE_IPSEC_CFG, 0x8023, nix_read_inline_ipsec_cfg, \
301+
msg_req, nix_inline_ipsec_cfg) \
300302
/* MCS mbox IDs (range 0xA000 - 0xBFFF) */ \
301303
M(MCS_ALLOC_RESOURCES, 0xa000, mcs_alloc_resources, mcs_alloc_rsrc_req, \
302304
mcs_alloc_rsrc_rsp) \
@@ -1196,7 +1198,7 @@ struct nix_inline_ipsec_cfg {
11961198
u32 cpt_credit;
11971199
struct {
11981200
u8 egrp;
1199-
u8 opcode;
1201+
u16 opcode;
12001202
u16 param1;
12011203
u16 param2;
12021204
} gen_cfg;
@@ -1205,6 +1207,8 @@ struct nix_inline_ipsec_cfg {
12051207
u8 cpt_slot;
12061208
} inst_qsel;
12071209
u8 enable;
1210+
u16 bpid;
1211+
u32 credit_th;
12081212
};
12091213

12101214
/* Per NIX LF inline IPSec configuration */

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

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4731,6 +4731,10 @@ int rvu_mbox_handler_nix_lso_format_cfg(struct rvu *rvu,
47314731
#define CPT_INST_QSEL_PF_FUNC GENMASK_ULL(23, 8)
47324732
#define CPT_INST_QSEL_SLOT GENMASK_ULL(7, 0)
47334733

4734+
#define CPT_INST_CREDIT_TH GENMASK_ULL(53, 32)
4735+
#define CPT_INST_CREDIT_BPID GENMASK_ULL(30, 22)
4736+
#define CPT_INST_CREDIT_CNT GENMASK_ULL(21, 0)
4737+
47344738
static void nix_inline_ipsec_cfg(struct rvu *rvu, struct nix_inline_ipsec_cfg *req,
47354739
int blkaddr)
47364740
{
@@ -4767,14 +4771,23 @@ static void nix_inline_ipsec_cfg(struct rvu *rvu, struct nix_inline_ipsec_cfg *r
47674771
val);
47684772

47694773
/* Set CPT credit */
4770-
rvu_write64(rvu, blkaddr, NIX_AF_RX_CPTX_CREDIT(cpt_idx),
4771-
req->cpt_credit);
4774+
val = rvu_read64(rvu, blkaddr, NIX_AF_RX_CPTX_CREDIT(cpt_idx));
4775+
if ((val & 0x3FFFFF) != 0x3FFFFF)
4776+
rvu_write64(rvu, blkaddr, NIX_AF_RX_CPTX_CREDIT(cpt_idx),
4777+
0x3FFFFF - val);
4778+
4779+
val = FIELD_PREP(CPT_INST_CREDIT_CNT, req->cpt_credit);
4780+
val |= FIELD_PREP(CPT_INST_CREDIT_BPID, req->bpid);
4781+
val |= FIELD_PREP(CPT_INST_CREDIT_TH, req->credit_th);
4782+
rvu_write64(rvu, blkaddr, NIX_AF_RX_CPTX_CREDIT(cpt_idx), val);
47724783
} else {
47734784
rvu_write64(rvu, blkaddr, NIX_AF_RX_IPSEC_GEN_CFG, 0x0);
47744785
rvu_write64(rvu, blkaddr, NIX_AF_RX_CPTX_INST_QSEL(cpt_idx),
47754786
0x0);
4776-
rvu_write64(rvu, blkaddr, NIX_AF_RX_CPTX_CREDIT(cpt_idx),
4777-
0x3FFFFF);
4787+
val = rvu_read64(rvu, blkaddr, NIX_AF_RX_CPTX_CREDIT(cpt_idx));
4788+
if ((val & 0x3FFFFF) != 0x3FFFFF)
4789+
rvu_write64(rvu, blkaddr, NIX_AF_RX_CPTX_CREDIT(cpt_idx),
4790+
0x3FFFFF - val);
47784791
}
47794792
}
47804793

@@ -4792,6 +4805,30 @@ int rvu_mbox_handler_nix_inline_ipsec_cfg(struct rvu *rvu,
47924805
return 0;
47934806
}
47944807

4808+
int rvu_mbox_handler_nix_read_inline_ipsec_cfg(struct rvu *rvu,
4809+
struct msg_req *req,
4810+
struct nix_inline_ipsec_cfg *rsp)
4811+
4812+
{
4813+
u64 val;
4814+
4815+
if (!is_block_implemented(rvu->hw, BLKADDR_CPT0))
4816+
return 0;
4817+
4818+
val = rvu_read64(rvu, BLKADDR_NIX0, NIX_AF_RX_IPSEC_GEN_CFG);
4819+
rsp->gen_cfg.egrp = FIELD_GET(IPSEC_GEN_CFG_EGRP, val);
4820+
rsp->gen_cfg.opcode = FIELD_GET(IPSEC_GEN_CFG_OPCODE, val);
4821+
rsp->gen_cfg.param1 = FIELD_GET(IPSEC_GEN_CFG_PARAM1, val);
4822+
rsp->gen_cfg.param2 = FIELD_GET(IPSEC_GEN_CFG_PARAM2, val);
4823+
4824+
val = rvu_read64(rvu, BLKADDR_NIX0, NIX_AF_RX_CPTX_CREDIT(0));
4825+
rsp->cpt_credit = FIELD_GET(CPT_INST_CREDIT_CNT, val);
4826+
rsp->credit_th = FIELD_GET(CPT_INST_CREDIT_TH, val);
4827+
rsp->bpid = FIELD_GET(CPT_INST_CREDIT_BPID, val);
4828+
4829+
return 0;
4830+
}
4831+
47954832
int rvu_mbox_handler_nix_inline_ipsec_lf_cfg(struct rvu *rvu,
47964833
struct nix_inline_ipsec_lf_cfg *req,
47974834
struct msg_rsp *rsp)
@@ -4835,6 +4872,7 @@ int rvu_mbox_handler_nix_inline_ipsec_lf_cfg(struct rvu *rvu,
48354872

48364873
return 0;
48374874
}
4875+
48384876
void rvu_nix_reset_mac(struct rvu_pfvf *pfvf, int pcifunc)
48394877
{
48404878
bool from_vf = !!(pcifunc & RVU_PFVF_FUNC_MASK);

0 commit comments

Comments
 (0)