From: Nithin Dabilpuram Date: Thu, 16 Jun 2022 09:24:10 +0000 (+0530) Subject: common/cnxk: avoid CPT backpressure due to errata X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=9f8f18037da0acd16d21f4131c22340ef9f7d77f;p=dpdk.git common/cnxk: avoid CPT backpressure due to errata Avoid enabling CPT backpressure due to errata where backpressure would block requests from even other CPT LF's. Also allow CQ size >=16K. Signed-off-by: Nithin Dabilpuram --- diff --git a/drivers/common/cnxk/roc_errata.h b/drivers/common/cnxk/roc_errata.h index 31162d5232..f04829736b 100644 --- a/drivers/common/cnxk/roc_errata.h +++ b/drivers/common/cnxk/roc_errata.h @@ -77,4 +77,11 @@ roc_errata_nix_has_perf_issue_on_stats_update(void) return true; } +/* Errata IPBUCPT-38726, IPBUCPT-38727 */ +static inline bool +roc_errata_cpt_hang_on_x2p_bp(void) +{ + return roc_model_is_cn10ka_a0(); +} + #endif /* _ROC_ERRATA_H_ */ diff --git a/drivers/common/cnxk/roc_nix.h b/drivers/common/cnxk/roc_nix.h index aedde1c10f..944e4c649c 100644 --- a/drivers/common/cnxk/roc_nix.h +++ b/drivers/common/cnxk/roc_nix.h @@ -309,7 +309,7 @@ struct roc_nix_rq { struct roc_nix_cq { /* Input parameters */ uint16_t qid; - uint16_t nb_desc; + uint32_t nb_desc; /* End of Input parameters */ uint16_t drop_thresh; struct roc_nix *roc_nix; diff --git a/drivers/common/cnxk/roc_nix_fc.c b/drivers/common/cnxk/roc_nix_fc.c index a0505bd65f..cef5d07253 100644 --- a/drivers/common/cnxk/roc_nix_fc.c +++ b/drivers/common/cnxk/roc_nix_fc.c @@ -77,7 +77,8 @@ nix_fc_rxchan_bpid_set(struct roc_nix *roc_nix, bool enable) goto exit; /* Enable backpressure on CPT if inline inb is enabled */ - if (enable && roc_nix_inl_inb_is_enabled(roc_nix)) { + if (enable && roc_nix_inl_inb_is_enabled(roc_nix) && + !roc_errata_cpt_hang_on_x2p_bp()) { req = mbox_alloc_msg_nix_cpt_bp_enable(mbox); if (req == NULL) return rc;