OpenCores
URL https://opencores.org/ocsvn/plasma/plasma/trunk

Subversion Repositories plasma

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 430 to Rev 431
    Reverse comparison

Rev 430 → Rev 431

/plasma/trunk/kernel/ethernet.c
32,6 → 32,7
static OS_Semaphore_t *SemEthernet, *SemEthTransmit;
static int gIndex; //byte index into 0x13ff0000 receive buffer
static int gCrcChecked;
static volatile int ethTxBusy;
 
 
//Read received data from 0x13ff0000. Data starts with 0x5d+MACaddress.
47,6 → 48,9
int byteCrc;
volatile unsigned char *buf = (unsigned char*)ETHERNET_RECEIVE;
int packetExpected;
while(ethTxBusy)
OS_ThreadSleep(1);
 
//Find the start of a frame
packetExpected = MemoryRead(IRQ_STATUS) & IRQ_ETHERNET_RECEIVE;
154,6 → 158,7
volatile unsigned char *buf = (unsigned char*)ETHERNET_TRANSMIT;
 
OS_SemaphorePend(SemEthTransmit, OS_WAIT_FOREVER);
ethTxBusy = 1;
 
//Wait for previous transfer to complete
for(i = 0; i < 10000; ++i)
194,6 → 199,14
MemoryWrite(ETHERNET_REG, length);
Led(2, 0);
 
//Wait for previous transfer to complete
for(i = 0; i < 10000; ++i)
{
if(MemoryRead(IRQ_STATUS) & IRQ_ETHERNET_TRANSMIT)
break;
}
ethTxBusy = 0;
 
OS_SemaphorePost(SemEthTransmit);
}
 
389,3 → 402,4
//Start receive DMA
MemoryWrite(GPIO0_SET, ETHERNET_ENABLE);
}
 
/plasma/trunk/kernel/tcpip.c
955,7 → 955,8
}
 
//Check if FIN flag set
if((packet[TCP_FLAGS] & TCP_FLAGS_FIN) && socket->ack >= seq)
if((packet[TCP_FLAGS] & TCP_FLAGS_FIN) && socket->ack >= seq &&
socket->state < IP_CLOSED)
{
notify = 1;
socket->timeout = SOCKET_TIMEOUT;
969,7 → 970,7
++socket->ack;
TCPSendPacket(socket, frameOut, TCP_DATA);
if(socket->state == IP_FIN_SERVER)
socket->timeout = SOCKET_TIMEOUT;
IPClose2(socket);
else if(socket->state == IP_TCP)
socket->state = IP_FIN_CLIENT;
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.