Ethernet TCP/IP Source Code Driver Project
Section 11. Revision History

11. Revision History

a) Changes To The TCP/IP Driver Files

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.

b) Changes To The Sample Project Files

V1.00

First released version.

V1.01

CrossWorks ARM compiler with NXP LPC2000 series 32bit ARM microcontroller support added.

V1.02

No changes

V1.03

No changes

c) Special Note Regarding NIC Interfacing

Please see the:

‘Signal Noise Issues With MMC & SD Memory Cards (& Clocked Devices In General)’

page in the resources area of our web site for details of a common signal noise problem experienced when using clocked devices such as network interface controllers.

Many of the PIC microcontrollers have silicon bug issues that are detailed in the Microchip errata sheets. If you are experiencing problems with a PIC microcontroller and its nic access check the errata sheet for the device you are using.