diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2012-07-02 17:07:40 +0200 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2012-07-26 17:44:08 +0200 |
commit | 8f6e699ddbcad32480fa64796ccf44cbaf5b4b91 (patch) | |
tree | 687223392c78ddda5ea9a3c2db9192213f60d7de | |
parent | d2a9998f8864e6f816262d9416d8b538186a8cad (diff) | |
download | hqemu-8f6e699ddbcad32480fa64796ccf44cbaf5b4b91.zip hqemu-8f6e699ddbcad32480fa64796ccf44cbaf5b4b91.tar.gz |
lsi: avoid redundant tests of s->current != NULL
Simplify the code by checking against req->hba_private directly,
and asserting that it is non-NULL before a command is completed
or canceled.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r-- | hw/lsi53c895a.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/hw/lsi53c895a.c b/hw/lsi53c895a.c index 078ab6d..5f6cb17 100644 --- a/hw/lsi53c895a.c +++ b/hw/lsi53c895a.c @@ -706,7 +706,7 @@ static void lsi_command_complete(SCSIRequest *req, uint32_t status, size_t resid lsi_set_phase(s, PHASE_ST); } - if (s->current && req == s->current->req) { + if (req->hba_private == s->current) { req->hba_private = NULL; lsi_request_free(s, s->current); scsi_req_unref(req); @@ -720,7 +720,8 @@ static void lsi_transfer_data(SCSIRequest *req, uint32_t len) LSIState *s = DO_UPCAST(LSIState, dev.qdev, req->bus->qbus.parent); int out; - if (s->waiting == 1 || !s->current || req->hba_private != s->current || + assert(req->hba_private); + if (s->waiting == 1 || req->hba_private != s->current || (lsi_irq_on_rsl(s) && !(s->scntl1 & LSI_SCNTL1_CON))) { if (lsi_queue_req(s, req, len)) { return; |