diff options
author | Mohsin Kazmi <sykazmi@cisco.com> | 2019-02-12 21:56:49 +0100 |
---|---|---|
committer | Neale Ranns <nranns@cisco.com> | 2019-02-13 04:52:36 -0800 |
commit | d3125833d5f93116a88468d532da123d061a7cd1 (patch) | |
tree | 4aa5980ce4e0f1c3c8949b7735874f66f247dea0 /extras/vom/vom/l2_xconnect.cpp | |
parent | b4cfd55f25cb87acff732fc40633d055cfedd816 (diff) |
vom: Add support for vtr in xconnect
Change-Id: Ib168a1d20c4609e4e64f472f75e9463161638e3e
Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
Diffstat (limited to 'extras/vom/vom/l2_xconnect.cpp')
-rw-r--r-- | extras/vom/vom/l2_xconnect.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/extras/vom/vom/l2_xconnect.cpp b/extras/vom/vom/l2_xconnect.cpp index 83d6541fad4..1bdb651ff9b 100644 --- a/extras/vom/vom/l2_xconnect.cpp +++ b/extras/vom/vom/l2_xconnect.cpp @@ -14,6 +14,7 @@ */ #include "vom/l2_xconnect.hpp" +#include "vom/l2_vtr_cmds.hpp" #include "vom/l2_xconnect_cmds.hpp" #include "vom/singular_db_funcs.hpp" @@ -33,6 +34,8 @@ l2_xconnect::l2_xconnect(const interface& east_itf, const interface& west_itf) , m_west_itf(west_itf.singular()) , m_xconnect_east(0) , m_xconnect_west(0) + , m_vtr_op(l2_vtr_op_t::L2_VTR_DISABLED, rc_t::UNSET) + , m_vtr_op_tag(0) { } @@ -41,6 +44,8 @@ l2_xconnect::l2_xconnect(const l2_xconnect& o) , m_west_itf(o.m_west_itf) , m_xconnect_east(o.m_xconnect_east) , m_xconnect_west(o.m_xconnect_west) + , m_vtr_op(o.m_vtr_op) + , m_vtr_op_tag(o.m_vtr_op_tag) { } @@ -90,6 +95,11 @@ l2_xconnect::replay() HW::enqueue(new l2_xconnect_cmds::bind_cmd( m_xconnect_west, m_west_itf->handle(), m_east_itf->handle())); } + + if (m_vtr_op && handle_t::INVALID != m_east_itf->handle()) { + HW::enqueue( + new set_vtr_op_cmd(m_vtr_op, m_east_itf->handle(), m_vtr_op_tag)); + } } l2_xconnect::~l2_xconnect() @@ -112,6 +122,15 @@ l2_xconnect::to_string() const } void +l2_xconnect::set(const l2_vtr_op_t& op, uint16_t tag) +{ + assert(rc_t::UNSET == m_vtr_op.rc()); + m_vtr_op.set(rc_t::NOOP); + m_vtr_op.update(op); + m_vtr_op_tag = tag; +} + +void l2_xconnect::update(const l2_xconnect& desired) { /* @@ -123,6 +142,14 @@ l2_xconnect::update(const l2_xconnect& desired) HW::enqueue(new l2_xconnect_cmds::bind_cmd( m_xconnect_west, m_west_itf->handle(), m_east_itf->handle())); } + + /* + * set the VTR operation if request + */ + if (m_vtr_op.update(desired.m_vtr_op)) { + HW::enqueue( + new set_vtr_op_cmd(m_vtr_op, m_east_itf->handle(), m_vtr_op_tag)); + } } std::shared_ptr<l2_xconnect> |