From 90c45c29fe11b478ea20564b1f4a94614b03ec4e Mon Sep 17 00:00:00 2001 From: Nilay Vaish Date: Sat, 10 Nov 2012 17:18:01 -0600 Subject: ruby: support functional accesses in garnet flexible network --- .../garnet/flexible-pipeline/NetworkInterface.cc | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc') diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc b/src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc index 824acce80..99cb44871 100644 --- a/src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc +++ b/src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc @@ -338,6 +338,36 @@ NetworkInterface::checkReschedule() } } +bool +NetworkInterface::functionalRead(Packet *pkt) +{ + // Go through the internal buffers + for (unsigned int i = 0; i < m_ni_buffers.size(); ++i) { + if (m_ni_buffers[i]->functionalRead(pkt)) { + return true; + } + } + + // Go through the buffer between this network interface and the router + if (outSrcQueue->functionalRead(pkt)) { + return true; + } + + return false; +} + +uint32_t +NetworkInterface::functionalWrite(Packet *pkt) +{ + uint32_t num_functional_writes = 0; + for (unsigned int i = 0; i < m_ni_buffers.size(); ++i) { + num_functional_writes += m_ni_buffers[i]->functionalWrite(pkt); + } + + num_functional_writes += outSrcQueue->functionalWrite(pkt); + return num_functional_writes; +} + void NetworkInterface::print(std::ostream& out) const { -- cgit v1.2.3