Skip to content

Commit

Permalink
template updates from main.
Browse files Browse the repository at this point in the history
  • Loading branch information
r12f committed Dec 14, 2023
1 parent 96b0232 commit c11853e
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 20 deletions.
35 changes: 25 additions & 10 deletions dash-pipeline/SAI/templates/saiapi.cpp.j2
Original file line number Diff line number Diff line change
Expand Up @@ -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<uint{{ table['keys'][0].bitwidth }}_t>(objId), mf_exact, {{ table['keys'][0].bitwidth }});
{% else %}
// SAI object table with multiple P4 table keys
// Copy P4 table keys from appropriate SAI attributes
Expand All @@ -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}});
Expand All @@ -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 %}
Expand Down Expand Up @@ -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<uint{{key.bitwidth}}_t>(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;
Expand All @@ -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 %}
Expand Down Expand Up @@ -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<uint{{key.bitwidth}}_t>(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;
Expand All @@ -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 %}
Expand Down
20 changes: 10 additions & 10 deletions dash-pipeline/SAI/templates/saiapi.h.j2
Original file line number Diff line number Diff line change
Expand Up @@ -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 %}
Expand Down Expand Up @@ -120,35 +120,35 @@ 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
{% if key.type == 'sai_uint16_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 %}
Expand Down

0 comments on commit c11853e

Please sign in to comment.