diff options
author | Evan Lojewski <github@meklort.com> | 2020-08-04 21:47:52 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-04 21:47:52 -0600 |
commit | f062f1a81abe4ec11ceddb3c14d63ac341f603cc (patch) | |
tree | 3dd91ab11c0a89ce70655c58f76389bf9d975c26 /libs | |
parent | c691b22d96160128f6c2f80eb5937e1f59dba6f3 (diff) | |
download | bcm5719-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.c | 31 | ||||
-rw-r--r-- | libs/Network/rx.c | 7 | ||||
-rw-r--r-- | libs/Network/tx.c | 5 |
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; } |