From: Pekka Enberg Date: Wed, 8 Apr 2009 08:13:56 +0000 (+0300) Subject: Staging: w35und: replace switch error handling with gotos in wb35_hw_init() X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=2659851122f6bd822ff3a9a4a13453303c9b5d8e;p=openwrt%2Fstaging%2Fblogic.git Staging: w35und: replace switch error handling with gotos in wb35_hw_init() Impact: cleanup This patch replaces the switch-based error handling in wb35_hw_init() with regular gotos. Acked-by: Pavel Machek Signed-off-by: Pekka Enberg Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/winbond/wbusb.c b/drivers/staging/winbond/wbusb.c index cf176bd3f666..161542d0945a 100644 --- a/drivers/staging/winbond/wbusb.c +++ b/drivers/staging/winbond/wbusb.c @@ -178,15 +178,15 @@ static const struct ieee80211_ops wbsoft_ops = { // conf_tx: hal_set_cwmin()/hal_set_cwmax; }; -static unsigned char wb35_hw_init(struct ieee80211_hw *hw) +static int wb35_hw_init(struct ieee80211_hw *hw) { struct wbsoft_priv *priv = hw->priv; struct hw_data * pHwData; u8 *pMacAddr; u8 *pMacAddr2; - u32 InitStep = 0; u8 EEPROM_region; u8 HwRadioOff; + int err; // // Setting default value for Linux @@ -209,10 +209,11 @@ static unsigned char wb35_hw_init(struct ieee80211_hw *hw) priv->sLocalPara.WepKeyDetectTimerCount= 2 * 100; /// 2 seconds // Initial USB hal - InitStep = 1; pHwData = &priv->sHwData; - if (!hal_init_hardware(hw)) + if (!hal_init_hardware(hw)) { + err = -EINVAL; goto error; + } EEPROM_region = hal_get_region_from_EEPROM( pHwData ); if (EEPROM_region != REGION_AUTO) @@ -229,21 +230,12 @@ static unsigned char wb35_hw_init(struct ieee80211_hw *hw) if (hal_software_set(pHwData) & 0x00000001) priv->sLocalPara.boAntennaDiversity = true; - // - // For TS module - // - InitStep = 2; - // For MDS module - InitStep = 3; Mds_initial(priv); //======================================= // Initialize the SME, SCAN, MLME, ROAM //======================================= - InitStep = 4; - InitStep = 5; - InitStep = 6; // If no user-defined address in the registry, use the addresss "burned" on the NIC instead. pMacAddr = priv->sLocalPara.ThisMacAddress; @@ -277,19 +269,12 @@ static unsigned char wb35_hw_init(struct ieee80211_hw *hw) hal_driver_init_OK(pHwData) = 1; // Notify hal that the driver is ready now. //set a tx power for reference..... // sme_set_tx_power_level(priv, 12); FIXME? - return true; + return 0; error: - switch (InitStep) { - case 5: - case 4: - case 3: Mds_Destroy( priv ); - case 2: - case 1: hal_halt( pHwData, NULL ); - case 0: break; - } + hal_halt(pHwData, NULL); - return false; + return err; } static int wb35_probe(struct usb_interface *intf, const struct usb_device_id *id_table) @@ -341,10 +326,9 @@ static int wb35_probe(struct usb_interface *intf, const struct usb_device_id *id pWbUsb->IsUsb20 = 1; } - if (!wb35_hw_init(dev)) { - err = -EINVAL; + err = wb35_hw_init(dev); + if (err) goto error_free_hw; - } SET_IEEE80211_DEV(dev, &udev->dev); {