From de7ed4812d2ef47e915da79638c6b8bcd28815b4 Mon Sep 17 00:00:00 2001 From: Mariano Alvira Date: Sun, 23 May 2010 13:00:21 -0400 Subject: [PATCH] use PACKET_STATS for additional debugging --- lib/maca.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 46 insertions(+), 6 deletions(-) diff --git a/lib/maca.c b/lib/maca.c index 871e6d4a7..e19ae81f7 100644 --- a/lib/maca.c +++ b/lib/maca.c @@ -150,6 +150,16 @@ void check_maca(void) { if((count = count_packets()) != NUM_PACKETS) { PRINTF("check maca: count_packets %d\n", count); Print_Packets("check_maca"); +#if PACKET_STATS + for(i=0; iseen == 0) { tx++; } + pk->seen++; pk = pk->left; } pk = rx_head; rx = 0; while( pk != 0 ) { - rx++; + if(pk->seen == 0) { rx++; } + pk->seen++; pk = pk->left; } pk = free_head; free = 0; while( pk != 0 ) { - free++; + if(pk->seen == 0) { free++; } + pk->seen++; pk = pk->left; } total = free + rx + tx; - if(dma_rx && (dma_rx != rx_head)) { total++; } - if(dma_tx && (dma_tx != tx_head)) { total++; } + if(dma_rx && (dma_rx->seen == 0)) { dma_rx->seen++; total++; } + if(dma_tx && (dma_tx->seen == 0)) { dma_tx->seen++; total++; } +#endif /* PACKET_STATS */ return total; } @@ -270,6 +292,13 @@ void free_packet(volatile packet_t *p) { p->length = 0; p->offset = 0; p->left = free_head; p->right = 0; +#if PACKET_STATS + p->seen = 0; + p->post_tx = 0; + p->get_free = 0; + p->rxd = 0; +#endif + free_head = p; BOUND_CHECK(free_head); @@ -295,6 +324,10 @@ volatile packet_t* get_free_packet(void) { BOUND_CHECK(free_head); +#if PACKET_STATS + p->get_free++; +#endif + // print_packets("get_free_packet"); irq_restore(); if(bit_is_set(*NIPEND, INT_NUM_MACA)) { *INTFRC = (1 << INT_NUM_MACA); } @@ -351,6 +384,10 @@ volatile packet_t* rx_packet(void) { rx_head->right = 0; } +#if PACKET_STATS + p->rxd++; +#endif + // print_packets("rx_packet"); irq_restore(); if(bit_is_set(*NIPEND, INT_NUM_MACA)) { *INTFRC = (1 << INT_NUM_MACA); } @@ -364,6 +401,9 @@ void post_tx(void) { disable_irq(MACA); last_post = TX_POST; dma_tx = tx_head; +#if PACKET_STATS + dma_tx->post_tx++; +#endif *MACA_TXLEN = (uint32_t)((dma_tx->length) + 2); *MACA_DMATX = (uint32_t)&(dma_tx->data[ 0 + dma_tx->offset]); if(dma_rx == 0) {