Commit 1523ddc4 authored by Pekka Enberg's avatar Pekka Enberg Committed by Greg Kroah-Hartman

Staging: w35und: wb35_probe() cleanup

Fix error handling in wb35_probe() function and clean it up a bit.
Signed-off-by: default avatarPekka Enberg <penberg@cs.helsinki.fi>
Acked-by: default avatarPavel Machek <pavel@suse.cz>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 581f67cf
...@@ -191,26 +191,33 @@ static int wb35_probe(struct usb_interface *intf, const struct usb_device_id *id ...@@ -191,26 +191,33 @@ static int wb35_probe(struct usb_interface *intf, const struct usb_device_id *id
PWBUSB pWbUsb; PWBUSB pWbUsb;
struct usb_host_interface *interface; struct usb_host_interface *interface;
struct usb_endpoint_descriptor *endpoint; struct usb_endpoint_descriptor *endpoint;
int ret = -1;
u32 ltmp; u32 ltmp;
struct usb_device *udev = interface_to_usbdev(intf); struct usb_device *udev = interface_to_usbdev(intf);
struct wbsoft_priv *priv;
struct ieee80211_hw *dev;
static struct ieee80211_supported_band band;
int err;
usb_get_dev(udev); usb_get_dev(udev);
printk("[w35und]wb35_probe ->\n");
// 20060630.2 Check the device if it already be opened // 20060630.2 Check the device if it already be opened
ret = usb_control_msg(udev, usb_rcvctrlpipe( udev, 0 ), err = usb_control_msg(udev, usb_rcvctrlpipe( udev, 0 ),
0x01, USB_TYPE_VENDOR|USB_RECIP_DEVICE|USB_DIR_IN, 0x01, USB_TYPE_VENDOR|USB_RECIP_DEVICE|USB_DIR_IN,
0x0, 0x400, &ltmp, 4, HZ*100 ); 0x0, 0x400, &ltmp, 4, HZ*100 );
if (ret < 0) if (err)
goto error; goto error;
ltmp = cpu_to_le32(ltmp); ltmp = cpu_to_le32(ltmp);
if (ltmp) // Is already initialized? if (ltmp) { // Is already initialized?
err = -EBUSY;
goto error; goto error;
}
adapter = kzalloc(sizeof(*adapter), GFP_KERNEL); adapter = kzalloc(sizeof(*adapter), GFP_KERNEL);
if (!adapter) {
err = -ENOMEM;
goto error;
}
my_adapter = adapter; my_adapter = adapter;
pWbUsb = &adapter->sHwData.WbUsb; pWbUsb = &adapter->sHwData.WbUsb;
...@@ -225,69 +232,50 @@ static int wb35_probe(struct usb_interface *intf, const struct usb_device_id *id ...@@ -225,69 +232,50 @@ static int wb35_probe(struct usb_interface *intf, const struct usb_device_id *id
} }
if (!WbWLanInitialize(adapter)) { if (!WbWLanInitialize(adapter)) {
printk("[w35und]WbWLanInitialize fail\n"); err = -EINVAL;
goto error; goto error_free_adapter;
} }
{ dev = ieee80211_alloc_hw(sizeof(*priv), &wbsoft_ops);
struct wbsoft_priv *priv; if (!dev)
struct ieee80211_hw *dev; goto error_free_adapter;
static struct ieee80211_supported_band band;
int res;
dev = ieee80211_alloc_hw(sizeof(*priv), &wbsoft_ops);
if (!dev) {
printk("w35und: ieee80211 alloc failed\n" );
BUG();
}
my_dev = dev;
SET_IEEE80211_DEV(dev, &udev->dev);
{
phw_data_t pHwData = &adapter->sHwData;
unsigned char dev_addr[MAX_ADDR_LEN];
hal_get_permanent_address(pHwData, dev_addr);
SET_IEEE80211_PERM_ADDR(dev, dev_addr);
}
dev->extra_tx_headroom = 12; /* FIXME */
dev->flags = 0;
dev->channel_change_time = 1000; my_dev = dev;
// dev->max_rssi = 100;
dev->queues = 1; SET_IEEE80211_DEV(dev, &udev->dev);
{
phw_data_t pHwData = &adapter->sHwData;
unsigned char dev_addr[MAX_ADDR_LEN];
hal_get_permanent_address(pHwData, dev_addr);
SET_IEEE80211_PERM_ADDR(dev, dev_addr);
}
band.channels = wbsoft_channels; dev->extra_tx_headroom = 12; /* FIXME */
band.n_channels = ARRAY_SIZE(wbsoft_channels); dev->flags = 0;
band.bitrates = wbsoft_rates;
band.n_bitrates = ARRAY_SIZE(wbsoft_rates);
dev->wiphy->bands[IEEE80211_BAND_2GHZ] = &band; dev->channel_change_time = 1000;
#if 0 dev->queues = 1;
wbsoft_modes[0].num_channels = 1;
wbsoft_modes[0].channels = wbsoft_channels;
wbsoft_modes[0].mode = MODE_IEEE80211B;
wbsoft_modes[0].num_rates = ARRAY_SIZE(wbsoft_rates);
wbsoft_modes[0].rates = wbsoft_rates;
res = ieee80211_register_hwmode(dev, &wbsoft_modes[0]); band.channels = wbsoft_channels;
BUG_ON(res); band.n_channels = ARRAY_SIZE(wbsoft_channels);
#endif band.bitrates = wbsoft_rates;
band.n_bitrates = ARRAY_SIZE(wbsoft_rates);
res = ieee80211_register_hw(dev); dev->wiphy->bands[IEEE80211_BAND_2GHZ] = &band;
BUG_ON(res); err = ieee80211_register_hw(dev);
} if (err)
goto error_free_hw;
usb_set_intfdata( intf, adapter ); usb_set_intfdata(intf, adapter);
printk("[w35und] _probe OK\n");
return 0; return 0;
error_free_hw:
ieee80211_free_hw(dev);
error_free_adapter:
kfree(adapter);
error: error:
return -ENOMEM; return err;
} }
void packet_came(char *pRxBufferAddress, int PacketSize) void packet_came(char *pRxBufferAddress, int PacketSize)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment