From c11853ef955ee49ace23279be874fa521d963f03 Mon Sep 17 00:00:00 2001 From: r12f Date: Thu, 14 Dec 2023 00:05:28 +0000 Subject: [PATCH] template updates from main. --- dash-pipeline/SAI/templates/saiapi.cpp.j2 | 35 ++++++++++++++++------- dash-pipeline/SAI/templates/saiapi.h.j2 | 20 ++++++------- 2 files changed, 35 insertions(+), 20 deletions(-) diff --git a/dash-pipeline/SAI/templates/saiapi.cpp.j2 b/dash-pipeline/SAI/templates/saiapi.cpp.j2 index 406902125..a111c0833 100644 --- a/dash-pipeline/SAI/templates/saiapi.cpp.j2 +++ b/dash-pipeline/SAI/templates/saiapi.cpp.j2 @@ -61,7 +61,8 @@ static sai_status_t dash_sai_create_{{ table.name }}( auto mf = matchActionEntry->add_match(); mf->set_field_id({{table['keys'][0].id}}); auto mf_exact = mf->mutable_exact(); - {{table['keys'][0].field}}SetVal(objId, mf_exact, {{table['keys'][0].bitwidth}}); + //{{table['keys'][0].field}}SetVal(objId, mf_exact, {{table['keys'][0].bitwidth}}); + {{table['keys'][0].field}}SetVal(static_cast(objId), mf_exact, {{ table['keys'][0].bitwidth }}); {% else %} // SAI object table with multiple P4 table keys // Copy P4 table keys from appropriate SAI attributes @@ -74,7 +75,7 @@ static sai_status_t dash_sai_create_{{ table.name }}( switch(attr_list[i].id) { {% for key in table['keys'] %} - case SAI_{{ table.name | upper }}_ATTR_{{ key.sai_key_name | upper }}: + case SAI_{{ table.name | upper }}_ATTR_{{ key.name | upper }}: { auto mf = matchActionEntry->add_match(); mf->set_field_id({{key.id}}); @@ -101,8 +102,8 @@ static sai_status_t dash_sai_create_{{ table.name }}( {% elif key.match_type == 'ternary' %} auto mf_ternary = mf->mutable_ternary(); {{key.field}}SetVal(attr_list[i].value, mf_ternary, {{key.bitwidth}}); - auto mask = getMaskAttr(SAI_{{ table.name | upper }}_ATTR_{{ key.sai_key_name | upper }}_MASK, attr_count, attr_list); - assert(mask && "SAI_{{ table.name | upper }}_ATTR_{{ key.sai_key_name | upper }}_MASK isn't provided"); + auto mask = getMaskAttr(SAI_{{ table.name | upper }}_ATTR_{{ key.name | upper }}_MASK, attr_count, attr_list); + assert(mask && "SAI_{{ table.name | upper }}_ATTR_{{ key.name | upper }}_MASK isn't provided"); {{key.field}}SetMask(mask->value, mf_ternary, {{key.bitwidth}}); {% endif %} {% if key.ip_is_v6_field_id != 0 %} @@ -339,10 +340,17 @@ static sai_status_t dash_sai_create_{{ table.name }}( mf->set_field_id({{key.id}}); {% if key.match_type == 'exact' %} auto mf_exact = mf->mutable_exact(); - {{key.field}}SetVal(tableEntry->{{ key.sai_key_name | lower }}, mf_exact, {{key.bitwidth}}); + //{{key.field}}SetVal(tableEntry->{{ key.name | lower }}, mf_exact, {{key.bitwidth}}); + {% set keyfield = key.field %} + {% set bitwidth = key.bitwidth %} + {% if keyfield in ['ipaddr','mac'] or bitwidth in [24] %} + {{key.field}}SetVal(tableEntry->{{ key.name | lower }}, mf_exact, {{key.bitwidth}}); + {% else %} + {{key.field}}SetVal(static_cast(tableEntry->{{ key.name | lower }}), mf_exact, {{key.bitwidth}}); + {% endif %} {% elif key.match_type == 'lpm' %} auto mf_lpm = mf->mutable_lpm(); - {{key.field}}SetVal(tableEntry->{{ key.sai_key_name | lower }}, mf_lpm, {{key.bitwidth}}); + {{key.field}}SetVal(tableEntry->{{ key.name | lower }}, mf_lpm, {{key.bitwidth}}); {% elif key.match_type == 'list' %} assert(0 && "mutable_list is not supported"); goto ErrRet; @@ -362,7 +370,7 @@ static sai_status_t dash_sai_create_{{ table.name }}( auto mf = matchActionEntry->add_match(); mf->set_field_id({{key.ip_is_v6_field_id}}); auto mf_exact = mf->mutable_exact(); - booldataSetVal((tableEntry->{{ key.sai_key_name | lower }}.addr_family == SAI_IP_ADDR_FAMILY_IPV4) ? 0 : 1, mf_exact, 1); + booldataSetVal((tableEntry->{{ key.name | lower }}.addr_family == SAI_IP_ADDR_FAMILY_IPV4) ? 0 : 1, mf_exact, 1); } {% endif %} {% endfor %} @@ -496,10 +504,17 @@ static sai_status_t dash_sai_remove_{{ table.name }}( mf->set_field_id({{key.id}}); {% if key.match_type == 'exact' %} auto mf_exact = mf->mutable_exact(); - {{key.field}}SetVal(tableEntry->{{ key.sai_key_name | lower }}, mf_exact, {{key.bitwidth}}); + {% set keyfield = key.field %} + {% set bitwidth = key.bitwidth %} + {% if keyfield in ['ipaddr','mac'] or bitwidth in [24] %} + {{key.field}}SetVal(tableEntry->{{ key.name | lower }}, mf_exact, {{key.bitwidth}}); + {% else %} + {{key.field}}SetVal(static_cast(tableEntry->{{ key.name | lower }}), mf_exact, {{key.bitwidth}}); + {% endif %} + //{{key.field}}SetVal(tableEntry->{{ key.name | lower }}, mf_exact, {{key.bitwidth}}); {% elif key.match_type == 'lpm' %} auto mf_lpm = mf->mutable_lpm(); - {{key.field}}SetVal(tableEntry->{{ key.sai_key_name | lower }}, mf_lpm, {{key.bitwidth}}); + {{key.field}}SetVal(tableEntry->{{ key.name | lower }}, mf_lpm, {{key.bitwidth}}); {% elif key.match_type == 'list' %} assert(0 && "mutable_list is not supported"); goto ErrRet; @@ -518,7 +533,7 @@ static sai_status_t dash_sai_remove_{{ table.name }}( auto mf = matchActionEntry->add_match(); mf->set_field_id({{key.ip_is_v6_field_id}}); auto mf_exact = mf->mutable_exact(); - booldataSetVal((tableEntry->{{ key.sai_key_name | lower }}.addr_family == SAI_IP_ADDR_FAMILY_IPV4) ? 0 : 1, mf_exact, 1); + booldataSetVal((tableEntry->{{ key.name | lower }}.addr_family == SAI_IP_ADDR_FAMILY_IPV4) ? 0 : 1, mf_exact, 1); } {% endif %} {% endfor %} diff --git a/dash-pipeline/SAI/templates/saiapi.h.j2 b/dash-pipeline/SAI/templates/saiapi.h.j2 index bf4df0c8e..edbbc7745 100644 --- a/dash-pipeline/SAI/templates/saiapi.h.j2 +++ b/dash-pipeline/SAI/templates/saiapi.h.j2 @@ -64,19 +64,19 @@ typedef struct _sai_{{ table.name }}_t {% for key in table['keys'] %} /** - * @brief {{ key.match_type | capitalize | replace('Lpm', 'LPM') }} matched key {{ key.sai_key_name }} + * @brief {{ key.match_type | capitalize | replace('Lpm', 'LPM') }} matched key {{ key.name }} {% if key.type == 'sai_object_id_t' %} * * @objects SAI_OBJECT_TYPE_{{ key.object_name | upper }} {% endif %} */ - {{ key.type }} {{ key.sai_key_name | lower }}; + {{ key.type }} {{ key.name | lower }}; {% if key.match_type == 'ternary' %} /** - * @brief Ternary key {{ key.sai_key_name }} mask + * @brief Ternary key {{ key.name }} mask */ - {{ key.type }} {{ key.sai_key_name | lower }}_mask; + {{ key.type }} {{ key.name | lower }}_mask; {% endif %} {% endfor %} @@ -120,7 +120,7 @@ typedef enum _sai_{{ table.name }}_attr_t {% for key in table['keys'] %} {% if key.isattribute != 'false' %} /** - * @brief {{ key.match_type | capitalize | replace('Lpm', 'LPM') }} matched key {{ key.sai_key_name }} + * @brief {{ key.match_type | capitalize | replace('Lpm', 'LPM') }} matched key {{ key.name }} * * @type {{ key.type }} * @flags MANDATORY_ON_CREATE | CREATE_ONLY @@ -128,27 +128,27 @@ typedef enum _sai_{{ table.name }}_attr_t * @isvlan false {% endif %} {% if key.type == 'sai_object_id_t' %} - * @objects SAI_OBJECT_TYPE_{{ key.sai_key_name | replace('_id', '') | upper }} + * @objects SAI_OBJECT_TYPE_{{ key.name | replace('_id', '') | upper }} {% endif %} {% if key.isresourcetype == 'true' %} * @isresourcetype true {% endif %} */ {% if not ns.firstattr %} - SAI_{{ table.name | upper }}_ATTR_{{ key.sai_key_name | upper }} = SAI_{{ table.name | upper }}_ATTR_START, + SAI_{{ table.name | upper }}_ATTR_{{ key.name | upper }} = SAI_{{ table.name | upper }}_ATTR_START, {% set ns.firstattr = true %} {% else %} - SAI_{{ table.name | upper }}_ATTR_{{ key.sai_key_name | upper }}, + SAI_{{ table.name | upper }}_ATTR_{{ key.name | upper }}, {% endif %} {% if key.match_type == 'ternary' %} /** - * @brief Ternary matched mask {{ key.sai_key_name }} + * @brief Ternary matched mask {{ key.name }} * * @type {{ key.type }} * @flags MANDATORY_ON_CREATE | CREATE_ONLY */ - SAI_{{ table.name | upper }}_ATTR_{{ key.sai_key_name | upper }}_MASK, + SAI_{{ table.name | upper }}_ATTR_{{ key.name | upper }}_MASK, {% endif %} {% endif %}