Well on the surface if you are doing a client side AoE driver you would look at the ATA spec and decide that all the N/A values can be just set to zero. Which is what I did but immediately got a bad arguments error from the blade server. When you look at the blade server code it does this test for "1" for no apparent reason.
My initial suspicion was that the blade code was wanting to reuse the packet that it received the request on and as such wanted to make sure it was big enough by having the client set the sector count to 1 and further adding some noop data to the request packet. But looking at the blade code the way it carves up packet buffers it didn't need to do that so it is unclear why it is even in there.
From my perspective, it is unneeded and actually complicates things because the AoE spec implies that you are just supposed to map the ATA commands and registers on to the request without doing any special modifications... which isn't true in this particular case. I've not seen what a normal SATA request for ID would look like from a HD perspective but I suspect they don't even set those register values and may even potentially just set them all to zero.
I popped the question on this discussion board to see if I'm missing something.