From: Satha Rao <skotesh...@marvell.com>

Updated shaper profile with user configurable RED algorithm.
This helps in configuring a TM node in red drop mode vs
stall mode.

Signed-off-by: Satha Rao <skotesh...@marvell.com>
---
 drivers/common/cnxk/roc_nix.h          | 1 +
 drivers/common/cnxk/roc_nix_tm_utils.c | 7 +++++--
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/common/cnxk/roc_nix.h b/drivers/common/cnxk/roc_nix.h
index 77e4d2919b..b17623076c 100644
--- a/drivers/common/cnxk/roc_nix.h
+++ b/drivers/common/cnxk/roc_nix.h
@@ -572,6 +572,7 @@ struct roc_nix_tm_shaper_profile {
        int32_t pkt_len_adj;
        bool pkt_mode;
        int8_t accuracy;
+       uint8_t red_algo;
        /* Function to free this memory */
        void (*free_fn)(void *profile);
 };
diff --git a/drivers/common/cnxk/roc_nix_tm_utils.c 
b/drivers/common/cnxk/roc_nix_tm_utils.c
index b9b605f8b1..193f9df5ff 100644
--- a/drivers/common/cnxk/roc_nix_tm_utils.c
+++ b/drivers/common/cnxk/roc_nix_tm_utils.c
@@ -1236,11 +1236,14 @@ roc_nix_tm_shaper_default_red_algo(struct 
roc_nix_tm_node *node,
        struct nix_tm_shaper_profile *profile;
        struct nix_tm_shaper_data cir, pir;
 
+       if (!roc_prof)
+               return;
+
        profile = (struct nix_tm_shaper_profile *)roc_prof->reserved;
-       tm_node->red_algo = NIX_REDALG_STD;
+       tm_node->red_algo = roc_prof->red_algo;
 
        /* C0 doesn't support STALL when both PIR & CIR are enabled */
-       if (profile && roc_model_is_cn96_cx()) {
+       if (roc_model_is_cn96_cx()) {
                nix_tm_shaper_conf_get(profile, &cir, &pir);
 
                if (pir.rate && cir.rate)
-- 
2.25.1

Reply via email to