V1.00
First released version.
V1.01
ARP handling minor error fix
In eth-arp.c file, arp_process_rx function
All of the initial if(! checks should return ‘1’. Previously 2 off returned ‘0’.
In eth-main.c, tcp_ip_process_stack function.
Locate case SM_ETH_STACK_ARP:
And add this before the break; statement:
nic_rx_dump_packet(); //Ensure packet has been dumped
NetBIOS handling bad initialisation fix
In eth-netbios.c, process_netbios_nameservice function
Change the following line:
static BYTE our_udp_socket;
to this:
static BYTE our_udp_socket = UDP_INVALID_SOCKET;
All sizeof() references to struct definitions changed to use a defined length constant. All array read and writes from and to struct’s changed to individual read and writes to the struct members. This is to deal with 32bit compilers which may add pad bytes within a struct (for instance sizeof(MAC_ADDR_LENGTH) will often be 8 not 6 due to the addition of pad bytes).
DHCP timeouts (DHCP_DISCOVER_TIMEOUT and DHCP_REQUEST_TIMEOUT) changed from 4 seconds to 10 seconds to deal with routers / DHCP servers that may be too busy to respond immediately.
CrossWorks ARM compiler with NXP LPC2000 series 32bit ARM microcontroller support added.
V1.02
Added HTTP client functionality.
Added PIC32 built in Ethernet peripheral support.
At the end of the six email_return_smtp_ functions in eth-smtp.c and three email_return_pop3_ functions in eth-pop3.c changed the end of the do loop from:
while (p_source_string++ != 0x00);
to
while (*p_source_string++ != 0x00);
Correction for NXP LPC2000 nic.c driver file. The interrupt line from the KSZ8001 phy used in the sample project would not be cleared. Corrected in nic_check_for_rx() by replacing the following line:
nic_write_phy_register(NIC_PHY_IRQ_CTRL_STATUS_REG, (NIC_PHY_IRQ_CTRL_STATUS_VALUE | 0x00ff));
with
data = nic_read_phy_register (NIC_PHY_IRQ_CTRL_STATUS_REG);
In process_http() added check for a client disconnecting a socket part way through downloading a file (sometimes a browser may close a socket to stop downloading any further data).
Change this:
//----- PROCESS EACH SOCKET -----
switch (http_socket[socket_number].sm_http_state)
To this:
//----- PROCESS EACH SOCKET -----
if(!tcp_is_socket_connected(http_socket[socket_number].tcp_socket_id)) //If a socket has disconnected during a transfer reset its state
http_socket[socket_number].sm_http_state = HTTP_WAITING_FOR_CONNECTION;
switch (http_socket[socket_number].sm_http_state)
Minor improvements to the DNS functions.
Fixed TCP issue whereby if server sends FIN ACK with data the TCP stack was not dealing with the FIN. It now closes the connection as it should.
Added check for LPC2000 driver KSZ8001 PHY link is down when link status changes to avoid long delay before checks timeout when cable is disconnected.
Changed all .val to .Val to provide easier compatibility with Microchip C32 compiler which now clashes with .val
http_transmit_next_response_packet() function updated with new file_offfset variable to fix bug when using HTTP_USING_BINARY_FILES or HTTP_USING_FILING_SYSTEM defines.
V1.03
Minor correction of “.val” usage to “.Val”
V1.04
In eth-http.c corrected issue where http_setup_response would be called twice by modifying this:
if (http_post_content_bytes_remaining)
{
//------------------------------------------------------------------------------------------------
//----- THERE IS MORE CONTENT TO BE RECEIVED FOR THIS POST REQUEST IN SUBSEQUENT TCP PACKETS -----
//------------------------------------------------------------------------------------------------
//Exit now and flag new socket state as still receiving a post request (this will also block other post requests until its complete)
http_socket[socket_number].sm_http_state = HTTP_PROCESSING_POST;
tcp_dump_rx_packet();
return;
}
}
#endif
to this:
if (http_post_content_bytes_remaining)
{
//------------------------------------------------------------------------------------------------
//----- THERE IS MORE CONTENT TO BE RECEIVED FOR THIS POST REQUEST IN SUBSEQUENT TCP PACKETS -----
//------------------------------------------------------------------------------------------------
//Exit now and flag new socket state as still receiving a post request (this will also block other post requests until its complete)
http_socket[socket_number].sm_http_state = HTTP_PROCESSING_POST;
tcp_dump_rx_packet();
}
return;
}
#endif
Fixed tcp client issue in eth-http-client.c
Customer provided driver for the Stellaris LM3S6965 NIC added.


