summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mem/ruby/network/garnet2.0/NetworkInterface.cc5
-rw-r--r--src/mem/ruby/network/garnet2.0/SwitchAllocator.cc8
2 files changed, 6 insertions, 7 deletions
diff --git a/src/mem/ruby/network/garnet2.0/NetworkInterface.cc b/src/mem/ruby/network/garnet2.0/NetworkInterface.cc
index b3d89cab8..4e692704d 100644
--- a/src/mem/ruby/network/garnet2.0/NetworkInterface.cc
+++ b/src/mem/ruby/network/garnet2.0/NetworkInterface.cc
@@ -437,9 +437,6 @@ void
NetworkInterface::scheduleOutputLink()
{
int vc = m_vc_round_robin;
- m_vc_round_robin++;
- if (m_vc_round_robin == m_num_vcs)
- m_vc_round_robin = 0;
for (int i = 0; i < m_num_vcs; i++) {
vc++;
@@ -470,6 +467,8 @@ NetworkInterface::scheduleOutputLink()
if (!is_candidate_vc)
continue;
+ m_vc_round_robin = vc;
+
m_out_vc_state[vc]->decrement_credit();
// Just removing the flit
flit *t_flit = m_ni_out_vcs[vc]->getTopFlit();
diff --git a/src/mem/ruby/network/garnet2.0/SwitchAllocator.cc b/src/mem/ruby/network/garnet2.0/SwitchAllocator.cc
index 836f071fe..1e9d0e6f7 100644
--- a/src/mem/ruby/network/garnet2.0/SwitchAllocator.cc
+++ b/src/mem/ruby/network/garnet2.0/SwitchAllocator.cc
@@ -136,8 +136,8 @@ SwitchAllocator::arbitrate_inports()
m_port_requests[outport][inport] = true;
m_vc_winners[outport][inport]= invc;
- // Update Round Robin pointer
- m_round_robin_invc[inport]++;
+ // Update Round Robin pointer to the next VC
+ m_round_robin_invc[inport] = invc + 1;
if (m_round_robin_invc[inport] >= m_num_vcs)
m_round_robin_invc[inport] = 0;
@@ -252,7 +252,7 @@ SwitchAllocator::arbitrate_outports()
m_port_requests[outport][inport] = false;
// Update Round Robin pointer
- m_round_robin_inport[outport]++;
+ m_round_robin_inport[outport] = inport + 1;
if (m_round_robin_inport[outport] >= m_num_inports)
m_round_robin_inport[outport] = 0;
@@ -393,4 +393,4 @@ SwitchAllocator::resetStats()
{
m_input_arbiter_activity = 0;
m_output_arbiter_activity = 0;
-} \ No newline at end of file
+}