From 652ec0e2ee8e6094fd541f6a5f96aea84ba72112 Mon Sep 17 00:00:00 2001 From: Prince Sunny Date: Sun, 21 Mar 2021 11:06:43 -0700 Subject: [PATCH] Revert "[buffermgr] Support maximum port headroom checking (#1607)" (#1675) This reverts commit 189a9641cf47e81c7c90d2501e70b73b74b082e1. --- cfgmgr/buffer_check_headroom_mellanox.lua | 28 +++++++++++++++++++++-- orchagent/port.h | 1 - orchagent/portsorch.cpp | 23 ------------------- orchagent/portsorch.h | 3 --- 4 files changed, 26 insertions(+), 29 deletions(-) diff --git a/cfgmgr/buffer_check_headroom_mellanox.lua b/cfgmgr/buffer_check_headroom_mellanox.lua index 510a967b73..da4a443b1b 100644 --- a/cfgmgr/buffer_check_headroom_mellanox.lua +++ b/cfgmgr/buffer_check_headroom_mellanox.lua @@ -10,15 +10,36 @@ local new_pg = ARGV[3] local accumulative_size = 0 local appl_db = "0" +local config_db = "4" local state_db = "6" local ret_true = {} +local ret_false = {} local ret = {} local default_ret = {} table.insert(ret_true, "result:true") +table.insert(ret_false, "result:false") -default_ret = ret_true +-- Fetch the cable length from CONFIG_DB +redis.call('SELECT', config_db) +local cable_length_keys = redis.call('KEYS', 'CABLE_LENGTH*') +if #cable_length_keys == 0 then + return ret_true +end + +-- Check whether cable length exceeds 300m (maximum value in the non-dynamic-buffer solution) +local cable_length_str = redis.call('HGET', cable_length_keys[1], port) +if cable_length_str == nil then + return ret_true +end +local cable_length = tonumber(string.sub(cable_length_str, 1, -2)) +if cable_length > 300 then + default_ret = ret_false +else + default_ret = ret_true +end +table.insert(default_ret, 'debug:no max_headroom_size configured, check cable length instead') local speed = redis.call('HGET', 'PORT|' .. port, 'speed') @@ -46,6 +67,7 @@ local function get_number_of_pgs(keyname) local range = string.match(keyname, "Ethernet%d+:([^%s]+)$") local size if range == nil then + table.insert(debuginfo, "debug:invalid pg:" .. keyname) return 0 end if string.len(range) == 1 then @@ -97,9 +119,11 @@ if max_headroom_size > accumulative_size then table.insert(ret, "result:true") else table.insert(ret, "result:false") - table.insert(ret, "debug:Accumulative headroom on port " .. accumulative_size .. " exceeds the maximum available headroom which is " .. max_headroom_size) end +table.insert(ret, "debug:max headroom:" .. max_headroom_size) +table.insert(ret, "debug:accumulative headroom:" .. accumulative_size) + for i = 1, #debuginfo do table.insert(ret, debuginfo[i]) end diff --git a/orchagent/port.h b/orchagent/port.h index 90a813a2bc..fb0b8b6434 100644 --- a/orchagent/port.h +++ b/orchagent/port.h @@ -110,7 +110,6 @@ class Port uint32_t m_vnid = VNID_NONE; uint32_t m_fdb_count = 0; uint32_t m_up_member_count = 0; - uint32_t m_maximum_headroom = 0; /* * Following two bit vectors are used to lock diff --git a/orchagent/portsorch.cpp b/orchagent/portsorch.cpp index fc8f62b867..c5ca8bffce 100755 --- a/orchagent/portsorch.cpp +++ b/orchagent/portsorch.cpp @@ -262,9 +262,6 @@ PortsOrch::PortsOrch(DBConnector *db, vector &tableNames) m_flexCounterTable = unique_ptr(new ProducerTable(m_flex_db.get(), FLEX_COUNTER_TABLE)); m_flexCounterGroupTable = unique_ptr(new ProducerTable(m_flex_db.get(), FLEX_COUNTER_GROUP_TABLE)); - m_state_db = shared_ptr(new DBConnector("STATE_DB", 0)); - m_stateBufferMaximumValueTable = unique_ptr(new Table(m_state_db.get(), STATE_BUFFER_MAXIMUM_VALUE_TABLE)); - initGearbox(); string queueWmSha, pgWmSha; @@ -3293,25 +3290,6 @@ void PortsOrch::initializePriorityGroups(Port &port) SWSS_LOG_INFO("Get priority groups for port %s", port.m_alias.c_str()); } -void PortsOrch::initializePortMaximumHeadroom(Port &port) -{ - sai_attribute_t attr; - - attr.id = SAI_PORT_ATTR_QOS_MAXIMUM_HEADROOM_SIZE; - - sai_status_t status = sai_port_api->get_port_attribute(port.m_port_id, 1, &attr); - if (status != SAI_STATUS_SUCCESS) - { - SWSS_LOG_NOTICE("Unable to get the maximum headroom for port %s rv:%d, ignored", port.m_alias.c_str(), status); - return; - } - - vector fvVector; - port.m_maximum_headroom = attr.value.u32; - fvVector.emplace_back("max_headroom_size", to_string(port.m_maximum_headroom)); - m_stateBufferMaximumValueTable->set(port.m_alias, fvVector); -} - bool PortsOrch::initializePort(Port &port) { SWSS_LOG_ENTER(); @@ -3320,7 +3298,6 @@ bool PortsOrch::initializePort(Port &port) initializePriorityGroups(port); initializeQueues(port); - initializePortMaximumHeadroom(port); /* Create host interface */ if (!addHostIntfs(port, port.m_alias, port.m_hif_id)) diff --git a/orchagent/portsorch.h b/orchagent/portsorch.h index 3b9cdcf21d..af3eb7221c 100755 --- a/orchagent/portsorch.h +++ b/orchagent/portsorch.h @@ -150,7 +150,6 @@ class PortsOrch : public Orch, public Subject unique_ptr
m_pgTable; unique_ptr
m_pgPortTable; unique_ptr
m_pgIndexTable; - unique_ptr
m_stateBufferMaximumValueTable; unique_ptr m_flexCounterTable; unique_ptr m_flexCounterGroupTable; @@ -161,7 +160,6 @@ class PortsOrch : public Orch, public Subject shared_ptr m_counter_db; shared_ptr m_flex_db; - shared_ptr m_state_db; FlexCounterManager port_stat_manager; FlexCounterManager port_buffer_drop_stat_manager; @@ -224,7 +222,6 @@ class PortsOrch : public Orch, public Subject bool initializePort(Port &port); void initializePriorityGroups(Port &port); - void initializePortMaximumHeadroom(Port &port); void initializeQueues(Port &port); bool addHostIntfs(Port &port, string alias, sai_object_id_t &host_intfs_id);