wait_for_completion(&orb->done);
 
-       /* FIXME: Handle bus reset race here. */
-
        retval = -EIO;
        if (orb->base.rcode != RCODE_COMPLETE) {
                fw_error("management write failed, rcode 0x%02x\n",
 {
        struct fw_transaction *t = data;
 
-       fw_notify("agent reset write rcode=%d\n", rcode);
        kfree(t);
 }
 
        if (sbp2_send_management_orb(unit, node_id, generation,
                                     SBP2_LOGIN_REQUEST, lun, &response) < 0) {
                if (sd->retries++ < 5) {
-                       fw_error("login attempt %d for %s failed, "
-                                "rescheduling\n",
-                                sd->retries, unit->device.bus_id);
                        schedule_delayed_work(&sd->work, DIV_ROUND_UP(HZ, 5));
                } else {
                        fw_error("failed to login to %s\n",
 
        /* Get command block agent offset and login id. */
        sd->command_block_agent_address =
-               ((u64) response.command_block_agent.high << 32) |
+               ((u64) (response.command_block_agent.high & 0xffff) << 32) |
                response.command_block_agent.low;
        sd->login_id = login_response_get_login_id(response);
 
-       fw_notify("logged in to sbp2 unit %s\n", unit->device.bus_id);
-       fw_notify(" - management_agent_address: 0x%012llx\n",
+       fw_notify("logged in to sbp2 unit %s (%d retries)\n",
+                 unit->device.bus_id, sd->retries);
+       fw_notify(" - management_agent_address:    0x%012llx\n",
                  (unsigned long long) sd->management_agent_address);
        fw_notify(" - command_block_agent_address: 0x%012llx\n",
                  (unsigned long long) sd->command_block_agent_address);
-       fw_notify(" - status write address: 0x%012llx\n",
+       fw_notify(" - status write address:        0x%012llx\n",
                  (unsigned long long) sd->address_handler.offset);
 
 #if 0
        if (sbp2_send_management_orb(unit, node_id, generation,
                                     SBP2_RECONNECT_REQUEST,
                                     sd->login_id, NULL) < 0) {
-               if (sd->retries++ < 5) {
-                       fw_error("reconnect attempt %d for %s failed, "
-                                "rescheduling\n",
-                                sd->retries, unit->device.bus_id);
-               } else {
+               if (sd->retries++ >= 5) {
                        fw_error("failed to reconnect to %s\n",
                                 unit->device.bus_id);
                        /* Fall back and try to log in again. */
        sd->node_id      = node_id;
        sd->address_high = local_node_id << 16;
 
-       fw_notify("reconnected to unit %s\n", unit->device.bus_id);
+       fw_notify("reconnected to unit %s (%d retries)\n",
+                 unit->device.bus_id, sd->retries);
        sbp2_agent_reset(unit);
        sbp2_cancel_orbs(unit);
 }
                /* If the orb completes with status == NULL, something
                 * went wrong, typically a bus reset happened mid-orb
                 * or when sending the write (less likely). */
-               fw_notify("no command orb status, rcode=%d\n",
-                         orb->base.rcode);
                result = DID_BUS_BUSY;
        }