orinoco: move netdev interface creation to main driver
With the move to cfg80211 it's nice to keep the hardware operations distinct from the interface, even though we can only support a single interface. This also means the driver resembles other cfg80211 drivers. Signed-off-by: David Kilroy <kilroyd@googlemail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
committed by
John W. Linville
parent
35832c50d1
commit
5381956b78
@@ -183,7 +183,6 @@ static int orinoco_plx_init_one(struct pci_dev *pdev,
|
||||
int err;
|
||||
struct orinoco_private *priv;
|
||||
struct orinoco_pci_card *card;
|
||||
struct net_device *dev;
|
||||
void __iomem *hermes_io, *attr_io, *bridge_io;
|
||||
|
||||
err = pci_enable_device(pdev);
|
||||
@@ -228,16 +227,14 @@ static int orinoco_plx_init_one(struct pci_dev *pdev,
|
||||
goto fail_alloc;
|
||||
}
|
||||
|
||||
dev = priv->ndev;
|
||||
card = priv->card;
|
||||
card->bridge_io = bridge_io;
|
||||
card->attr_io = attr_io;
|
||||
SET_NETDEV_DEV(dev, &pdev->dev);
|
||||
|
||||
hermes_struct_init(&priv->hw, hermes_io, HERMES_16BIT_REGSPACING);
|
||||
|
||||
err = request_irq(pdev->irq, orinoco_interrupt, IRQF_SHARED,
|
||||
dev->name, priv);
|
||||
DRIVER_NAME, priv);
|
||||
if (err) {
|
||||
printk(KERN_ERR PFX "Cannot allocate IRQ %d\n", pdev->irq);
|
||||
err = -EBUSY;
|
||||
@@ -262,15 +259,13 @@ static int orinoco_plx_init_one(struct pci_dev *pdev,
|
||||
goto fail;
|
||||
}
|
||||
|
||||
err = register_netdev(dev);
|
||||
err = orinoco_if_add(priv, 0, 0);
|
||||
if (err) {
|
||||
printk(KERN_ERR PFX "Cannot register network device\n");
|
||||
printk(KERN_ERR PFX "orinoco_if_add() failed\n");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
pci_set_drvdata(pdev, priv);
|
||||
printk(KERN_DEBUG "%s: " DRIVER_NAME " at %s\n", dev->name,
|
||||
pci_name(pdev));
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -302,10 +297,9 @@ static int orinoco_plx_init_one(struct pci_dev *pdev,
|
||||
static void __devexit orinoco_plx_remove_one(struct pci_dev *pdev)
|
||||
{
|
||||
struct orinoco_private *priv = pci_get_drvdata(pdev);
|
||||
struct net_device *dev = priv->ndev;
|
||||
struct orinoco_pci_card *card = priv->card;
|
||||
|
||||
unregister_netdev(dev);
|
||||
orinoco_if_del(priv);
|
||||
free_irq(pdev->irq, priv);
|
||||
pci_set_drvdata(pdev, NULL);
|
||||
free_orinocodev(priv);
|
||||
|
Reference in New Issue
Block a user