From: Ashwin Sekhar T K Date: Fri, 17 Sep 2021 09:34:37 +0000 (+0530) Subject: common/cnxk: avoid using stashing option of stype X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=dd9525a7154e749a5620ccf0c4806011d2e696f3;p=dpdk.git common/cnxk: avoid using stashing option of stype Avoid using stashing option of stype in NPA in cn10k-a0 stepping. This is a workaround for a HW Errata due to which NPA stashing operations will never result in writing the data into L2 cache. But instead, it will be written into LLC. Signed-off-by: Ashwin Sekhar T K Acked-by: Jerin Jacob --- diff --git a/drivers/common/cnxk/roc_nix_queue.c b/drivers/common/cnxk/roc_nix_queue.c index 7e2f86eca7..76e439e7a9 100644 --- a/drivers/common/cnxk/roc_nix_queue.c +++ b/drivers/common/cnxk/roc_nix_queue.c @@ -585,6 +585,10 @@ sqb_pool_populate(struct roc_nix *roc_nix, struct roc_nix_sq *sq) memset(&aura, 0, sizeof(aura)); aura.fc_ena = 1; + if (roc_model_is_cn9k() || roc_model_is_cn10ka_a0()) + aura.fc_stype = 0x0; /* STF */ + else + aura.fc_stype = 0x3; /* STSTP */ aura.fc_addr = (uint64_t)sq->fc; aura.fc_hyst_bits = 0; /* Store count on all updates */ rc = roc_npa_pool_create(&sq->aura_handle, blk_sz, NIX_MAX_SQB, &aura, diff --git a/drivers/common/cnxk/roc_nix_tm_ops.c b/drivers/common/cnxk/roc_nix_tm_ops.c index ed244d4214..f2173c9a58 100644 --- a/drivers/common/cnxk/roc_nix_tm_ops.c +++ b/drivers/common/cnxk/roc_nix_tm_ops.c @@ -38,6 +38,13 @@ roc_nix_tm_sq_aura_fc(struct roc_nix_sq *sq, bool enable) req->aura.fc_ena = enable; req->aura_mask.fc_ena = 1; + if (roc_model_is_cn9k() || roc_model_is_cn10ka_a0()) { + req->aura.fc_stype = 0x0; /* STF */ + req->aura_mask.fc_stype = 0x0; /* STF */ + } else { + req->aura.fc_stype = 0x3; /* STSTP */ + req->aura_mask.fc_stype = 0x3; /* STSTP */ + } rc = mbox_process(mbox); if (rc) diff --git a/drivers/common/cnxk/roc_npa.h b/drivers/common/cnxk/roc_npa.h index 3fc6192e57..1cf50e5c4e 100644 --- a/drivers/common/cnxk/roc_npa.h +++ b/drivers/common/cnxk/roc_npa.h @@ -214,7 +214,7 @@ roc_npa_aura_batch_alloc_issue(uint64_t aura_handle, uint64_t *buf, cmp.u = 0; cmp.compare_s.aura = roc_npa_aura_handle_to_aura(aura_handle); cmp.compare_s.drop = drop; - cmp.compare_s.stype = ALLOC_STYPE_STSTP; + cmp.compare_s.stype = ALLOC_STYPE_STF; cmp.compare_s.dis_wait = dis_wait; cmp.compare_s.count = num;