I noticed my bluetooth Data receive code needs a delay of .15 sec before RecvOneOrMore(..) call in Nokia 6600. I call Receive from my RunL(..). Such delays where not needed in 3650 and 7650. If i dont give this delay RecvOneOrMore status returns an error! for the next recv. Why this. Because of this delay my bluetooth receive using 6600 is only 50% fast as 3650!. Is there some reason for this.

Looks like this delay is needed by 6600 to complete the previous receive!! But then why is the return status KErrNone the first recv if it dint complete it? But adding this small delay everything seem to work well!!
But this is not acceptable as the transfer rate is only 50% of 3650.

I would appreciate anyone who can throw more light in to this.

void CSocket::Receive(TDes8& aText)
if (!IsActive())
TSockXfrLength reslen(0);
if(AppUi->Model == NOKIA6600_DEVICE)
RTimer timer;
TRequestStatus timerStatus; // request status associated with timer
timer.After(timerStatus,150000); // .15 sec wait