@@ -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+
47344738static 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+
47954832int 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+
48384876void rvu_nix_reset_mac (struct rvu_pfvf * pfvf , int pcifunc )
48394877{
48404878 bool from_vf = !!(pcifunc & RVU_PFVF_FUNC_MASK );
0 commit comments