update net code

This commit is contained in:
dborth 2011-02-06 05:38:04 +00:00
parent af4e153893
commit 95ccb7450b

View File

@ -175,7 +175,7 @@ bool DownloadUpdate()
***************************************************************************/ ***************************************************************************/
static lwp_t networkthread = LWP_THREAD_NULL; static lwp_t networkthread = LWP_THREAD_NULL;
static u8 netstack[8192] ATTRIBUTE_ALIGN (32); static u8 netstack[32768] ATTRIBUTE_ALIGN (32);
static void * netcb (void *arg) static void * netcb (void *arg)
{ {
@ -199,6 +199,7 @@ static void * netcb (void *arg)
res = net_get_status(); res = net_get_status();
if(res != -EBUSY) // trying to init net so we can't kill the net if(res != -EBUSY) // trying to init net so we can't kill the net
{ {
usleep(2000);
net_wc24cleanup(); //kill the net net_wc24cleanup(); //kill the net
reset=true; reset=true;
break; break;
@ -213,6 +214,7 @@ static void * netcb (void *arg)
} }
first=false; first=false;
net_deinit(); net_deinit();
usleep(2000);
res = net_init_async(NULL, NULL); res = net_init_async(NULL, NULL);
if(res != 0) if(res != 0)
@ -223,7 +225,7 @@ static void * netcb (void *arg)
} }
res = net_get_status(); res = net_get_status();
wait = 400; // only wait 10 sec wait = 400; // only wait 8 sec
while (res == -EBUSY && wait > 0 && (netHalt != 2)) while (res == -EBUSY && wait > 0 && (netHalt != 2))
{ {
usleep(20000); usleep(20000);
@ -232,7 +234,6 @@ static void * netcb (void *arg)
} }
if(res==0) break; if(res==0) break;
retry--; retry--;
usleep(2000); usleep(2000);
} }
@ -273,12 +274,10 @@ void StartNetworkThread()
***************************************************************************/ ***************************************************************************/
void StopNetworkThread() void StopNetworkThread()
{ {
if(networkthread == LWP_THREAD_NULL) if(networkthread == LWP_THREAD_NULL || !LWP_ThreadIsSuspended(networkthread))
return; return;
netHalt = 2; netHalt = 2;
if(LWP_ThreadIsSuspended(networkthread))
LWP_ResumeThread(networkthread); LWP_ResumeThread(networkthread);
// wait for thread to finish // wait for thread to finish