Skip to content

Commit

Permalink
Merge branch 'split-arch' into table-annex-2
Browse files Browse the repository at this point in the history
  • Loading branch information
ffoulkes committed Nov 15, 2024
2 parents 0d6e198 + 233d38d commit 2676162
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 25 deletions.
6 changes: 3 additions & 3 deletions stratum/hal/lib/tdi/es2k/es2k_table_annex.cc
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ ::util::Status Es2kTableAnnex::ReadPktModMeterEntry(
::util::Status Es2kTableAnnex::WritePktModMeterEntry(
std::shared_ptr<TdiSdeInterface::SessionInterface> session,
const ::p4::v1::Update::Type type, const ::p4::v1::MeterEntry& meter_entry,
uint32 meter_id) {
uint32 meter_rt_id) {
bool units_in_packets;
{
absl::ReaderMutexLock l(lock_);
Expand All @@ -130,12 +130,12 @@ ::util::Status Es2kTableAnnex::WritePktModMeterEntry(
config.isPktModMeter = units_in_packets;

RETURN_IF_ERROR(tdi_sde_interface_->WritePktModMeter(
device_, session, meter_id, meter_index, config));
device_, session, meter_rt_id, meter_index, config));
}

if (type == ::p4::v1::Update::DELETE) {
RETURN_IF_ERROR(tdi_sde_interface_->DeletePktModMeterConfig(
device_, session, meter_id, meter_index));
device_, session, meter_rt_id, meter_index));
}
return ::util::OkStatus();
}
Expand Down
2 changes: 1 addition & 1 deletion stratum/hal/lib/tdi/es2k/es2k_table_annex.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ class Es2kTableAnnex : public TdiTableAnnex {
::util::Status WritePktModMeterEntry(
std::shared_ptr<TdiSdeInterface::SessionInterface> session,
const ::p4::v1::Update::Type type,
const ::p4::v1::MeterEntry& meter_entry, uint32 meter_id) override;
const ::p4::v1::MeterEntry& meter_entry, uint32 meter_rt_id) override;

protected:
Es2kExternManager* es2k_extern_manager_;
Expand Down
2 changes: 1 addition & 1 deletion stratum/hal/lib/tdi/tdi_table_annex.h
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ class TdiTableAnnex {
virtual ::util::Status WritePktModMeterEntry(
std::shared_ptr<TdiSdeInterface::SessionInterface> session,
const ::p4::v1::Update::Type type,
const ::p4::v1::MeterEntry& meter_entry, uint32 meter_id) {
const ::p4::v1::MeterEntry& meter_entry, uint32 meter_rt_id) {
return ::util::OkStatus();
}
};
Expand Down
14 changes: 7 additions & 7 deletions stratum/hal/lib/tdi/tdi_table_manager.cc
Original file line number Diff line number Diff line change
Expand Up @@ -969,8 +969,8 @@ ::util::Status TdiTableManager::ReadMeterEntry(
ASSIGN_OR_RETURN(uint32 table_id,
tdi_sde_interface_->GetTdiRtId(meter_entry.meter_id()));

ASSIGN_OR_RETURN(auto resource_type,
p4_info_manager_->FindResourceTypeByID(table_id));
ASSIGN_OR_RETURN(auto resource_type, p4_info_manager_->FindResourceTypeByID(
meter_entry.meter_id()));

if (resource_type == "Meter") {
{
Expand Down Expand Up @@ -1036,11 +1036,11 @@ ::util::Status TdiTableManager::WriteMeterEntry(
<< "Missing meter id in MeterEntry " << meter_entry.ShortDebugString()
<< ".";

ASSIGN_OR_RETURN(uint32 meter_id,
ASSIGN_OR_RETURN(uint32 meter_rt_id,
tdi_sde_interface_->GetTdiRtId(meter_entry.meter_id()));

ASSIGN_OR_RETURN(auto resource_type,
p4_info_manager_->FindResourceTypeByID(meter_id));
ASSIGN_OR_RETURN(auto resource_type, p4_info_manager_->FindResourceTypeByID(
meter_entry.meter_id()));

if (resource_type == "Meter" && meter_entry.has_config()) {
bool units_in_packets; // or bytes
Expand All @@ -1059,14 +1059,14 @@ ::util::Status TdiTableManager::WriteMeterEntry(
}

RETURN_IF_ERROR(tdi_sde_interface_->WriteIndirectMeter(
device_, session, meter_id, meter_index, units_in_packets,
device_, session, meter_rt_id, meter_index, units_in_packets,
meter_entry.config().cir(), meter_entry.config().cburst(),
meter_entry.config().pir(), meter_entry.config().pburst()));
}

if (resource_type == "PacketModMeter") {
RETURN_IF_ERROR(tdi_table_annex_->WritePktModMeterEntry(
session, type, meter_entry, meter_id));
session, type, meter_entry, meter_rt_id));
}

return ::util::OkStatus();
Expand Down
6 changes: 6 additions & 0 deletions stratum/hal/lib/tdi/tdi_table_manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,12 @@ class TdiTableManager {
OperationMode mode, TdiSdeInterface* tdi_sde_interface,
TdiTargetFactory& tdi_target_factory, int device);

// Returns a read-only pointer to the P4InfoManager object.
// For medicinal purposes only.
const P4InfoManager* GetP4InfoManager() const {
return p4_info_manager_.get();
}

private:
// Private constructor, we can create the instance by using `CreateInstance`
// function only.
Expand Down
16 changes: 3 additions & 13 deletions stratum/hal/lib/tdi/tdi_table_manager_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -264,8 +264,7 @@ TEST_F(TdiTableManagerTest, WriteDirectMeterEntryTest) {
session_mock, ::p4::v1::Update::MODIFY, entry));
}

// See https://github.com/ipdk-io/stratum-dev/issues/306.
TEST_F(TdiTableManagerTest, DISABLED_WriteIndirectMeterEntryTest) {
TEST_F(TdiTableManagerTest, WriteIndirectMeterEntryTest) {
ASSERT_OK(PushTestConfig());
constexpr int kP4MeterId = 55555;
constexpr int kTdiRtTableId = 11111;
Expand Down Expand Up @@ -325,8 +324,7 @@ TEST_F(TdiTableManagerTest, RejectMeterEntryModifyWithoutMeterId) {
EXPECT_THAT(ret.error_message(), HasSubstr("Missing meter id"));
}

// See https://github.com/ipdk-io/stratum-dev/issues/306.
TEST_F(TdiTableManagerTest, DISABLED_RejectMeterEntryInsertDelete) {
TEST_F(TdiTableManagerTest, RejectMeterEntryInsert) {
ASSERT_OK(PushTestConfig());
auto session_mock = std::make_shared<SessionMock>();

Expand All @@ -349,17 +347,9 @@ TEST_F(TdiTableManagerTest, DISABLED_RejectMeterEntryInsertDelete) {
session_mock, ::p4::v1::Update::INSERT, entry);
ASSERT_FALSE(ret.ok());
EXPECT_EQ(ERR_INVALID_PARAM, ret.error_code());

ret = tdi_table_manager_->WriteMeterEntry(session_mock,
::p4::v1::Update::DELETE, entry);
ASSERT_FALSE(ret.ok());
// TODO(derek): fails because WriteMeterEntry returns UNKNOWN (2)
// instead of ERR_INVALID_PARAM (503).
EXPECT_EQ(ERR_INVALID_PARAM, ret.error_code());
}

// See https://github.com/ipdk-io/stratum-dev/issues/306.
TEST_F(TdiTableManagerTest, DISABLED_ReadSingleIndirectMeterEntryTest) {
TEST_F(TdiTableManagerTest, ReadSingleIndirectMeterEntryTest) {
ASSERT_OK(PushTestConfig());
auto session_mock = std::make_shared<SessionMock>();
constexpr int kP4MeterId = 55555;
Expand Down

0 comments on commit 2676162

Please sign in to comment.