pues hombre .... hay varias cosas por depurar, en primer lugar me gustaría saber que se supone que hace la linea 6, o que piensas tu que hace esa linea...
static int if_up_with(int index) {
int timeout_count = 10;
int state;
int ret;
(void)index; // <--- esto que es
y en segundo lugar tu bucle para intentar obtener ip durante 10 vueltas no funciona ... estás llamando a la funcion con index=0, y en tu if que cuenta las vueltas tienes esto
if (index && timeout_count < 0) {
return (0);
}
mientras index sea 0 nunca entrarás ahí ... y darás muchas mas vueltas de las que esperas ... lo demás mas o menos tiene su logica
bueno ... tendrás que encontrar la documentacion de esta funcion
sys_timer_usleep(500 * 1000);
normalmente los sleep van en milisegundos, y si esta función sigue la lógica estarías esperando 500 segundos ... creo recordar que los sleeps en la ps2 eran miles de miles .. así que casi seguro que este tb sea así y eso corresponde a medio segundo .. pero seria bueno encontrar la documentación de eso