SUMMARY
Page 6-32 of the "IBM LAN Technical Reference" (dated November 1988)
states that you should set the reserved bits in a DATA_ONLY_LAST frame
to 0 (zero), and set bit 1 to 1 (one), if it is a NO_ACK send. In
Microsoft NetBIOS version 2.0, bits 2 and 3 are sometimes set, and
when they are, a regular send is treated much like SEND_NO_ACK.
To support piggyback acknowledge protocol, two additional bits (bits 2
and 3) have been defined (since the publication of the "IBM LAN
Technical Reference") in the DATA1 field of the DATA_ONLY_LAST frame.
This is part of NetBIOS Performance Enhancement done for OS/2 EE
NetBIOS drivers. The new bits being defined are referenced as bits a
and b as shown below:
OFFSET FIELD NAME LENGTH TYPE Description
------ ---------- ------ ----------------
5 DATA1 1 DB B'rrrrabxr'
where a = Acknowledge_Included
b = Ack_with_data_allowed
x = NO_ACK indicator (old definition, no change)
r = Reserved (must be zero)
B = Binary data follows; for example, B'01'
The Acknowledge_Included bit will be set to ON (1) when NetBIOS sends
an acknowledgment with the DATA_ONLY_LAST frame. It will only be set
to ON if NetBIOS has previously received a DATA_ONLY_LAST frame that
has the ACK_WITH_DATA_ALLOWED bit set to ON. The Acknowledge_Included
bit indicates that an acknowledgment to a previous frame is
"piggybacked" with this data frame, and that the correlator value has
been placed into the xmit_correlator field.
The Ack_with_data_allowed bit indicates that the "piggyback
acknowledge" protocol is supported, and that the partner NetBIOS can,
at its option, use it.
In addition, the description of the xmit_correlator field in the
DATA_ONLY_LAST frame must be changed as follows: X'nnnn', where "nnnn"
is zero when no acknowledgment is sent with data, or "nnnn" equals the
previously received response correlator of a DATA_ONLY_LAST frame in
which the Ack_with_data_allowed indicator was set to ON. When an
acknowledgment is sent, the Acknowledge_Included bit must be set to
ON.