The following Packet Burst NCPs are not documented yet, but will be abailable ASAP:
| v2.x | v3.x | v4.x | v5.x |
Request Format
Offset Content Type (request header) 6 FunctionCode (101) byte 7 LocalConnectionID (random) long (Hi-Lo) 11 LocalMaxPacketSize long (Hi-Lo) 15 LocalTargetSocket (from IPXOpenSocket) word (Hi-Lo) 17 LocalMaxSendSize long (Hi-Lo) 21 LocalMaxRecvSize long (Hi-Lo)
Reply Format
Offset Content Type (reply header) 6 Completion Code (0) byte 7 RemoteTargetID (random) long (Hi-Lo) 11 RemoteMaxPacketSize long (Hi-Lo)
Completion Code
0 0x00 Successful
Remarks
If there is enough memory in a workstation to handle packet bursts the shell will explicitly attempt to make a packet burst connection. This is automatically done by the shell for each connection to a NetWare server. This NCP is the one issued when attempting to make a packet burst connection. The packet size for burst packets is negotiated in the same manner as for non-packet burst packet size.
The client supplies the desired maximum packet size in the LocalMaxPacketSize field. The LocalMaxSendSize, and the LocalMaxRecvSize fields of the NCP packet are also supplied but are not implemented.
The LocalConnectionID field is a randomly generated number used by the shell to reference its connection with a server. The RemoteTargetID in the reply buffer is the identification number used by the server in connection with the shell. These ID numbers are similar in function to the connection numbers used with SPX.
The LocalTargetSocket supplied by the shell identifies the IPX socket being used at the workstation to send and receive burst packets. The server needs to know this in order to properly deliver packet burst information and packets.
VERSION 3.11 NOTE:
With NetWare v3.11 the packet burst NLM must be loaded in order for this feature to be available. Also with v3.11 in negotiating the maximum packet size the local workstation (or client) determines its maximum size by executing the IPX 1Ah function. The local maximum burst size is determined by the following formula:
P * (S + 102)
Where P is the number of packets requested in NET.CFG using the PB BUFFERS = <n> statement, and S is the negotiated packet size. If P is 0 packet burst will not be used. If P is 1 it will be incremented to 2. If P is greater than 10 it will be changed to 10. If the workstation memory is insufficient to accommodate for the requested buffers then P will be adjusted.
Once the packet burst connection is made it is automatically implemented whenever a read or write request involves more than 512 bytes of data. Multiple packets or fragments make up a burst. The following fields make up the burst header information. The burst header (36 bytes) follows the IPX header (30 bytes) which is followed by the fragment data or the missing fragments list.
| Ofst | Lgth | Field Name | Description |
| 0 | 2 | Packet Type | The packet purpose identifier. Packet burst packets are
type 0x7777. The possibilities are:
0x1111 - Allocate Slot Request |
| 2 | 1 | Stream Type | The type of burst. Only the server uses this field. 0x02 is the only valid type. |
| 3 | 1 | System Flags | Bit 0x80 (SYS) is set for a system packet. No burst data accompanies or follows these packets.
Bit 0x10 (EOB) is set for end of burst. It will be set in the last packet of a burst. Bit 0x04 (ABT) is set for an abort request. The SYS bit is set if ABT is set. |
| 4 | 4 | Source Connection ID | This is the workstation's connection identification number. |
| 8 | 4 | Destination Connection ID | This is the server's connection identification number. |
| 12 | 4 | Packet Sequence Number | (hi-lo format) This number is incremented for each packet sent by a node. It represents the sequence number of this packet within a burst. |
| 16 | 4 | Send Delay Time | (hi-lo format) This is the delay time between consecutive packet sends in 100 microsecond increments. |
| 20 | 2 | Burst Sequence # | (hi-lo format) This is the sequence number of each packet within a burst beginning with 0. |
| 22 | 2 | ACK Sequence # | (hi-lo format) This is the burst sequence number expected next. |
| 24 | 4 | Burst Length | (hi-lo format) The total length of the data to be received in the packets of this burst. |
| 28 | 4 | Data Offset | (hi-lo format) The offset into the total burst data at which this packet's data should be located. |
| 32 | 2 | Data Bytes | (hi-lo format) The number of data bytes in this packet. |
| 34 | 2 | Missing Fragment List Count | (hi-lo format) The system bit is set if this field is used. It indicates the number of missing fragments that are being reported in this packet. The list follows as part of this packet if this value is greater than 0. |
A system packet (indicated by the SYS bit set in the burst header) can be used to report fragments of a burst that were missed. The missing fragment list count indicates the number of fragments missed. For each fragment missed the following information will be reported following the burst header.
4 byte value in hi-lo format indicating the offset into the burst where the missing data begins.
2 byte value in hi-lo format that indicating the number of bytes of missing data.
If there is more than one "hole" of missing data in the burst there will be a corresponding number of missing fragments reported in the list.
Prior to sending bursts of data a burst request must be issued. There are only two types of burst requests, one to read and one to write. The request is identified by data following the burst header information. the following table shows the format of that data.
| Ofst | Lgth | Field Name | Description |
| 0 | 4 | Function Number | (lo-hi) 1 = read request; 2 = write request |
| 4 | 4 | File Handle | (Supply this handle as is without reformatting it) |
| 8 | 8 | Reserved | All 0's |
| 16 | 4 | File Offset | The (hi-lo) starting offset in the file. |
| 20 | 4 | Number of Bytes | The (hi-lo) number of bytes to be written or read. |
| (24) | (?) | (Data) | The first packet of data to be written if this is a function 2 write request. |
As read requests are carried out the first packet of each burst involved in that read contains:
A 4 byte result code in lo-hi format.
A 4 byte value indicating the number of bytes read.
The first portion of the data read.
The possible result codes for a read request are:
0 = no error
1 = initial error
2 = I/O error
3 = No Data Read
Each burst of a write request is responded to with a burst packet that contains a 2 byte result code in lo-hi format. One write request is issued but each burst of the request is replied to. The possible result codes for a write are:
0 = write successful
4 = write error