summaryrefslogtreecommitdiffstats
path: root/libs
diff options
context:
space:
mode:
authorEvan Lojewski <github@meklort.com>2020-08-04 21:47:52 -0600
committerGitHub <noreply@github.com>2020-08-04 21:47:52 -0600
commitf062f1a81abe4ec11ceddb3c14d63ac341f603cc (patch)
tree3dd91ab11c0a89ce70655c58f76389bf9d975c26 /libs
parentc691b22d96160128f6c2f80eb5937e1f59dba6f3 (diff)
downloadbcm5719-ortega-f062f1a81abe4ec11ceddb3c14d63ac341f603cc.tar.gz
bcm5719-ortega-f062f1a81abe4ec11ceddb3c14d63ac341f603cc.zip
statistics: Enable recording packet statistics for NCSI TX/RX and Ethernet TX/RX (#102)v0.3.378
Diffstat (limited to 'libs')
-rw-r--r--libs/NCSI/ncsi.c31
-rw-r--r--libs/Network/rx.c7
-rw-r--r--libs/Network/tx.c5
3 files changed, 28 insertions, 15 deletions
diff --git a/libs/NCSI/ncsi.c b/libs/NCSI/ncsi.c
index 88f603d..25d97f5 100644
--- a/libs/NCSI/ncsi.c
+++ b/libs/NCSI/ncsi.c
@@ -407,8 +407,10 @@ static void getLinkStatusHandler(NetworkFrame_t *frame)
NetworkPort_t *port = gPackageState.port[ch];
uint8_t phy = MII_getPhy(port->device);
- uint32_t rx = port->shm_channel->NcsiChannelCtrlstatAllRx.r32;
- uint32_t tx = port->shm_channel->NcsiChannelCtrlstatAllTx.r32;
+ uint32_t rx_net = port->shm_channel->NcsiChannelNetworkRx.r32;
+ uint32_t tx_net = port->shm_channel->NcsiChannelNetworkTx.r32;
+ uint32_t rx_ncsi = port->shm_channel->NcsiChannelNcsiRx.r32;
+ uint32_t tx_ncsi = port->shm_channel->NcsiChannelNcsiTx.r32;
APE_aquireLock();
stat.r16 = MII_readRegister(port->device, phy, (mii_reg_t)REG_MII_AUXILIARY_STATUS_SUMMARY);
@@ -416,10 +418,8 @@ static void getLinkStatusHandler(NetworkFrame_t *frame)
RegSHM_CHANNELNcsiChannelStatus_t linkStatus = port->shm_channel->NcsiChannelStatus;
- uint32_t tx_used = APE_TX_TO_NET_BUFFER_RING_FREE_MAX - port->tx_ring->bits.Free;
- uint32_t rx_avail = APE_RX_POOL_FREE_POINTER_FREE_COUNT_MAX - port->rx_ring->bits.FreeCount;
- debug("Link Status [%d] %s, TX %d [%d used], RX %d [%d avail]\n", frame->controlPacket.ChannelID, stat.bits.LinkStatus ? "up" : "down", tx, tx_used, rx,
- rx_avail);
+ debug("Link Status [%d] %s, NCSI TX/RX 0x%08X/0x%08X Net TX/RX 0x%08X/0x%08X\n", frame->controlPacket.ChannelID, stat.bits.LinkStatus ? "up" : "down",
+ tx_ncsi, rx_ncsi, tx_net, rx_net);
if (!stat.bits.LinkStatus)
{
@@ -627,7 +627,7 @@ void handleNCSIFrame(NetworkFrame_t *frame)
if (port)
{
- ++port->shm_channel->NcsiChannelCtrlstatRx.r32;
+ ++port->shm_channel->NcsiChannelNcsiRx.r32;
}
gPackageState.selected = true;
SHM.SegSig.r32 |= (1 << command);
@@ -657,7 +657,7 @@ void handleNCSIFrame(NetworkFrame_t *frame)
{
if (port)
{
- ++port->shm_channel->NcsiChannelCtrlstatRx.r32;
+ ++port->shm_channel->NcsiChannelNcsiRx.r32;
}
SHM.SegSig.r32 |= (1 << command);
handler->fn(frame);
@@ -680,9 +680,10 @@ void resetChannel(int ch)
NetworkPort_t *port = gPackageState.port[ch];
port->shm_channel->NcsiChannelInfo.r32 = 0;
- port->shm_channel->NcsiChannelCtrlstatRx.r32 = 0;
- port->shm_channel->NcsiChannelCtrlstatAllTx.r32 = 0;
- port->shm_channel->NcsiChannelCtrlstatAllRx.r32 = 0;
+ port->shm_channel->NcsiChannelNcsiRx.r32 = 0;
+ port->shm_channel->NcsiChannelNcsiTx.r32 = 0;
+ port->shm_channel->NcsiChannelNetworkRx.r32 = 0;
+ port->shm_channel->NcsiChannelNetworkTx.r32 = 0;
port->shm_channel->NcsiChannelInfo.bits.Ready = false;
uint8_t phy = MII_getPhy(port->device);
@@ -694,6 +695,10 @@ void resetChannel(int ch)
void reloadChannel(int ch, reload_type_t reset_phy)
{
NetworkPort_t *port = gPackageState.port[ch];
+ port->shm_channel->NcsiChannelNcsiRx.r32 = 0;
+ port->shm_channel->NcsiChannelNcsiTx.r32 = 0;
+ port->shm_channel->NcsiChannelNetworkRx.r32 = 0;
+ port->shm_channel->NcsiChannelNetworkTx.r32 = 0;
uint32_t low = port->shm_channel->NcsiChannelMac0Mid.r32 << 16 | port->shm_channel->NcsiChannelMac0Low.r32;
uint16_t high = port->shm_channel->NcsiChannelMac0High.r32;
@@ -739,6 +744,9 @@ void NCSI_TxPacket(uint32_t *packet, uint32_t packet_len)
debug("Transmitting last word %d: 0x%08x\n", packetWords - 1, packet[packetWords - 1]);
#endif
APE_PERI.BmcToNcTxBufferLast.r32 = packet[packetWords - 1];
+
+ NetworkPort_t *port = gPackageState.port[0];
+ ++port->shm_channel->NcsiChannelNcsiTx.r32;
}
void sendNCSILinkStatusResponse(uint8_t InstanceID, uint8_t channelID, uint32_t LinkStatus, uint32_t OEMLinkStatus, uint32_t OtherIndications)
{
@@ -800,7 +808,6 @@ void NCSI_handlePassthrough(void)
if (shm_ch->NcsiChannelInfo.bits.Ready)
{
Network_PassthroughRxPatcket(port);
- ++shm_ch->NcsiChannelCtrlstatAllTx.r32;
}
}
}
diff --git a/libs/Network/rx.c b/libs/Network/rx.c
index 637c3d7..1dfdb69 100644
--- a/libs/Network/rx.c
+++ b/libs/Network/rx.c
@@ -119,6 +119,8 @@ bool Network_RxLePatcket(uint32_t *buffer, uint32_t *bytes, NetworkPort_t *port)
*bytes = rx_bytes;
+ ++port->shm_channel->NcsiChannelNetworkRx.r32;
+
return true;
}
else
@@ -258,8 +260,9 @@ bool Network_PassthroughRxPatcket(NetworkPort_t *port)
rxbuf.bits.Finished = 1;
*((RegAPERxbufoffset_t *)port->rx_offset) = rxbuf;
- // Packet recieved.
- ++port->shm_channel->NcsiChannelCtrlstatAllRx.r32;
+ // Packet recieved (RX via Network and transmitted via NCSI).
+ ++port->shm_channel->NcsiChannelNetworkRx.r32;
+ ++port->shm_channel->NcsiChannelNcsiTx.r32;
return true;
}
diff --git a/libs/Network/tx.c b/libs/Network/tx.c
index 20a33a7..5c89f51 100644
--- a/libs/Network/tx.c
+++ b/libs/Network/tx.c
@@ -286,6 +286,9 @@ static inline bool Network_TX_transmitPacket_internal(uint8_t *packet, uint32_t
*((RegAPETxToNetDoorbell_t *)port->tx_doorbell) = doorbell;
+ // Packet Transmitted.
+ ++port->shm_channel->NcsiChannelNetworkTx.r32;
+
return true;
}
@@ -477,7 +480,7 @@ bool Network_TX_transmitPassthroughPacket(uint32_t length, NetworkPort_t *port)
(void)data;
// Packet transmitted.
- ++port->shm_channel->NcsiChannelCtrlstatAllTx.r32;
+ ++port->shm_channel->NcsiChannelNetworkTx.r32;
return true;
}
OpenPOWER on IntegriCloud