Hello Roland,

First of all, my best wishes for the new year. I hope that you will be
able to continue supporting the RDMA community in 2010.

I have a question about the SRP initiator available in the Linux
kernel. While consulting the SRP spec (r16a) I noticed that all
multi-byte integer fields of SRP information units must be sent using
the big endian byte order. This holds e.g. for the 64-bit tag fields
present in several information units. So I was expecting these tags to
be declared as __be64. However, in the header file <scsi/srp.h> these
tags are declared as type u64, that is, being stored in CPU order. As
a result, the byte order of the tags sent by the SRP initiator will
depend on the endianness of the CPU the SRP initiator is running on
(e.g. little endian on Intel CPU's, big endian on PowerPC CPU's).
While this doesn't harm -- an SRP target must send back the same tag
it received -- I found this confusing. Is this the intended behavior
of the SRP initiator ?

The different tag fields declared in <scsi/srp.h> are:

$ grep -n '64.*tag;' include/scsi/srp.h
121:    u64     tag;
140:    u64     tag;
152:    u64     tag;
161:    u64     tag;
169:    u64     tag;
180:    u64     tag;
186:    u64     task_tag;
201:    u64     tag;
231:    u64     tag;
251:    u64     tag;
261:    u64     tag;

Bart.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to