Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 258551
b: refs/heads/master
c: 24aad3f
h: refs/heads/master
i:
  258549: 9d72469
  258547: e6fe199
  258543: d1d344f
v: v3
  • Loading branch information
Rafał Miłecki authored and John W. Linville committed Jul 22, 2011
1 parent 5a3ad70 commit 3a01387
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: eb90e9e85c36dd2dd730d2eacec74db84491033d
refs/heads/master: 24aad3f4c8a5c0a7514733fb9fa70994e24a5707
48 changes: 44 additions & 4 deletions trunk/drivers/net/wireless/b43/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -5235,19 +5235,59 @@ static struct b43_wl *b43_wireless_init(struct b43_bus_dev *dev)
static int b43_bcma_probe(struct bcma_device *core)
{
struct b43_bus_dev *dev;
struct b43_wl *wl;
int err;

dev = b43_bus_dev_bcma_init(core);
if (!dev)
return -ENODEV;

b43err(NULL, "BCMA is not supported yet!");
kfree(dev);
return -EOPNOTSUPP;
wl = b43_wireless_init(dev);
if (IS_ERR(wl)) {
err = PTR_ERR(wl);
goto bcma_out;
}

err = b43_one_core_attach(dev, wl);
if (err)
goto bcma_err_wireless_exit;

err = ieee80211_register_hw(wl->hw);
if (err)
goto bcma_err_one_core_detach;
b43_leds_register(wl->current_dev);

bcma_out:
return err;

bcma_err_one_core_detach:
b43_one_core_detach(dev);
bcma_err_wireless_exit:
ieee80211_free_hw(wl->hw);
return err;
}

static void b43_bcma_remove(struct bcma_device *core)
{
/* TODO */
struct b43_wldev *wldev = bcma_get_drvdata(core);
struct b43_wl *wl = wldev->wl;

/* We must cancel any work here before unregistering from ieee80211,
* as the ieee80211 unreg will destroy the workqueue. */
cancel_work_sync(&wldev->restart_work);

/* Restore the queues count before unregistering, because firmware detect
* might have modified it. Restoring is important, so the networking
* stack can properly free resources. */
wl->hw->queues = wl->mac80211_initially_registered_queues;
b43_leds_stop(wldev);
ieee80211_unregister_hw(wl->hw);

b43_one_core_detach(wldev->dev);

b43_leds_unregister(wl);

ieee80211_free_hw(wl->hw);
}

static struct bcma_driver b43_bcma_driver = {
Expand Down

0 comments on commit 3a01387

Please sign in to comment.