X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fcommon%2Fcnxk%2Froc_nix.c;h=d6b288f34d6e84bbae1c6f049c541659036dba9a;hb=a07f7ced436defb48596eabc189160228c2990b0;hp=040f78c9940400950d7b9228b2bf752a9bfa1d93;hpb=8dcdf319dd7dc9657eaa91c5822fc80e91bb577f;p=dpdk.git diff --git a/drivers/common/cnxk/roc_nix.c b/drivers/common/cnxk/roc_nix.c index 040f78c994..d6b288f34d 100644 --- a/drivers/common/cnxk/roc_nix.c +++ b/drivers/common/cnxk/roc_nix.c @@ -80,6 +80,34 @@ roc_nix_get_pf_func(struct roc_nix *roc_nix) return dev->pf_func; } +int +roc_nix_lf_inl_ipsec_cfg(struct roc_nix *roc_nix, struct roc_nix_ipsec_cfg *cfg, + bool enb) +{ + struct nix *nix = roc_nix_to_nix_priv(roc_nix); + struct nix_inline_ipsec_lf_cfg *lf_cfg; + struct mbox *mbox = (&nix->dev)->mbox; + + lf_cfg = mbox_alloc_msg_nix_inline_ipsec_lf_cfg(mbox); + if (lf_cfg == NULL) + return -ENOSPC; + + if (enb) { + lf_cfg->enable = 1; + lf_cfg->sa_base_addr = cfg->iova; + lf_cfg->ipsec_cfg1.sa_idx_w = plt_log2_u32(cfg->max_sa); + lf_cfg->ipsec_cfg0.lenm1_max = roc_nix_max_pkt_len(roc_nix) - 1; + lf_cfg->ipsec_cfg1.sa_idx_max = cfg->max_sa - 1; + lf_cfg->ipsec_cfg0.sa_pow2_size = plt_log2_u32(cfg->sa_size); + lf_cfg->ipsec_cfg0.tag_const = cfg->tag_const; + lf_cfg->ipsec_cfg0.tt = cfg->tt; + } else { + lf_cfg->enable = 0; + } + + return mbox_process(mbox); +} + int roc_nix_max_pkt_len(struct roc_nix *roc_nix) { @@ -363,11 +391,22 @@ skip_dev_init: nix->reta_sz = reta_sz; nix->mtu = ROC_NIX_DEFAULT_HW_FRS; + /* Register error and ras interrupts */ + rc = nix_register_irqs(nix); + if (rc) + goto lf_detach; + + rc = nix_tm_conf_init(roc_nix); + if (rc) + goto unregister_irqs; + /* Get NIX HW info */ roc_nix_get_hw_info(roc_nix); nix->dev.drv_inited = true; return 0; +unregister_irqs: + nix_unregister_irqs(nix); lf_detach: nix_lf_detach(nix); dev_fini: @@ -388,6 +427,9 @@ roc_nix_dev_fini(struct roc_nix *roc_nix) if (!nix->dev.drv_inited) goto fini; + nix_tm_conf_fini(roc_nix); + nix_unregister_irqs(nix); + rc = nix_lf_detach(nix); nix->dev.drv_inited = false; fini: