Commit b4050790 authored by Ben Hutchings's avatar Ben Hutchings Committed by John W. Linville

ipw2200: Fix order of device registration

Currently cfg80211 fails to create a "phy80211" symlink in sysfs from
the net device to the wiphy device.  The latter needs to be registered
first.

Compile-tested only.
Reported-by: default avatarCesare Leonardi <celeonar@gmail.com>
Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent f2bd7f16
...@@ -11840,16 +11840,17 @@ static int __devinit ipw_pci_probe(struct pci_dev *pdev, ...@@ -11840,16 +11840,17 @@ static int __devinit ipw_pci_probe(struct pci_dev *pdev,
} }
mutex_unlock(&priv->mutex); mutex_unlock(&priv->mutex);
err = register_netdev(net_dev);
err = ipw_wdev_init(net_dev);
if (err) { if (err) {
IPW_ERROR("failed to register network device\n"); IPW_ERROR("failed to register wireless device\n");
goto out_remove_sysfs; goto out_remove_sysfs;
} }
err = ipw_wdev_init(net_dev); err = register_netdev(net_dev);
if (err) { if (err) {
IPW_ERROR("failed to register wireless device\n"); IPW_ERROR("failed to register network device\n");
goto out_unregister_netdev; goto out_unregister_wiphy;
} }
#ifdef CONFIG_IPW2200_PROMISCUOUS #ifdef CONFIG_IPW2200_PROMISCUOUS
...@@ -11858,10 +11859,8 @@ static int __devinit ipw_pci_probe(struct pci_dev *pdev, ...@@ -11858,10 +11859,8 @@ static int __devinit ipw_pci_probe(struct pci_dev *pdev,
if (err) { if (err) {
IPW_ERROR("Failed to register promiscuous network " IPW_ERROR("Failed to register promiscuous network "
"device (error %d).\n", err); "device (error %d).\n", err);
wiphy_unregister(priv->ieee->wdev.wiphy); unregister_netdev(priv->net_dev);
kfree(priv->ieee->a_band.channels); goto out_unregister_wiphy;
kfree(priv->ieee->bg_band.channels);
goto out_unregister_netdev;
} }
} }
#endif #endif
...@@ -11873,8 +11872,10 @@ static int __devinit ipw_pci_probe(struct pci_dev *pdev, ...@@ -11873,8 +11872,10 @@ static int __devinit ipw_pci_probe(struct pci_dev *pdev,
return 0; return 0;
out_unregister_netdev: out_unregister_wiphy:
unregister_netdev(priv->net_dev); wiphy_unregister(priv->ieee->wdev.wiphy);
kfree(priv->ieee->a_band.channels);
kfree(priv->ieee->bg_band.channels);
out_remove_sysfs: out_remove_sysfs:
sysfs_remove_group(&pdev->dev.kobj, &ipw_attribute_group); sysfs_remove_group(&pdev->dev.kobj, &ipw_attribute_group);
out_release_irq: out_release_irq:
......
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