summaryrefslogtreecommitdiff
path: root/src/mem/ruby/network/garnet/fixed-pipeline
diff options
context:
space:
mode:
authorJoe Gross <joe.gross@amd.com>2015-09-16 13:10:42 -0400
committerJoe Gross <joe.gross@amd.com>2015-09-16 13:10:42 -0400
commit950e431d8766a8cf3b897965c1726e6d2576c6dc (patch)
tree9fdb60b695b97e276aaec84ed4024a943ddd851e /src/mem/ruby/network/garnet/fixed-pipeline
parentc5058c0c007532c4c2dda5f8e24a92cccc010508 (diff)
downloadgem5-950e431d8766a8cf3b897965c1726e6d2576c6dc.tar.xz
ruby: fix message buffer init order
The recent changes to make MessageBuffers SimObjects required them to be initialized in a particular order, which could break some protocols. Fix this by calling initNetQueues on the external nodes of each external link in the constructor of Network. This patch also refactors the duplicated code for checking network allocation and setting net queues (which are called by initNetQueues) from the simple and garnet networks to be in Network.
Diffstat (limited to 'src/mem/ruby/network/garnet/fixed-pipeline')
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc26
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh3
2 files changed, 7 insertions, 22 deletions
diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc
index 4d5846f55..f6fe6f586 100644
--- a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc
+++ b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc
@@ -51,8 +51,13 @@ GarnetNetwork_d::GarnetNetwork_d(const Params *p)
m_buffers_per_ctrl_vc = p->buffers_per_ctrl_vc;
m_vnet_type.resize(m_virtual_networks);
- for (int i = 0; i < m_vnet_type.size(); i++) {
- m_vnet_type[i] = NULL_VNET_; // default
+
+ for(int i = 0 ; i < m_virtual_networks ; i++)
+ {
+ if (m_vnet_type_names[i] == "response")
+ m_vnet_type[i] = DATA_VNET_; // carries data (and ctrl) packets
+ else
+ m_vnet_type[i] = CTRL_VNET_; // carries only ctrl packets
}
// record the routers
@@ -188,23 +193,6 @@ GarnetNetwork_d::makeInternalLink(SwitchID src, SwitchID dest, BasicLink* link,
}
void
-GarnetNetwork_d::checkNetworkAllocation(NodeID id, bool ordered,
- int network_num, string vnet_type)
-{
- assert(id < m_nodes);
- assert(network_num < m_virtual_networks);
-
- if (ordered) {
- m_ordered[network_num] = true;
- }
-
- if (vnet_type == "response")
- m_vnet_type[network_num] = DATA_VNET_; // carries data (and ctrl) packets
- else
- m_vnet_type[network_num] = CTRL_VNET_; // carries only ctrl packets
-}
-
-void
GarnetNetwork_d::regStats()
{
BaseGarnetNetwork::regStats();
diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh
index efd70c3a0..99ecc02da 100644
--- a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh
+++ b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh
@@ -84,9 +84,6 @@ class GarnetNetwork_d : public BaseGarnetNetwork
uint32_t functionalWrite(Packet *pkt);
private:
- void checkNetworkAllocation(NodeID id, bool ordered, int network_num,
- std::string vnet_type);
-
GarnetNetwork_d(const GarnetNetwork_d& obj);
GarnetNetwork_d& operator=(const GarnetNetwork_d& obj);