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 <pavel@ucw.cz> Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
6ab3212720
commit
2659851122
|
@ -178,15 +178,15 @@ static const struct ieee80211_ops wbsoft_ops = {
|
||||||
// conf_tx: hal_set_cwmin()/hal_set_cwmax;
|
// 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 wbsoft_priv *priv = hw->priv;
|
||||||
struct hw_data * pHwData;
|
struct hw_data * pHwData;
|
||||||
u8 *pMacAddr;
|
u8 *pMacAddr;
|
||||||
u8 *pMacAddr2;
|
u8 *pMacAddr2;
|
||||||
u32 InitStep = 0;
|
|
||||||
u8 EEPROM_region;
|
u8 EEPROM_region;
|
||||||
u8 HwRadioOff;
|
u8 HwRadioOff;
|
||||||
|
int err;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Setting default value for Linux
|
// 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
|
priv->sLocalPara.WepKeyDetectTimerCount= 2 * 100; /// 2 seconds
|
||||||
|
|
||||||
// Initial USB hal
|
// Initial USB hal
|
||||||
InitStep = 1;
|
|
||||||
pHwData = &priv->sHwData;
|
pHwData = &priv->sHwData;
|
||||||
if (!hal_init_hardware(hw))
|
if (!hal_init_hardware(hw)) {
|
||||||
|
err = -EINVAL;
|
||||||
goto error;
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
EEPROM_region = hal_get_region_from_EEPROM( pHwData );
|
EEPROM_region = hal_get_region_from_EEPROM( pHwData );
|
||||||
if (EEPROM_region != REGION_AUTO)
|
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)
|
if (hal_software_set(pHwData) & 0x00000001)
|
||||||
priv->sLocalPara.boAntennaDiversity = true;
|
priv->sLocalPara.boAntennaDiversity = true;
|
||||||
|
|
||||||
//
|
|
||||||
// For TS module
|
|
||||||
//
|
|
||||||
InitStep = 2;
|
|
||||||
|
|
||||||
// For MDS module
|
// For MDS module
|
||||||
InitStep = 3;
|
|
||||||
Mds_initial(priv);
|
Mds_initial(priv);
|
||||||
|
|
||||||
//=======================================
|
//=======================================
|
||||||
// Initialize the SME, SCAN, MLME, ROAM
|
// 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.
|
// If no user-defined address in the registry, use the addresss "burned" on the NIC instead.
|
||||||
pMacAddr = priv->sLocalPara.ThisMacAddress;
|
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.
|
hal_driver_init_OK(pHwData) = 1; // Notify hal that the driver is ready now.
|
||||||
//set a tx power for reference.....
|
//set a tx power for reference.....
|
||||||
// sme_set_tx_power_level(priv, 12); FIXME?
|
// sme_set_tx_power_level(priv, 12); FIXME?
|
||||||
return true;
|
return 0;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
switch (InitStep) {
|
hal_halt(pHwData, NULL);
|
||||||
case 5:
|
|
||||||
case 4:
|
|
||||||
case 3: Mds_Destroy( priv );
|
|
||||||
case 2:
|
|
||||||
case 1: hal_halt( pHwData, NULL );
|
|
||||||
case 0: break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int wb35_probe(struct usb_interface *intf, const struct usb_device_id *id_table)
|
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;
|
pWbUsb->IsUsb20 = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!wb35_hw_init(dev)) {
|
err = wb35_hw_init(dev);
|
||||||
err = -EINVAL;
|
if (err)
|
||||||
goto error_free_hw;
|
goto error_free_hw;
|
||||||
}
|
|
||||||
|
|
||||||
SET_IEEE80211_DEV(dev, &udev->dev);
|
SET_IEEE80211_DEV(dev, &udev->dev);
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue