Hi again, I'm attaching the patch for review. It compiles fine for erc32, though I couldn't test the samples (I don't have any sparc boards, and QEMU only has leon3 and sun-4m).
I wrote to Amar about my write access but I didn't hear back from him. Is there a way to check if my account exists using ssh? E.g. for sourceware we have 'ssh sourceware.org alive'. --- c/src/libchip/network/sonic.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/c/src/libchip/network/sonic.c b/c/src/libchip/network/sonic.c index 1cd6cba..6e69b9e 100644 --- a/c/src/libchip/network/sonic.c +++ b/c/src/libchip/network/sonic.c @@ -826,19 +826,17 @@ SONIC_STATIC void sonic_rda_wait( * driver has to move the RRP back *two* entries to * reuse the receive buffer holding the giant packet. */ - for (i = 0 ; i < 2 ; i++) { - if ((*sc->read_register)( rp, SONIC_REG_RRP ) == - (*sc->read_register)( rp, SONIC_REG_RSA )) - (*sc->write_register)( - rp, - SONIC_REG_RRP, - (*sc->read_register)( rp, SONIC_REG_REA ) - ); - (*sc->write_register)( - rp, - SONIC_REG_RRP, - (*sc->read_register)(rp, SONIC_REG_RRP) - sizeof(ReceiveResource_t) - ); + for (i = 0; i < 2; ++i) { + uint32_t rrp = (*sc->read_register)( rp, SONIC_REG_RRP ); + const uint32_t rsa = (*sc->read_register)( rp, SONIC_REG_RSA ); + + if (rrp == rsa) { + const uint32_t rea = (*sc->read_register)( rp, SONIC_REG_REA ); + (*sc->write_register)( rp, SONIC_REG_RRP, rea ); + } + + rrp = (*sc->read_register)(rp, SONIC_REG_RRP); + (*sc->write_register)( rp, SONIC_REG_RRP, rrp - sizeof(ReceiveResource_t) ); } /* -- 2.8.0 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel