[5/9] common/cnxk: enable bp on CPT with inline inbound
Checks
Commit Message
Enable backpressure on CPT with inline inbound enabled.
Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
---
drivers/common/cnxk/roc_mbox.h | 4 ++++
drivers/common/cnxk/roc_nix_fc.c | 28 ++++++++++++++++++++++++++++
2 files changed, 32 insertions(+)
@@ -239,6 +239,10 @@ struct mbox_msghdr {
M(NIX_BANDPROF_ALLOC, 0x801d, nix_bandprof_alloc, \
nix_bandprof_alloc_req, nix_bandprof_alloc_rsp) \
M(NIX_BANDPROF_FREE, 0x801e, nix_bandprof_free, nix_bandprof_free_req, \
+ msg_rsp) \
+ M(NIX_CPT_BP_ENABLE, 0x8020, nix_cpt_bp_enable, nix_bp_cfg_req, \
+ nix_bp_cfg_rsp) \
+ M(NIX_CPT_BP_DISABLE, 0x8021, nix_cpt_bp_disable, nix_bp_cfg_req, \
msg_rsp)
/* Messages initiated by AF (range 0xC00 - 0xDFF) */
@@ -70,6 +70,34 @@ nix_fc_rxchan_bpid_set(struct roc_nix *roc_nix, bool enable)
nix->chan_cnt = 0;
}
+ if (roc_model_is_cn9k())
+ goto exit;
+
+ /* Enable backpressure on CPT if inline inb is enabled */
+ if (enable && roc_nix_inl_inb_is_enabled(roc_nix)) {
+ req = mbox_alloc_msg_nix_cpt_bp_enable(mbox);
+ if (req == NULL)
+ return rc;
+ req->chan_base = 0;
+ req->chan_cnt = 1;
+ req->bpid_per_chan = 0;
+
+ rc = mbox_process_msg(mbox, (void *)&rsp);
+ if (rc)
+ goto exit;
+ } else {
+ req = mbox_alloc_msg_nix_cpt_bp_disable(mbox);
+ if (req == NULL)
+ return rc;
+ req->chan_base = 0;
+ req->chan_cnt = 1;
+ req->bpid_per_chan = 0;
+
+ rc = mbox_process_msg(mbox, (void *)&rsp);
+ if (rc)
+ goto exit;
+ }
+
exit:
return rc;
}