It sounds like you have a host issue.
Your host is asking for 64 bytes and getting them, then its not asking for any more, but you're expecting it to ask for more. So the question is why is the host not asking for data. You also say that the host successfully completes this transfer with a different device, which makes the situation more puzzling.
Do you know what the host driver is doing? That is, is it your driver, or someone else's?
Are you sure the host is expecting 900 bytes? If it were, I'd expect that to be made as one 900 byte transfer, in which case when it received a max packet sized packet, the host would then send more INs without event pausing.
So, is that 64 byte packet max packet sized? is this a full speed device? I asked that earlier but got no response, if it is not a full speed device, 64 bytes is not a valid max packet size (at least for bulk, I've been assuming bulk). Is the endpoint descriptor correct?
On the other hand, the host driver may request 64 bytes and then consider the matter. If it didn't like the 64 bytes you sent it, it may then not ask for more. You may be able to tell the difference between these with the working device. If there is a pause between the 64 byte being ACKed and the next IN which is more than micro-seconds, then this is probably what's happening. If the pause is some frames, its definitely what's happening.