linklayerprotocols/pppnif/group/RELEASE.TXT
author hgs
Thu, 08 Jul 2010 15:21:49 +0530
changeset 39 45fd446095e6
parent 0 af10295192d8
permissions -rw-r--r--
201027_01

EPOC PPP Release Notes

22 Apr 2005 (victorm)
==================
EIA-232 Control line change detection.
Since the serial-specific functionality was moved into the BCA layer, PPP 
makes an Ioctl call into the BCA to enable "BCA-specific" monitoring.
The C32Bca, turns on monitoring of DCD or DTR,
depending on the serial port role. 



14 Mar 2005 (JoeX)
==================
Support of layering PPP using BCA interface instead of MComm is implemented. 
Three more classes:CBcaControl,CBcaWriter and CBcaReader are added
for PPP link layer up/shutdown,and packet write and read respectively.

22 Sept 2004 (victorm)
===================
Support for fully RFC1661 compliant PPP Termination Phase behavior.
A side effect is a possible increase in PPP shutdown times.
This behavior is enabled by default, i.e. when there is no .ini file present.
To maintain backward compatibility, this behavior is disabled when a ppp.ini 
or pppd.ini file is present with 
PPPEnableTerminateRequest= 0 and PPPEnabledTerminateAck= 0 entries.
 


24 Mar 2004 (danfa)
===================
The default ppp.ini file is no longer being exported.  This will provide a
slight reduction in startup time since the file no longer needs to be read and
parsed.  If settings need to be changed, the ppp.ini and pppd.ini files
supplied with the source can be used as templates as they contain all settable
options.

07 Jan 2004 (danfa)
===================
PPP Server Mode

Support for PPP running as a server has been improved.  The CommDB entry
Service\\IfServerMode determines whether server mode is enabled. When enabled,
PPP does not exit if it times out, but stays alive and silent, waiting for
futher connections.  In server mode, the file pppd.ini is read instead of
ppp.ini to configure PPP.


17 Nov 2003 (danfa)
===================
Optimizations on PPP HDLC and compressors for GT0161.

An analysis of the code revealed that there were many O(n) loops over the packet
data being performed. The packet data loops in the existing code for some of the
common data paths were as shown in the following table. The notation used is:

  "description of loop"(input data type):output data type if different

Processing loops are separated with => .  Code in a compressor/decompressor DLL
is surrounded by {curly brackets}.  Conditional loops are surrounded by
[square brackets]. CRC is Cyclic Redundancy Check calculation and LCB is
Longitudinal Check Byte calculation.

Uncompressed transmit (3 loops):

    "Log IP data size"(MBuf) => CRC(MBuf) => "HDLC encode"(MBuf):TDes

Predictor compression transmit (6 loops):

    { "Copy buffer"(MBuf):TDes => Compress(TDes) => CRC(TDes) => "Copy buffer"(TDes):MBuf }
 => CRC(MBuf) => "HDLC encode"(MBuf):TDes

Predictor compression transmit, data block expanded (6 loops):
    { "Copy buffer"(MBuf):TDes => Compress(TDes) => CRC(TDes) => "Copy buffer"(TDes):MBuf }
  => CRC(MBuf) => "HDLC encode"(MBuf):TDes

STAC mode 1 compression transmit (6 loops):
    { "Copy buffer"(MBuf) => CRC(TDes) => Compress(TDes) => "Copy buffer"(TDes):MBuf }
  => CRC(MBuf) => "HDLC encode"(MBuf):TDes

STAC mode 1 compression transmit, data block expanded (7 loops):
    { "Copy buffer"(MBuf) => CRC(TDes) => Compress(TDes) => "Copy buffer"(TDes) => "Copy buffer"(TDes):MBuf }
  => CRC(MBuf) => "HDLC encode"(MBuf):TDes

Uncompressed receive (3 loops):
   "HDLC decode"(TDes):MBuf => CRC(MBuf) => "Log IP data size"(MBuf)

Predictor decompression receive (7 loops):
   "HDLC decode"(TDes):MBuf => CRC(MBuf)
   => { "Clear buffer"(TDes) => "Copy buffer"(MBuf):TDes => Decompress(TDes) => CRC(TDes) => "Copy Buffer"(TDes):MBuf }

STAC mode 1 decompression receive (7 loops):
   "HDLC decode"(TDes):MBuf => CRC(MBuf)
 => { "Clear buffer"(TDes) => "Copy buffer"(MBuf):TDes => Decompress(TDes) => "Copy buffer"(TDes):MBuf => LCB(TDes) }

An attempt was made to reduce the number of processing loops to decrease latency
and reduce processing overhead. Since loops over MBufs have more overhead than
loops over TDes, the latter was preferred.  The compressors contained several
instances of clearing buffers that did not need to be cleared, so they were
removed.  Each uncompressed data block was needlessly copied in order to log
the amount of IP data contained within; the copy was removed, then the logging
method was changed since it constituted a protocol layering violation as
implemented.  On the transmit side, the HDLC encoding and CRC processes were
combined into a single loop.

The compressors and decompressors require data to be in a descriptor, so each
one begins by copying data out of an MBufChain. The copy routines were
optimized for short packets by creating a TPtr pointing directly into the first
MBuf into the chain instead of copying the data into a TBuf.  Several loops
were examined in detail to tighten the code generated by the compiler.

It should be noted that compression and decompression should not be performed
at the PPP HDLC layer. That functionality should be moved up a level to the
LCP layer as compression should be available even if PPP is to be used with
a framing method other than HDLC.

These changes resulted in the following table.

Uncompressed transmit (1 loop):

    "CRC+HDLC encode"(MBuf):TDes

Predictor compression transmit (5 loops):

    { "Copy buffer"(MBuf):TDes => Compress(TDes) => CRC(TDes) => "Copy buffer"(TDes):MBuf }
 => "CRC+HDLC encode"(MBuf):TDes

Predictor compression transmit, data block expanded (5 loops):
    { "Copy buffer"(MBuf):TDes => Compress(TDes) => CRC(TDes) => "Copy buffer"(TDes):MBuf }
  => "CRC+HDLC encode"(MBuf):TDes

STAC mode 1 compression transmit (5 loops):
    { "Copy buffer"(MBuf) => CRC(TDes) => Compress(TDes)  => "Copy buffer"(TDes):MBuf }
  => "CRC+HDLC encode"(MBuf):TDes

STAC mode 1 compression transmit, data block expanded (6 loops):
    { "Copy buffer"(MBuf) => CRC(TDes) => Compress(TDes) => "Copy buffer"(TDes) => "Copy buffer"(TDes):MBuf }
  => "CRC+HDLC encode"(MBuf):TDes

Uncompressed receive (1 loop):
   "HDLC decode+CRC"(TDes):MBuf

Predictor decompression receive (4/5 loops):
   "HDLC decode+CRC"(TDes):MBuf
   => { [ "Copy buffer"(MBuf):TDes ] => Decompress(TDes) => CRC(TDes) => "Copy Buffer"(TDes):MBuf }

STAC mode 1 decompression receive (4/5 loops):
   "HDLC decode+CRC"(TDes):MBuf
 => { [ "Copy buffer"(MBuf):TDes ] => Decompress(TDes) => "Copy buffer"(TDes):MBuf => LCB(TDes) }

04 Nov 2003 (danfa)
===================
VJ compression/decompression for GT0161

The VJ compressor/decompressor was code reviewed and many bugs were fixed.
The IP checksum routine was optimized for speed.

30. Nov 2001 (alfredh)
======================

Defect fixes:

MAI-54XK4Z "PPP - ncpip.cpp. Function is incorrect"

Improved the code in CPppNcpIp::PresetAddr and increased readability. 

Codesize ARM4/UREL for PPP.NIF:

    before: 72.308 bytes
    after:  72.236 bytes


Release 
=======
Made by AnnW, 5th July 2000

1.	Stubbed new API functions from NifMan for GPRS.  Yet to be fully implemented.

Release
=======
Made by AnnW, 18th April 2000

1.	Changed all header files to be exported into \epoc32\include\networking as they
	are all private header files, which need only be visible to other comms components.

2.	Changed #include's to specify private headers in \epoc32\inlcude\networking and
	\epoc32\include\comms-infras where necessary.

Release 018
===========
Made by AnnW, 19th November 1999

1.	Made changes accompanying those in NifMan which means that reads from the database 
	are now TUint32 values.

Release 017
===========
Made by AnnW, 29th September 1999

1.	Merged in changes from ER5 TCPIP maintenance releases 522-524.
2.	Merged in changes from ER5u PPP releases 001-006 and TCPIP 550-558.


Release 016
===========
Made by BobC

Bob Cripps
1.	Changed constant in ppplrd.cpp to KErrIfLRDBadLine

Paul Riley
2.	Modified Vjdecomp.cpp to fix a bug found by Phillipe Gabriel when 
	using sendsink.exe

Release 015
===========

1.	New ini file mods :-

	pppfsm.cpp
	ppphdlc.cpp
	ppplcp.h
	pppdef.h

2.	Fixed THUMB bug in VJCOMP file :- vjcomp.cpp

Release 014
===========
Made by AnnW, 1st September 1999

1.	Fixed a couple of bugs in logging code.


Release 013
===========
Made by AnnW, 31st August 1999

1.	Modified DES and VJCOMP MMP files to specify TARGETPATH to ensure 
	these DLLs are placed in \System\Libs.
2.	Removed logging from RELEASE builds.

Release 012
===========
Made by AnnW, 19th August 1999

1.	Fixed ARM4 errors as PPP 003 on ER5u share.  Also fixed other ARM4 
	warnings.

Release 011
===========
Made by AnnW, 12th August 1999

1.	Added VJCOMP from TCPIP 560.

2.	Converted logging code to use FLOGGER.

3.	Updated to use new version of COMMDB.


Release 001
===========
Made by AnnW, 22nd April 1999

1.	Split PPP and DES from TCPIP 521.

2.	Removed all narrow-specific stuff from MNT.CMD and EBLD.BAT.

3.	Removed narrow def files and database from source directories.