diff options
Diffstat (limited to 'drivers/staging/sbe-2t3e3')
-rw-r--r-- | drivers/staging/sbe-2t3e3/2t3e3.h | 1 | ||||
-rw-r--r-- | drivers/staging/sbe-2t3e3/dc.c | 10 | ||||
-rw-r--r-- | drivers/staging/sbe-2t3e3/module.c | 15 | ||||
-rw-r--r-- | drivers/staging/sbe-2t3e3/netdev.c | 8 |
4 files changed, 21 insertions, 13 deletions
diff --git a/drivers/staging/sbe-2t3e3/2t3e3.h b/drivers/staging/sbe-2t3e3/2t3e3.h index 383f2cf..ccad049 100644 --- a/drivers/staging/sbe-2t3e3/2t3e3.h +++ b/drivers/staging/sbe-2t3e3/2t3e3.h @@ -789,7 +789,6 @@ void dc_restart(struct channel *); void dc_receiver_onoff(struct channel *, u32); void dc_transmitter_onoff(struct channel *, u32); void dc_set_loopback(struct channel *, u32); -u32 dc_init_descriptor_list(struct channel *); void dc_clear_descriptor_list(struct channel *); void dc_drop_descriptor_list(struct channel *); void dc_set_output_port(struct channel *); diff --git a/drivers/staging/sbe-2t3e3/dc.c b/drivers/staging/sbe-2t3e3/dc.c index 9e81d90..daadd6e 100644 --- a/drivers/staging/sbe-2t3e3/dc.c +++ b/drivers/staging/sbe-2t3e3/dc.c @@ -17,6 +17,8 @@ #include "2t3e3.h" #include "ctrl.h" +static int dc_init_descriptor_list(struct channel *sc); + void dc_init(struct channel *sc) { u32 val; @@ -307,7 +309,7 @@ void dc_set_loopback(struct channel *sc, u32 mode) SBE_2T3E3_21143_VAL_FULL_DUPLEX_MODE); } -u32 dc_init_descriptor_list(struct channel *sc) +static int dc_init_descriptor_list(struct channel *sc) { u32 i, j; struct sk_buff *m; @@ -317,7 +319,7 @@ u32 dc_init_descriptor_list(struct channel *sc) sizeof(t3e3_rx_desc_t), GFP_KERNEL); if (sc->ether.rx_ring == NULL) { dev_err(&sc->pdev->dev, "SBE 2T3E3: no buffer space for RX ring\n"); - return ENOMEM; + return -ENOMEM; } if (sc->ether.tx_ring == NULL) @@ -327,7 +329,7 @@ u32 dc_init_descriptor_list(struct channel *sc) kfree(sc->ether.rx_ring); sc->ether.rx_ring = NULL; dev_err(&sc->pdev->dev, "SBE 2T3E3: no buffer space for RX ring\n"); - return ENOMEM; + return -ENOMEM; } @@ -351,7 +353,7 @@ u32 dc_init_descriptor_list(struct channel *sc) sc->ether.tx_ring = NULL; dev_err(&sc->pdev->dev, "SBE 2T3E3: token_alloc err:" " no buffer space for RX ring\n"); - return ENOBUFS; + return -ENOBUFS; } sc->ether.rx_data[i] = m; } diff --git a/drivers/staging/sbe-2t3e3/module.c b/drivers/staging/sbe-2t3e3/module.c index cd778b3..8adb178 100644 --- a/drivers/staging/sbe-2t3e3/module.c +++ b/drivers/staging/sbe-2t3e3/module.c @@ -67,6 +67,7 @@ static int __devinit t3e3_init_channel(struct channel *channel, struct pci_dev * dev = alloc_hdlcdev(channel); if (!dev) { printk(KERN_ERR "SBE 2T3E3" ": Out of memory\n"); + err = -ENOMEM; goto free_regions; } @@ -82,8 +83,9 @@ static int __devinit t3e3_init_channel(struct channel *channel, struct pci_dev * else channel->h.slot = 0; - if (setup_device(dev, channel)) - goto free_regions; + err = setup_device(dev, channel); + if (err) + goto free_dev; pci_read_config_dword(channel->pdev, 0x40, &val); /* mask sleep mode */ pci_write_config_dword(channel->pdev, 0x40, val & 0x3FFFFFFF); @@ -92,14 +94,19 @@ static int __devinit t3e3_init_channel(struct channel *channel, struct pci_dev * pci_read_config_dword(channel->pdev, PCI_COMMAND, &channel->h.command); t3e3_init(channel); - if (request_irq(dev->irq, &t3e3_intr, IRQF_SHARED, dev->name, dev)) { + err = request_irq(dev->irq, &t3e3_intr, IRQF_SHARED, dev->name, dev); + if (err) { printk(KERN_WARNING "%s: could not get irq: %d\n", dev->name, dev->irq); - goto free_regions; + goto unregister_dev; } pci_set_drvdata(pdev, channel); return 0; +unregister_dev: + unregister_hdlc_device(dev); +free_dev: + free_netdev(dev); free_regions: pci_release_regions(pdev); disable: diff --git a/drivers/staging/sbe-2t3e3/netdev.c b/drivers/staging/sbe-2t3e3/netdev.c index c7b5e8b..180c963 100644 --- a/drivers/staging/sbe-2t3e3/netdev.c +++ b/drivers/staging/sbe-2t3e3/netdev.c @@ -21,13 +21,13 @@ #include <linux/interrupt.h> #include "2t3e3.h" -int t3e3_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) +static int t3e3_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) { struct channel *sc = dev_to_priv(dev); int cmd_2t3e3, len, rlen; t3e3_param_t param; t3e3_resp_t resp; - void *data = ifr->ifr_data + sizeof(cmd_2t3e3) + sizeof(len); + void __user *data = ifr->ifr_data + sizeof(cmd_2t3e3) + sizeof(len); if (cmd == SIOCWANDEV) return hdlc_ioctl(dev, ifr, cmd); @@ -82,7 +82,7 @@ static struct net_device_stats* t3e3_get_stats(struct net_device *dev) return nstats; } -int t3e3_open(struct net_device *dev) +static int t3e3_open(struct net_device *dev) { struct channel *sc = dev_to_priv(dev); int ret = hdlc_open(dev); @@ -97,7 +97,7 @@ int t3e3_open(struct net_device *dev) return 0; } -int t3e3_close(struct net_device *dev) +static int t3e3_close(struct net_device *dev) { struct channel *sc = dev_to_priv(dev); hdlc_close(dev); |