From: till straumann <till.straum...@alumni.tu-berlin.de> Update #4344 --- bsps/powerpc/beatnik/net/if_mve/mv643xx_eth.c | 59 +++++++++++++++---- .../beatnik/net/if_mve/mv643xx_eth_bsdnet.c | 1 - 2 files changed, 47 insertions(+), 13 deletions(-)
diff --git a/bsps/powerpc/beatnik/net/if_mve/mv643xx_eth.c b/bsps/powerpc/beatnik/net/if_mve/mv643xx_eth.c index 26fe7db9e6..9d23d22898 100644 --- a/bsps/powerpc/beatnik/net/if_mve/mv643xx_eth.c +++ b/bsps/powerpc/beatnik/net/if_mve/mv643xx_eth.c @@ -108,16 +108,10 @@ /* Compile-time debugging features */ /* Enable paranoia assertions and checks; reduce # of descriptors to minimum for stressing */ -#undef MVETH_TESTING +#define MVETH_TESTING /* Enable debugging messages and some support routines (dump rings etc.) */ -#undef MVETH_DEBUG - -/* Hack for driver development; rtems bsdnet doesn't implement detaching an interface :-( - * but this hack allows us to unload/reload the driver module which makes development - * a lot less painful. - */ -#undef MVETH_DETACH_HACK +#define MVETH_DEBUG /* Ring sizes */ @@ -790,6 +784,15 @@ static const char *mibfmt[] = { /* forward decls + implementation for IRQ API funcs */ +STATIC int +mveth_init_rx_desc_ring(struct mveth_private *mp); + +STATIC int +mveth_init_tx_desc_ring(struct mveth_private *mp); + +int +BSP_mve_dring_nonsync(struct mveth_private *mp); + static void mveth_isr(rtems_irq_hdl_param unit); static void noop(const rtems_irq_connect_data *unused) {} static int noop1(const rtems_irq_connect_data *unused) { return 0; } @@ -1747,7 +1750,7 @@ MveEthBufIter head = *it; #ifdef MVETH_TESTING assert( !h->buf_ptr ); - assert( !h->mb ); + assert( !h->u_buf ); #endif /* Don't use the first descriptor yet because BSP_mve_swipe_tx() @@ -1778,7 +1781,7 @@ MveEthBufIter head = *it; */ for ( l = NEXT_TXD(h); l!=d; l=NEXT_TXD(l) ) { #ifdef MVETH_TESTING - assert( l->mb == 0 ); + assert( l->u_buf == 0 ); #endif l->buf_ptr = 0; l->cmd_sts = 0; @@ -1870,7 +1873,7 @@ int frst_len; rval = 0; #ifdef MVETH_TESTING - assert(header || data); + assert(head_p || data_p); #endif needed = head_p && data_p ? 2 : 1; @@ -1887,7 +1890,7 @@ int frst_len; #ifdef MVETH_TESTING assert( !h->buf_ptr ); - assert( !h->mb ); + assert( !h->u_buf ); #endif /* find the 'first' user buffer */ @@ -2359,3 +2362,35 @@ uint32_t v; } fprintf(f, "\n"); } + +#ifdef MVETH_DEBUG +/* Display/dump descriptor rings */ + +/* These low-level routines need to be synchronized with + * any Tx/Rx threads! + */ +int +BSP_mve_dring_nonsync(struct mveth_private *mp) +{ +int i; +if (1) { +MvEthRxDesc pr; +printf("RX:\n"); + + for (i=0, pr=mp->rx_ring; i<mp->rbuf_count; i++, pr++) { + printf("cnt: 0x%04x, size: 0x%04x, stat: 0x%08x, next: 0x%08x, buf: 0x%08x\n", + pr->byte_cnt, pr->buf_size, pr->cmd_sts, (uint32_t)pr->next_desc_ptr, pr->buf_ptr); + } +} +if (1) { +MvEthTxDesc pt; +printf("TX:\n"); + for (i=0, pt=mp->tx_ring; i<mp->xbuf_count; i++, pt++) { + printf("cnt: 0x%04x, stat: 0x%08x, next: 0x%08x, buf: 0x%08x, mb: 0x%08x\n", + pt->byte_cnt, pt->cmd_sts, (uint32_t)pt->next_desc_ptr, pt->buf_ptr, + (uint32_t)pt->u_buf); + } +} + return 0; +} +#endif diff --git a/bsps/powerpc/beatnik/net/if_mve/mv643xx_eth_bsdnet.c b/bsps/powerpc/beatnik/net/if_mve/mv643xx_eth_bsdnet.c index 2e841c5e8b..3f85e2c78a 100644 --- a/bsps/powerpc/beatnik/net/if_mve/mv643xx_eth_bsdnet.c +++ b/bsps/powerpc/beatnik/net/if_mve/mv643xx_eth_bsdnet.c @@ -135,7 +135,6 @@ /* Enable Hardware Snooping; if this is disabled (undefined), * cache coherency is maintained by software. */ -#undef ENABLE_HW_SNOOPING /* Compile-time debugging features */ -- 2.26.2 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel