Sean Hefty [Sun, 21 Oct 2012 06:43:13 +0000 (23:43 -0700)]
rsocket: Expand definition of target SGE
During connection establishment, rsocket exchanges a
target SGE. The target SGE contains the address, rkey,
and length of the target SGL. The target SGL is the
location where rsocket publishes data buffers at the
remote peer.
The length contained in the target SGE is the number of
entries in the target SGL, which is currently set to 2.
Divide the length field into 3 separate values.
bits 31:16 - reserved
bits 15:8 - use for direct data placement algorithm
bits 7:0 - use for target SGL size
Bits 15 and 7 are used as scaling factors. If set, then
the size specified in the corresponding lower bits is
multiplied by 128.
Backwards compatibility is maintained, since we never use
a value greater than 2 anyway.
Sean Hefty [Sun, 21 Oct 2012 06:43:13 +0000 (23:43 -0700)]
rsocket: Expand definition of target SGE
During connection establishment, rsocket exchanges a
target SGE. The target SGE contains the address, rkey,
and length of the target SGL. The target SGL is the
location where rsocket publishes data buffers at the
remote peer.
The length contained in the target SGE is the number of
entries in the target SGL, which is currently set to 2.
Divide the length field into 3 separate values.
bits 31:16 - reserved
bits 15:8 - use for direct data placement algorithm
bits 7:0 - use for target SGL size
Bits 15 and 7 are used as scaling factors. If set, then
the size specified in the corresponding lower bits is
multiplied by 128.
Backwards compatibility is maintained, since we never use
a value greater than 2 anyway.
Sean Hefty [Sat, 20 Oct 2012 16:19:22 +0000 (09:19 -0700)]
rsocket: Reserve bits in rsocket message
rsockets includes the length of a data transfer in the
immediate data. Currently 29 bits are reserved for the
length, but the maximum transfer is capped at 64K.
For future expansion, limit the length field
to 17 bits and reserve the other 12.
The interpretation of the 17 bits is modified as follows.
The lower 16 bits indicate a length, with the upper bit
indicating a scaling factor. If the upper bit is
0, the scaling factor is 1. The lower 16 bits indicate the
transfer size in bytes. If the upper bit is 1, then a
scaling factor of 64K is applied. The total transfer size is
calculated as (value carried in bits 0-15 + 1) * 64 KB.
This is backwards compatible with the current implementation.
Sean Hefty [Sat, 20 Oct 2012 16:19:22 +0000 (09:19 -0700)]
rsocket: Reserve bits in data transfer message
rsockets includes the length of a data transfer in the
immediate data. Currently 29 bits are reserved for the
length, but the maximum transfer is currently capped
at 64K. For future expansion, limit the length field
to 17 bits and reserve the other 12.
The interpretation of the 17 bits is modified as follows.
The lower 16 bits indicate a length. If the upper bit is
0, then the lower 16 bits indicate a transfer size in bytes.
If the upper bit is 1, the the total transfer size is
calculated as (size carried in bits 0-15 + 1) * 64 KB.
This is backwards compatible with the current implementation,
allows for transfers up to 4 GB, and provides us some
additional bits for future use.
Sean Hefty [Sat, 20 Oct 2012 16:19:22 +0000 (09:19 -0700)]
rsocket: Reserve bits in data transfer message
rsockets includes the length of a data transfer in the
immediate data. Currently 29 bits are reserved for the
length, but the maximum transfer is currently capped
at 64K. For future expansion, limit the length field
to 17 bits and reserve the other 12.
The interpretation of the 17 bits is modified as follows.
The lower 16 bits indicate a length. If the upper bit is
0, then the lower 16 bits indicate a transfer size in bytes.
If the upper bit is 1, the the total transfer size is
calculated as (size carried in bits 0-15 + 1) * 64 KB.
This is backwards compatible with the current implementation,
allows for transfers up to 4 GB, and provides us some
additional bits for future use.
Sean Hefty [Sat, 20 Oct 2012 16:19:22 +0000 (09:19 -0700)]
rsocket: Reserve bits in data transfer message
rsockets includes the length of a data transfer in the
immediate data. Currently 29 bits are reserved for the
length, but the maximum transfer is currently capped
at 64K. For future expansion, limit the length field
to 17 bits and reserve the other 12.
The interpretation of the 17 bits is modified as follows.
The lower 16 bits indicate a length. If the upper bit is
0, then the lower 16 bits indicate a transfer size in bytes.
If the upper bit is 1, the the total transfer size is
calculated as (size carried in bits 0-15 + 1) * 64 KB.
This is backwards compatible with the current implementation,
allows for transfers up to 4 GB, and provides us some
additional bits for future use.