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 <ndabilpu...@marvell.com> --- drivers/common/cnxk/roc_errata.h | 7 +++++++ drivers/common/cnxk/roc_nix.h | 2 +- drivers/common/cnxk/roc_nix_fc.c | 3 ++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/common/cnxk/roc_errata.h b/drivers/common/cnxk/roc_errata.h index 31162d5..f048297 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 aedde1c..944e4c6 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 a0505bd..cef5d07 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; -- 2.8.4