Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/uhcirh/port.c

    rc53007f r1ae74c6  
    150150{
    151151        uhci_port_t *instance = port;
    152         int rc;
    153152        assert(instance);
    154153
    155154        unsigned allowed_failures = MAX_ERROR_COUNT;
     155#define CHECK_RET_FAIL(ret, msg...) \
     156        if (ret != EOK) { \
     157                usb_log_error(msg); \
     158                if (!(allowed_failures-- > 0)) { \
     159                        usb_log_fatal( \
     160                           "Maximum number of failures reached, " \
     161                           "bailing out.\n"); \
     162                        return ret; \
     163                } \
     164                continue; \
     165        } else (void)0
    156166
    157167        while (1) {
     
    172182                    instance->id_string, port_status);
    173183
    174                 rc = usb_hc_connection_open(&instance->hc_connection);
    175                 if (rc != EOK) {
    176                         usb_log_error("%s: Failed to connect to HC %s.\n",
    177                             instance->id_string, str_error(rc));
    178                         if (!(allowed_failures-- > 0))
    179                                 goto fatal_error;
    180                         continue;
    181                 }
     184                int ret = usb_hc_connection_open(&instance->hc_connection);
     185                CHECK_RET_FAIL(ret, "%s: Failed to connect to HC %s.\n",
     186                    instance->id_string, str_error(ret));
    182187
    183188                /* Remove any old device */
     
    199204                }
    200205
    201                 rc = usb_hc_connection_close(&instance->hc_connection);
    202                 if (rc != EOK) {
    203                         usb_log_error("%s: Failed to disconnect from HC %s.\n",
    204                             instance->id_string, str_error(rc));
    205                         if (!(allowed_failures-- > 0))
    206                                 goto fatal_error;
    207                         continue;
    208                 }
    209         }
    210 
    211         return EOK;
    212 
    213 fatal_error:
    214         usb_log_fatal("Maximum number of failures reached, bailing out.\n");
    215         return rc;
     206                ret = usb_hc_connection_close(&instance->hc_connection);
     207                CHECK_RET_FAIL(ret, "%s: Failed to disconnect from hc: %s.\n",
     208                    instance->id_string, str_error(ret));
     209        }
     210        return EOK;
    216211}
    217212
Note: See TracChangeset for help on using the changeset viewer.