dev: Fixing EtherDevice stats initialization order
authorHoa Nguyen <hoanguyen@ucdavis.edu>
Tue, 19 Jan 2021 18:05:47 +0000 (10:05 -0800)
committerHoa Nguyen <hoanguyen@ucdavis.edu>
Thu, 21 Jan 2021 03:05:26 +0000 (03:05 +0000)
Previously, the stat `totalBandwidth` is initialized before
`txBandwidth` and `rxBandwidth`. However, `totalBandwith` is of
 type Stats::Formula and `totalBandwidth = txBandwidth + rxBandwidth`.
Therefore, `totalBandwidth` should be initialized after the other two.

This change fixes the variable and stats initialization order accordingly.

The bug was reported here:  https://github.com/gem5/gem5/commit/3db48cbbc6e475592e6608b52a870d92ac2214aa#commitcomment-46094633.

Jira: https://gem5.atlassian.net/browse/GEM5-894

Change-Id: I2c7cc4120df672edf15b9a3ab6becc0bbebb778b
Signed-off-by: Hoa Nguyen <hoanguyen@ucdavis.edu>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/39395
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/dev/net/etherdevice.cc
src/dev/net/etherdevice.hh

index 64ab438d45b2e71add25a24aac1570be2bdd23aa..e279a9cba9b43f134e137796164334e6f2c25d7f 100644 (file)
@@ -37,6 +37,10 @@ EtherDevice::EtherDeviceStats::EtherDeviceStats(Stats::Group *parent)
       ADD_STAT(rxBytes, "Bytes Received"),
       ADD_STAT(txPackets, "Number of Packets Transmitted"),
       ADD_STAT(rxPackets, "Number of Packets Received"),
+      ADD_STAT(txBandwidth, "Transmit Bandwidth (bits/s)",
+               txBytes * Stats::constant(8) / simSeconds),
+      ADD_STAT(rxBandwidth, "Receive Bandwidth (bits/s)",
+               rxBytes * Stats::constant(8) / simSeconds),
       ADD_STAT(txIpChecksums, "Number of tx IP Checksums done by device"),
       ADD_STAT(rxIpChecksums, "Number of rx IP Checksums done by device"),
       ADD_STAT(txTcpChecksums, "Number of tx TCP Checksums done by device"),
@@ -53,10 +57,6 @@ EtherDevice::EtherDeviceStats::EtherDeviceStats(Stats::Group *parent)
       ADD_STAT(totBytes, "Total Bytes", txBytes + rxBytes),
       ADD_STAT(totPacketRate, "Total Tranmission Rate (packets/s)",
                totPackets / simSeconds),
-      ADD_STAT(txBandwidth, "Transmit Bandwidth (bits/s)",
-               txBytes * Stats::constant(8) / simSeconds),
-      ADD_STAT(rxBandwidth, "Receive Bandwidth (bits/s)",
-               rxBytes * Stats::constant(8) / simSeconds),
       ADD_STAT(txPacketRate, "Packet Tranmission Rate (packets/s)",
                txPackets / simSeconds),
       ADD_STAT(rxPacketRate, "Packet Reception Rate (packets/s)",
index 0cc54d02ab821bc525ceaf542a8980a274c87373..a853cd898e5a6338f9a1609dac42e6cf9c96dcd5 100644 (file)
@@ -70,6 +70,9 @@ class EtherDevice : public PciDevice
         Stats::Scalar txPackets;
         Stats::Scalar rxPackets;
 
+        Stats::Formula txBandwidth;
+        Stats::Formula rxBandwidth;
+
         Stats::Scalar txIpChecksums;
         Stats::Scalar rxIpChecksums;
 
@@ -90,9 +93,6 @@ class EtherDevice : public PciDevice
         Stats::Formula totBytes;
         Stats::Formula totPacketRate;
 
-        Stats::Formula txBandwidth;
-        Stats::Formula rxBandwidth;
-
         Stats::Formula txPacketRate;
         Stats::Formula rxPacketRate;