mirror of
https://github.com/ipxe/ipxe
synced 2025-12-19 11:00:27 +03:00
[ata] Make ATA command issuing partially asynchronous
Move the icky call to step() from aoe.c to ata.c; this takes it at least one step further away from where it really doesn't belong. Unfortunately, AoE has the ugly aoe_discover() mechanism which means that we still have a step() loop in aoe.c for now; this needs to be replaced at some future point.
This commit is contained in:
@@ -68,6 +68,7 @@ static void aoe_done ( struct aoe_session *aoe, int rc ) {
|
||||
/* Record overall command status */
|
||||
if ( aoe->command ) {
|
||||
aoe->command->cb.cmd_stat = aoe->status;
|
||||
aoe->command->rc = rc;
|
||||
aoe->command = NULL;
|
||||
}
|
||||
|
||||
@@ -356,7 +357,6 @@ static int aoe_command ( struct ata_device *ata,
|
||||
struct ata_command *command ) {
|
||||
struct aoe_session *aoe =
|
||||
container_of ( ata->backend, struct aoe_session, refcnt );
|
||||
int rc;
|
||||
|
||||
aoe->command = command;
|
||||
aoe->status = 0;
|
||||
@@ -365,15 +365,9 @@ static int aoe_command ( struct ata_device *ata,
|
||||
|
||||
aoe_send_command ( aoe );
|
||||
|
||||
aoe->rc = -EINPROGRESS;
|
||||
while ( aoe->rc == -EINPROGRESS )
|
||||
step();
|
||||
rc = aoe->rc;
|
||||
|
||||
return rc;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Issue AoE config query for AoE target discovery
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user