PIC32 TCP/IP BSD Stack Revision (Beta 1)

Author
PIC32 Support
Junior Member
  • Total Posts : 81
  • Reward points : 0
  • Status: offline
2008/10/24 09:49:12 (permalink)
0

PIC32 TCP/IP BSD Stack Revision (Beta 1)

This contains updates to the PIC32 TCP/IP BSD that is currently released.  The attached library is provided as a BETA release.   This library is intended for evaluation use only and not for use in production intent designs.  This software is not supported by Microchip in BETA form. 
 
Modifications:
eTCP.def
 
Added MGR_MAX_TX_BLOCKS to define allocation ceiling.  If this many buffers are already allocated, any new transmit buffer allocation request is denied.  This allows some buffers to be always available for new receive packets which in turn allows the TCP layer to avoid acknowledgment timeout situations.  This helps in keeping the stack responsive during high network traffic.
 
Added IP_DUP_CHECK_ENABLE and IP_DUP_CHECK_TICKS defines.  These allow stack to do a duplicate IP address check on the network.  IP_DUP_CHECK_TICKS defines how often the stack checks for duplicate IP address.  In case a duplicate IP address is found, the stack calls APP_DuplicateIPError() to notify the application of the error condition.  The global variable gDuplicateIPFound is set to TRUE and all transmission is disabled.
 
netpkt.h
 
Added QueInUse field in packet header to make sure buffers are not released if in use by any queue in the stack.
 
pkt_queue.h
 
Added QueInUse mask bit definitions to make sure buffers are not released if in use by any queue in the stack.
 
Block_mgr.c
 
Added BlockAllocated counter to keep some blocks open for receive packets based on MGR_MAX_TX_BLOCKS.  This help to avoid situation when TCP ack packet is received but no room to process it.
 
eicmp.c
 
Changed message size variable in ICMP_Send from BYTE to WORD.  This allows Ping to work properly with bigger payload than 256 bytes.
 
eip.c
 
Marked packets as In-use by Queue when packet added to any queue and vice versa.
Duplicate IP check ARP initiation
 
ENC28J60.c
 
Marked packets as In-use by Queue when packet added to any queue and vice versa.
 
Reset chip transmit logic if a TX Error has previously occurred. This is a silicon errata workaround
 
etcp.c
 
Fixed Acknowledge queue pointer management. The wrong pointer manipulation was causing orphaned packets.
 
Marked packets as In-use by Queue when packet added to any queue and vice versa.
 
Fixed PurgeQueues function to not de-allocate packet if in use by other components
 
On TCP Ack Receive packet, the AcknowledgeList is properly purged.  Before, it was purged without any check for packet in use.
 
In TCPTimer, do not process sockets that are already closed.
 
If TCP Timer expires on a socket, the AcknowledgeList is carefully purged, making sure packets are not de-allocated that are still in the transmit queue.
 
Handle Alive message and generate proper response to the sender
 
If a message is received with no destination matching socket, a RST message is sent to the sender.  This allows the sender to error out right away instead of a long timeout.
 
eudp.c
 
Marked packets as In-use by Queue when packet added to any queue and vice versa.
 
pkt_queue.c
 
Fixed bug in Que_IsEmpty function. 
 
Socket.c
 
Marked packets as In-use by Queue when packet added to any queue and vice versa.
Check for port in use when a bind api is called.
 
stackmgr.c
 
Packet Rx Count is checked against STACK_MGR_RX_PKT_CNT before a packet is removed from the NIC.

In this release, Beta 1, documentation on changes is limited to the source code only.  The original app note is an available reference. 
#1

0 Replies Related Threads

    Jump to:
    © 2017 APG vNext Commercial Version 4.5