Skip to content

Commit 1875266

Browse files
Merge pull request #4178 from divyagayathri-hcl/sws_s1
[P4Orch] Add orchagent support for SAI_ACL_ENTRY_ATTR_FIELD_VLAN_USER_META and SAI_ACL_ENTRY_ATTR_FIELD_PORT_USER_META.
2 parents 2aea66e + fe75883 commit 1875266

File tree

4 files changed

+30
-0
lines changed

4 files changed

+30
-0
lines changed

orchagent/p4orch/acl_rule_manager.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -851,6 +851,7 @@ ReturnCode AclRuleManager::setMatchValue(const sai_acl_entry_attr_t attr_name,
851851
}
852852
break;
853853
}
854+
case SAI_ACL_ENTRY_ATTR_FIELD_PORT_USER_META:
854855
case SAI_ACL_ENTRY_ATTR_FIELD_ETHER_TYPE:
855856
case SAI_ACL_ENTRY_ATTR_FIELD_L4_SRC_PORT:
856857
case SAI_ACL_ENTRY_ATTR_FIELD_L4_DST_PORT:
@@ -980,6 +981,7 @@ ReturnCode AclRuleManager::setMatchValue(const sai_acl_entry_attr_t attr_name,
980981
}
981982
break;
982983
}
984+
case SAI_ACL_ENTRY_ATTR_FIELD_VLAN_USER_META:
983985
case SAI_ACL_ENTRY_ATTR_FIELD_TUNNEL_VNI:
984986
case SAI_ACL_ENTRY_ATTR_FIELD_ROUTE_DST_USER_META:
985987
case SAI_ACL_ENTRY_ATTR_FIELD_ACL_USER_META:

orchagent/p4orch/acl_util.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -910,6 +910,7 @@ bool isDiffMatchFieldValue(const sai_acl_entry_attr_t attr_name,
910910
case SAI_ACL_ENTRY_ATTR_FIELD_OUT_PORT: {
911911
return value.aclfield.data.oid != old_value.aclfield.data.oid;
912912
}
913+
case SAI_ACL_ENTRY_ATTR_FIELD_VLAN_USER_META:
913914
case SAI_ACL_ENTRY_ATTR_FIELD_ACL_IP_TYPE:
914915
case SAI_ACL_ENTRY_ATTR_FIELD_TUNNEL_VNI:
915916
case SAI_ACL_ENTRY_ATTR_FIELD_ROUTE_DST_USER_META:
@@ -941,6 +942,7 @@ bool isDiffMatchFieldValue(const sai_acl_entry_attr_t attr_name,
941942
return value.aclfield.data.u8 != old_value.aclfield.data.u8 ||
942943
value.aclfield.mask.u8 != old_value.aclfield.mask.u8;
943944
}
945+
case SAI_ACL_ENTRY_ATTR_FIELD_PORT_USER_META:
944946
case SAI_ACL_ENTRY_ATTR_FIELD_ETHER_TYPE:
945947
case SAI_ACL_ENTRY_ATTR_FIELD_L4_SRC_PORT:
946948
case SAI_ACL_ENTRY_ATTR_FIELD_L4_DST_PORT:

orchagent/p4orch/acl_util.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,8 @@ using P4AclRuleTables = std::map<std::string, std::map<std::string, P4AclRule>>;
323323
#define P4_MATCH_ACL_USER_META "SAI_ACL_TABLE_ATTR_FIELD_ACL_USER_META"
324324
#define P4_MATCH_VRF_ID "SAI_ACL_TABLE_ATTR_FIELD_VRF_ID"
325325
#define P4_MATCH_IPMC_TABLE_HIT "SAI_ACL_TABLE_ATTR_FIELD_IPMC_NPU_META_DST_HIT"
326+
#define P4_MATCH_VLAN_USER_META "SAI_ACL_TABLE_ATTR_FIELD_VLAN_USER_META"
327+
#define P4_MATCH_PORT_USER_META "SAI_ACL_TABLE_ATTR_FIELD_PORT_USER_META"
326328

327329
#define P4_ACTION_PACKET_ACTION "SAI_ACL_ENTRY_ATTR_ACTION_PACKET_ACTION"
328330
#define P4_ACTION_REDIRECT "SAI_ACL_ENTRY_ATTR_ACTION_REDIRECT"
@@ -495,6 +497,8 @@ static const acl_table_attr_lookup_t aclMatchTableAttrLookup = {
495497
{P4_MATCH_ACL_USER_META, SAI_ACL_TABLE_ATTR_FIELD_ACL_USER_META},
496498
{P4_MATCH_VRF_ID, SAI_ACL_TABLE_ATTR_FIELD_VRF_ID},
497499
{P4_MATCH_IPMC_TABLE_HIT, SAI_ACL_TABLE_ATTR_FIELD_IPMC_NPU_META_DST_HIT},
500+
{P4_MATCH_VLAN_USER_META, SAI_ACL_TABLE_ATTR_FIELD_VLAN_USER_META},
501+
{P4_MATCH_PORT_USER_META, SAI_ACL_TABLE_ATTR_FIELD_PORT_USER_META},
498502
};
499503

500504
static const acl_table_attr_format_lookup_t aclMatchTableAttrFormatLookup = {
@@ -547,6 +551,8 @@ static const acl_table_attr_format_lookup_t aclMatchTableAttrFormatLookup = {
547551
{SAI_ACL_TABLE_ATTR_FIELD_ACL_USER_META, Format::HEX_STRING},
548552
{SAI_ACL_TABLE_ATTR_FIELD_VRF_ID, Format::STRING},
549553
{SAI_ACL_TABLE_ATTR_FIELD_IPMC_NPU_META_DST_HIT, Format::HEX_STRING},
554+
{SAI_ACL_TABLE_ATTR_FIELD_VLAN_USER_META, Format::HEX_STRING},
555+
{SAI_ACL_TABLE_ATTR_FIELD_PORT_USER_META, Format::HEX_STRING},
550556
};
551557

552558
static const acl_table_attr_lookup_t aclCompositeMatchTableAttrLookup = {
@@ -606,6 +612,8 @@ static const acl_rule_attr_lookup_t aclMatchEntryAttrLookup = {
606612
{P4_MATCH_ACL_USER_META, SAI_ACL_ENTRY_ATTR_FIELD_ACL_USER_META},
607613
{P4_MATCH_VRF_ID, SAI_ACL_ENTRY_ATTR_FIELD_VRF_ID},
608614
{P4_MATCH_IPMC_TABLE_HIT, SAI_ACL_ENTRY_ATTR_FIELD_IPMC_NPU_META_DST_HIT},
615+
{P4_MATCH_VLAN_USER_META, SAI_ACL_ENTRY_ATTR_FIELD_VLAN_USER_META},
616+
{P4_MATCH_PORT_USER_META, SAI_ACL_ENTRY_ATTR_FIELD_PORT_USER_META},
609617
};
610618

611619
static const acl_rule_attr_lookup_t aclCompositeMatchEntryAttrLookup = {

orchagent/p4orch/tests/acl_manager_test.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -659,6 +659,10 @@ P4AclTableDefinitionAppDbEntry getDefaultAclTableDefAppDbEntry()
659659
P4_FORMAT_HEX_STRING, 32);
660660
app_db_entry.match_field_lookup["udf2"] =
661661
BuildMatchFieldJsonStrKindUdf("SAI_UDF_BASE_L3", 56, P4_FORMAT_HEX_STRING, 16);
662+
app_db_entry.match_field_lookup["vlan_user_meta"] =
663+
BuildMatchFieldJsonStrKindSaiField(P4_MATCH_VLAN_USER_META);
664+
app_db_entry.match_field_lookup["port_user_meta"] =
665+
BuildMatchFieldJsonStrKindSaiField(P4_MATCH_PORT_USER_META);
662666

663667
// Action field mapping, from P4 action to SAI action
664668
app_db_entry.action_field_lookup["set_packet_action"].push_back(
@@ -2838,6 +2842,8 @@ TEST_F(AclManagerTest, AclRuleWithValidMatchFields)
28382842
app_db_entry.match_fvs["inner_vlan_cfi"] = "200";
28392843
app_db_entry.match_fvs["vrf_id"] = gVrfName;
28402844
app_db_entry.match_fvs["ipmc_table_hit"] = "0x1";
2845+
app_db_entry.match_fvs["vlan_user_meta"] = "0x100 & 0x1F0";
2846+
app_db_entry.match_fvs["port_user_meta"] = "0x0044";
28412847

28422848
const auto &acl_rule_key = KeyGenerator::generateAclRuleKey(app_db_entry.match_fvs, "100");
28432849

@@ -3047,6 +3053,18 @@ TEST_F(AclManagerTest, AclRuleWithValidMatchFields)
30473053
EXPECT_EQ(true,
30483054
acl_rule->match_fvs[SAI_ACL_ENTRY_ATTR_FIELD_IPMC_NPU_META_DST_HIT]
30493055
.aclfield.data.booldata);
3056+
EXPECT_EQ(0x100,
3057+
acl_rule->match_fvs[SAI_ACL_ENTRY_ATTR_FIELD_VLAN_USER_META]
3058+
.aclfield.data.u32);
3059+
EXPECT_EQ(0x1F0,
3060+
acl_rule->match_fvs[SAI_ACL_ENTRY_ATTR_FIELD_VLAN_USER_META]
3061+
.aclfield.mask.u32);
3062+
EXPECT_EQ(0x0044,
3063+
acl_rule->match_fvs[SAI_ACL_ENTRY_ATTR_FIELD_PORT_USER_META]
3064+
.aclfield.data.u16);
3065+
EXPECT_EQ(0xFFFF,
3066+
acl_rule->match_fvs[SAI_ACL_ENTRY_ATTR_FIELD_PORT_USER_META]
3067+
.aclfield.mask.u16);
30503068

30513069
// Check action field value
30523070
EXPECT_EQ(SAI_PACKET_ACTION_TRAP,

0 commit comments

Comments
 (0)