summaryrefslogtreecommitdiffstats
path: root/src/net/aoe.c
diff options
context:
space:
mode:
authorMichael Brown2006-05-31 20:57:11 +0200
committerMichael Brown2006-05-31 20:57:11 +0200
commit99ef98d0bffdb9b8c67ad3892d533d33221529f0 (patch)
tree2a7b65c59a856fc57031cf0a23881340b0d21ce5 /src/net/aoe.c
parentMissing from previous checkin. (diff)
downloadipxe-99ef98d0bffdb9b8c67ad3892d533d33221529f0.tar.gz
ipxe-99ef98d0bffdb9b8c67ad3892d533d33221529f0.tar.xz
ipxe-99ef98d0bffdb9b8c67ad3892d533d33221529f0.zip
ATA devices are now asynchronous. The ATA layer itself now performs the
async_wait(), though we may wish to move this higher up the stack, and consider making the block device model asynchronous. (There is only a marginal cost for synchronous devices, since they can simply call async_done() before returning; async_wait() will work seamlessly in this situation).
Diffstat (limited to 'src/net/aoe.c')
-rw-r--r--src/net/aoe.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/net/aoe.c b/src/net/aoe.c
index a91e0097..0d59a977 100644
--- a/src/net/aoe.c
+++ b/src/net/aoe.c
@@ -274,14 +274,17 @@ void aoe_close ( struct aoe_session *aoe ) {
*
* @v aoe AoE session
* @v command ATA command
+ * @ret aop Asynchronous operation
*
* Only one command may be issued concurrently per session. This call
* is non-blocking; use async_wait() to wait for the command to
* complete.
*/
-void aoe_issue ( struct aoe_session *aoe, struct ata_command *command ) {
+struct async_operation * aoe_issue ( struct aoe_session *aoe,
+ struct ata_command *command ) {
aoe->command = command;
aoe->status = 0;
aoe->command_offset = 0;
aoe_send_command ( aoe );
+ return &aoe->aop;
}