What would cause the Error Bit to trigger vs the Success bit. And what constitutes the "Completion" of the instruction.
Any failure to send the bytes will trigger error. There generally aren't too many things and they are device specific.
The instruction is completed when the driver level signals either success or failure. On success that means that as best as we know the bytes have been sent. I say "as best as we know" because in some cases you have dumped data into a TCP stream output and the stack appears to have taken it, but the specifics of what's going on in the stack are somewhat masked to the driver. Object oriented design is both good and bad in that it hides the details of how an object performs an action...yeah, the sword cuts both ways. Failure is generally immediate and is the result of a broken connection, missing module...usually something bad.