diff --git a/syncd/FlexCounter.cpp b/syncd/FlexCounter.cpp index 7b670bb56..d0c9a77fd 100644 --- a/syncd/FlexCounter.cpp +++ b/syncd/FlexCounter.cpp @@ -2031,7 +2031,9 @@ class DashMeterCounterContext : public BaseCounterContext sai_object_key_t object_key; object_key.key.meter_bucket_entry.eni_id = rid; object_key.key.meter_bucket_entry.switch_id = m_switchId; - for (uint32_t i = 0; i < m_meterBucketsPerEni; ++i) { + // Populate object keys for ENI meter classes: 1 - max-capable. + // 0 is not a valid meter class since its used to denote traffic that is not metered + for (uint32_t i = 1; i <= m_meterBucketsPerEni; ++i) { object_key.key.meter_bucket_entry.meter_class = i; ctx.object_keys.push_back(object_key); } diff --git a/tests/aspell.en.pws b/tests/aspell.en.pws index 26228e28f..af7c95502 100644 --- a/tests/aspell.en.pws +++ b/tests/aspell.en.pws @@ -30,6 +30,7 @@ DPU EAPOL ECN EIO +ENI ETERM ecmp ECMP diff --git a/unittest/syncd/TestFlexCounter.cpp b/unittest/syncd/TestFlexCounter.cpp index 47808ec48..bf3a6ad6a 100644 --- a/unittest/syncd/TestFlexCounter.cpp +++ b/unittest/syncd/TestFlexCounter.cpp @@ -1921,7 +1921,7 @@ TEST(FlexCounter, addRemoveDashMeterCounter) EXPECT_EQ(number_of_counters, 2); for (uint32_t i = 0; i < object_count; ++i) { - EXPECT_EQ(object_keys[i].key.meter_bucket_entry.meter_class, i); + EXPECT_EQ(object_keys[i].key.meter_bucket_entry.meter_class, i + 1); dash_meter_fill_values(i, number_of_counters, &(counters[i * number_of_counters]), nullptr); object_status[i] = SAI_STATUS_SUCCESS; } @@ -1933,7 +1933,8 @@ TEST(FlexCounter, addRemoveDashMeterCounter) std::string value; for (uint32_t i = 0; i < (expectedValues.size()/counterIdNames.size()); i++) { - auto entry_key = sai_meter_bucket_entry_t {.switch_id = 0, .eni_id = eni_id, .meter_class = i*100}; + auto entry_key = sai_meter_bucket_entry_t {.switch_id = 0, .eni_id = eni_id, + .meter_class = (i*100) + 1}; auto key = sai_serialize_meter_bucket_entry(entry_key); for (size_t j = 0; j < 2; ++j) { countersTable.hget(key, counterIdNames[j], value);