The submission of the bulk transfers can be delayed. This leads in the worst case to a change in the order of bulk transfers. For example, the insn command requests the counter value. After that another insn requests the status of the digital port. It happens that these requests are swapped in their temporal order because the USB controller might delay a submission because of heavy traffic. The linux kernel _assumes_ that the packet has been sent. In fact this can't be guaranteed. Therefore now the packet which is sent from the firmware is checked. If it is the wrong one it is requested again.