equal
deleted
inserted
replaced
617 const TInt size = thisPacketSize - iExtractOffset; |
617 const TInt size = thisPacketSize - iExtractOffset; |
618 if (aRUS) |
618 if (aRUS) |
619 { |
619 { |
620 if (iEndpointType == KUsbEpTypeBulk) |
620 if (iEndpointType == KUsbEpTypeBulk) |
621 { |
621 { |
622 isShortPacket = (size < iMaxPacketSize) || (size & maxPacketSizeMask); |
622 if(iExtractOffset & maxPacketSizeMask) |
|
623 { |
|
624 isShortPacket = ((size+iExtractOffset) < iMaxPacketSize) || ((size+iExtractOffset) & maxPacketSizeMask); |
|
625 } |
|
626 else |
|
627 { |
|
628 isShortPacket = (size < iMaxPacketSize) || (size & maxPacketSizeMask); |
|
629 } |
623 } |
630 } |
624 else |
631 else |
625 { |
632 { |
626 // this 'if' block is arranged to avoid a division on packet sizes <= iMaxPacketSize |
633 // this 'if' block is arranged to avoid a division on packet sizes <= iMaxPacketSize |
627 isShortPacket = (size < iMaxPacketSize) || |
634 isShortPacket = (size < iMaxPacketSize) || |
828 return ETrue; |
835 return ETrue; |
829 |
836 |
830 if (iEndpointType == KUsbEpTypeBulk) |
837 if (iEndpointType == KUsbEpTypeBulk) |
831 { |
838 { |
832 const TInt mask = iMaxPacketSize - 1; |
839 const TInt mask = iMaxPacketSize - 1; |
833 if (iTotalRxBytesAvail & mask) |
840 |
834 return ETrue; |
|
835 |
|
836 // residue==0; this can be because |
|
837 // zlps exist, or short packets combine to n * max_packet_size |
|
838 // This means spadework |
|
839 const TInt s = iCurrentPacketSizeArray[iCurrentPacket] - iExtractOffset; |
|
840 if ((s == 0) || (s & mask)) |
|
841 { |
|
842 return ETrue; |
|
843 } |
|
844 |
841 |
845 for (TInt i = 0; i < iNumberofBuffers; i++) |
842 for (TInt i = 0; i < iNumberofBuffers; i++) |
846 { |
843 { |
847 if (index == KUsbcInvalidBufferIndex) |
844 if (index == KUsbcInvalidBufferIndex) |
848 break; |
845 break; |