fixed: select was blocking (stupid error), select is now performed less often to incerase speed

This commit is contained in:
mightymax 2007-01-24 18:12:05 +00:00
parent ccd404af6b
commit 68f8400636
2 changed files with 16 additions and 10 deletions

View File

@ -580,18 +580,23 @@ void WIFI_usTrigger(wifimac_t *wifi)
{ {
WIFI_triggerIRQ(wifi,WIFI_IRQ_TIMEBEACON) ; WIFI_triggerIRQ(wifi,WIFI_IRQ_TIMEBEACON) ;
} }
/* check if data arrived in the meantime */ /* receive check, given a 2 mbit connection, 2 bits per usec can be transfered. /*
rcvSize = WIFI_Host_RecvData(wifi->udpSocket,dataBuffer,0x2000) ; /* for a packet of 32 Bytes, at least 128 usec passed, we will use the 32 byte accuracy to reduce load */
if (rcvSize) if (!(wifi->RXCheckCounter++ & 0x7F))
{ {
u16 i ; /* check if data arrived in the meantime */
/* process data, put it into mac memory */ rcvSize = WIFI_Host_RecvData(wifi->udpSocket,dataBuffer,0x2000) ;
WIFI_triggerIRQ(wifi,WIFI_IRQ_RECVSTART) ; if (rcvSize)
for (i=0;i<(rcvSize+1) << 1;i++)
{ {
WIFI_RXPutWord(wifi,((u16 *)dataBuffer)[i]) ; u16 i ;
/* process data, put it into mac memory */
WIFI_triggerIRQ(wifi,WIFI_IRQ_RECVSTART) ;
for (i=0;i<(rcvSize+1) << 1;i++)
{
WIFI_RXPutWord(wifi,((u16 *)dataBuffer)[i]) ;
}
WIFI_triggerIRQ(wifi,WIFI_IRQ_RECVCOMPLETE) ;
} }
WIFI_triggerIRQ(wifi,WIFI_IRQ_RECVCOMPLETE) ;
} }
} }
@ -653,7 +658,7 @@ u16 WIFI_Host_RecvData(socket_t sock, u8 *data, u16 maxLength)
FD_ZERO(&dataCheck) ; FD_ZERO(&dataCheck) ;
FD_SET(sock,&dataCheck) ; FD_SET(sock,&dataCheck) ;
tv.tv_sec = 0 ; tv.tv_sec = 0 ;
tv.tv_usec = 1 ; tv.tv_usec = 0 ;
/* check if there is data, without blocking */ /* check if there is data, without blocking */
if (select(1,&dataCheck,0,0,&tv)) if (select(1,&dataCheck,0,0,&tv))
{ {

View File

@ -375,6 +375,7 @@ typedef struct
/* receiving */ /* receiving */
u16 RXCnt ; u16 RXCnt ;
u16 RXCheckCounter ;
/* addressing/handshaking */ /* addressing/handshaking */
union union