diff options
-rw-r--r-- | drivers/net/Kconfig | 6 | ||||
-rw-r--r-- | drivers/net/arm/ep93xx_eth.c | 40 | ||||
-rw-r--r-- | drivers/net/ehea/ehea_main.c | 11 | ||||
-rw-r--r-- | drivers/net/irda/stir4200.c | 3 | ||||
-rw-r--r-- | drivers/net/myri10ge/myri10ge.c | 1 | ||||
-rw-r--r-- | drivers/net/s2io.c | 11 | ||||
-rw-r--r-- | drivers/net/skge.c | 3 | ||||
-rw-r--r-- | drivers/net/sky2.c | 9 | ||||
-rw-r--r-- | drivers/net/tokenring/proteon.c | 9 | ||||
-rw-r--r-- | drivers/net/tokenring/skisa.c | 9 | ||||
-rw-r--r-- | drivers/net/wan/n2.c | 6 | ||||
-rw-r--r-- | net/sched/sch_netem.c | 2 |
12 files changed, 54 insertions, 56 deletions
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index e38846eb51fa..28c17d1ca5cb 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig | |||
@@ -2112,7 +2112,7 @@ config SKGE | |||
2112 | 2112 | ||
2113 | config SKY2 | 2113 | config SKY2 |
2114 | tristate "SysKonnect Yukon2 support (EXPERIMENTAL)" | 2114 | tristate "SysKonnect Yukon2 support (EXPERIMENTAL)" |
2115 | depends on PCI && EXPERIMENTAL | 2115 | depends on PCI |
2116 | select CRC32 | 2116 | select CRC32 |
2117 | ---help--- | 2117 | ---help--- |
2118 | This driver supports Gigabit Ethernet adapters based on the | 2118 | This driver supports Gigabit Ethernet adapters based on the |
@@ -2120,8 +2120,8 @@ config SKY2 | |||
2120 | Marvell 88E8021/88E8022/88E8035/88E8036/88E8038/88E8050/88E8052/ | 2120 | Marvell 88E8021/88E8022/88E8035/88E8036/88E8038/88E8050/88E8052/ |
2121 | 88E8053/88E8055/88E8061/88E8062, SysKonnect SK-9E21D/SK-9S21 | 2121 | 88E8053/88E8055/88E8061/88E8062, SysKonnect SK-9E21D/SK-9S21 |
2122 | 2122 | ||
2123 | This driver does not support the original Yukon chipset: a seperate | 2123 | There is companion driver for the older Marvell Yukon and |
2124 | driver, skge, is provided for Yukon-based adapters. | 2124 | Genesis based adapters: skge. |
2125 | 2125 | ||
2126 | To compile this driver as a module, choose M here: the module | 2126 | To compile this driver as a module, choose M here: the module |
2127 | will be called sky2. This is recommended. | 2127 | will be called sky2. This is recommended. |
diff --git a/drivers/net/arm/ep93xx_eth.c b/drivers/net/arm/ep93xx_eth.c index 127561c782fd..8ebd68e2af98 100644 --- a/drivers/net/arm/ep93xx_eth.c +++ b/drivers/net/arm/ep93xx_eth.c | |||
@@ -193,12 +193,9 @@ static struct net_device_stats *ep93xx_get_stats(struct net_device *dev) | |||
193 | static int ep93xx_rx(struct net_device *dev, int *budget) | 193 | static int ep93xx_rx(struct net_device *dev, int *budget) |
194 | { | 194 | { |
195 | struct ep93xx_priv *ep = netdev_priv(dev); | 195 | struct ep93xx_priv *ep = netdev_priv(dev); |
196 | int tail_offset; | ||
197 | int rx_done; | 196 | int rx_done; |
198 | int processed; | 197 | int processed; |
199 | 198 | ||
200 | tail_offset = rdl(ep, REG_RXSTSQCURADD) - ep->descs_dma_addr; | ||
201 | |||
202 | rx_done = 0; | 199 | rx_done = 0; |
203 | processed = 0; | 200 | processed = 0; |
204 | while (*budget > 0) { | 201 | while (*budget > 0) { |
@@ -211,36 +208,28 @@ static int ep93xx_rx(struct net_device *dev, int *budget) | |||
211 | 208 | ||
212 | entry = ep->rx_pointer; | 209 | entry = ep->rx_pointer; |
213 | rstat = ep->descs->rstat + entry; | 210 | rstat = ep->descs->rstat + entry; |
214 | if ((void *)rstat - (void *)ep->descs == tail_offset) { | 211 | |
212 | rstat0 = rstat->rstat0; | ||
213 | rstat1 = rstat->rstat1; | ||
214 | if (!(rstat0 & RSTAT0_RFP) || !(rstat1 & RSTAT1_RFP)) { | ||
215 | rx_done = 1; | 215 | rx_done = 1; |
216 | break; | 216 | break; |
217 | } | 217 | } |
218 | 218 | ||
219 | rstat0 = rstat->rstat0; | ||
220 | rstat1 = rstat->rstat1; | ||
221 | rstat->rstat0 = 0; | 219 | rstat->rstat0 = 0; |
222 | rstat->rstat1 = 0; | 220 | rstat->rstat1 = 0; |
223 | 221 | ||
224 | if (!(rstat0 & RSTAT0_RFP)) | ||
225 | printk(KERN_CRIT "ep93xx_rx: buffer not done " | ||
226 | " %.8x %.8x\n", rstat0, rstat1); | ||
227 | if (!(rstat0 & RSTAT0_EOF)) | 222 | if (!(rstat0 & RSTAT0_EOF)) |
228 | printk(KERN_CRIT "ep93xx_rx: not end-of-frame " | 223 | printk(KERN_CRIT "ep93xx_rx: not end-of-frame " |
229 | " %.8x %.8x\n", rstat0, rstat1); | 224 | " %.8x %.8x\n", rstat0, rstat1); |
230 | if (!(rstat0 & RSTAT0_EOB)) | 225 | if (!(rstat0 & RSTAT0_EOB)) |
231 | printk(KERN_CRIT "ep93xx_rx: not end-of-buffer " | 226 | printk(KERN_CRIT "ep93xx_rx: not end-of-buffer " |
232 | " %.8x %.8x\n", rstat0, rstat1); | 227 | " %.8x %.8x\n", rstat0, rstat1); |
233 | if (!(rstat1 & RSTAT1_RFP)) | ||
234 | printk(KERN_CRIT "ep93xx_rx: buffer1 not done " | ||
235 | " %.8x %.8x\n", rstat0, rstat1); | ||
236 | if ((rstat1 & RSTAT1_BUFFER_INDEX) >> 16 != entry) | 228 | if ((rstat1 & RSTAT1_BUFFER_INDEX) >> 16 != entry) |
237 | printk(KERN_CRIT "ep93xx_rx: entry mismatch " | 229 | printk(KERN_CRIT "ep93xx_rx: entry mismatch " |
238 | " %.8x %.8x\n", rstat0, rstat1); | 230 | " %.8x %.8x\n", rstat0, rstat1); |
239 | 231 | ||
240 | if (!(rstat0 & RSTAT0_RWE)) { | 232 | if (!(rstat0 & RSTAT0_RWE)) { |
241 | printk(KERN_NOTICE "ep93xx_rx: receive error " | ||
242 | " %.8x %.8x\n", rstat0, rstat1); | ||
243 | |||
244 | ep->stats.rx_errors++; | 233 | ep->stats.rx_errors++; |
245 | if (rstat0 & RSTAT0_OE) | 234 | if (rstat0 & RSTAT0_OE) |
246 | ep->stats.rx_fifo_errors++; | 235 | ep->stats.rx_fifo_errors++; |
@@ -301,13 +290,8 @@ err: | |||
301 | 290 | ||
302 | static int ep93xx_have_more_rx(struct ep93xx_priv *ep) | 291 | static int ep93xx_have_more_rx(struct ep93xx_priv *ep) |
303 | { | 292 | { |
304 | struct ep93xx_rstat *rstat; | 293 | struct ep93xx_rstat *rstat = ep->descs->rstat + ep->rx_pointer; |
305 | int tail_offset; | 294 | return !!((rstat->rstat0 & RSTAT0_RFP) && (rstat->rstat1 & RSTAT1_RFP)); |
306 | |||
307 | rstat = ep->descs->rstat + ep->rx_pointer; | ||
308 | tail_offset = rdl(ep, REG_RXSTSQCURADD) - ep->descs_dma_addr; | ||
309 | |||
310 | return !((void *)rstat - (void *)ep->descs == tail_offset); | ||
311 | } | 295 | } |
312 | 296 | ||
313 | static int ep93xx_poll(struct net_device *dev, int *budget) | 297 | static int ep93xx_poll(struct net_device *dev, int *budget) |
@@ -347,7 +331,7 @@ static int ep93xx_xmit(struct sk_buff *skb, struct net_device *dev) | |||
347 | struct ep93xx_priv *ep = netdev_priv(dev); | 331 | struct ep93xx_priv *ep = netdev_priv(dev); |
348 | int entry; | 332 | int entry; |
349 | 333 | ||
350 | if (unlikely(skb->len) > MAX_PKT_SIZE) { | 334 | if (unlikely(skb->len > MAX_PKT_SIZE)) { |
351 | ep->stats.tx_dropped++; | 335 | ep->stats.tx_dropped++; |
352 | dev_kfree_skb(skb); | 336 | dev_kfree_skb(skb); |
353 | return NETDEV_TX_OK; | 337 | return NETDEV_TX_OK; |
@@ -379,10 +363,8 @@ static int ep93xx_xmit(struct sk_buff *skb, struct net_device *dev) | |||
379 | static void ep93xx_tx_complete(struct net_device *dev) | 363 | static void ep93xx_tx_complete(struct net_device *dev) |
380 | { | 364 | { |
381 | struct ep93xx_priv *ep = netdev_priv(dev); | 365 | struct ep93xx_priv *ep = netdev_priv(dev); |
382 | int tail_offset; | ||
383 | int wake; | 366 | int wake; |
384 | 367 | ||
385 | tail_offset = rdl(ep, REG_TXSTSQCURADD) - ep->descs_dma_addr; | ||
386 | wake = 0; | 368 | wake = 0; |
387 | 369 | ||
388 | spin_lock(&ep->tx_pending_lock); | 370 | spin_lock(&ep->tx_pending_lock); |
@@ -393,15 +375,13 @@ static void ep93xx_tx_complete(struct net_device *dev) | |||
393 | 375 | ||
394 | entry = ep->tx_clean_pointer; | 376 | entry = ep->tx_clean_pointer; |
395 | tstat = ep->descs->tstat + entry; | 377 | tstat = ep->descs->tstat + entry; |
396 | if ((void *)tstat - (void *)ep->descs == tail_offset) | ||
397 | break; | ||
398 | 378 | ||
399 | tstat0 = tstat->tstat0; | 379 | tstat0 = tstat->tstat0; |
380 | if (!(tstat0 & TSTAT0_TXFP)) | ||
381 | break; | ||
382 | |||
400 | tstat->tstat0 = 0; | 383 | tstat->tstat0 = 0; |
401 | 384 | ||
402 | if (!(tstat0 & TSTAT0_TXFP)) | ||
403 | printk(KERN_CRIT "ep93xx_tx_complete: buffer not done " | ||
404 | " %.8x\n", tstat0); | ||
405 | if (tstat0 & TSTAT0_FA) | 385 | if (tstat0 & TSTAT0_FA) |
406 | printk(KERN_CRIT "ep93xx_tx_complete: frame aborted " | 386 | printk(KERN_CRIT "ep93xx_tx_complete: frame aborted " |
407 | " %.8x\n", tstat0); | 387 | " %.8x\n", tstat0); |
diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c index eb7d44de59ff..4538c99733fd 100644 --- a/drivers/net/ehea/ehea_main.c +++ b/drivers/net/ehea/ehea_main.c | |||
@@ -586,8 +586,8 @@ int ehea_sense_port_attr(struct ehea_port *port) | |||
586 | u64 hret; | 586 | u64 hret; |
587 | struct hcp_ehea_port_cb0 *cb0; | 587 | struct hcp_ehea_port_cb0 *cb0; |
588 | 588 | ||
589 | cb0 = kzalloc(H_CB_ALIGNMENT, GFP_KERNEL); | 589 | cb0 = kzalloc(H_CB_ALIGNMENT, GFP_ATOMIC); /* May be called via */ |
590 | if (!cb0) { | 590 | if (!cb0) { /* ehea_neq_tasklet() */ |
591 | ehea_error("no mem for cb0"); | 591 | ehea_error("no mem for cb0"); |
592 | ret = -ENOMEM; | 592 | ret = -ENOMEM; |
593 | goto out; | 593 | goto out; |
@@ -765,8 +765,7 @@ static void ehea_parse_eqe(struct ehea_adapter *adapter, u64 eqe) | |||
765 | 765 | ||
766 | if (EHEA_BMASK_GET(NEQE_PORT_UP, eqe)) { | 766 | if (EHEA_BMASK_GET(NEQE_PORT_UP, eqe)) { |
767 | if (!netif_carrier_ok(port->netdev)) { | 767 | if (!netif_carrier_ok(port->netdev)) { |
768 | ret = ehea_sense_port_attr( | 768 | ret = ehea_sense_port_attr(port); |
769 | port); | ||
770 | if (ret) { | 769 | if (ret) { |
771 | ehea_error("failed resensing port " | 770 | ehea_error("failed resensing port " |
772 | "attributes"); | 771 | "attributes"); |
@@ -1502,7 +1501,7 @@ static void ehea_promiscuous(struct net_device *dev, int enable) | |||
1502 | if ((enable && port->promisc) || (!enable && !port->promisc)) | 1501 | if ((enable && port->promisc) || (!enable && !port->promisc)) |
1503 | return; | 1502 | return; |
1504 | 1503 | ||
1505 | cb7 = kzalloc(H_CB_ALIGNMENT, GFP_KERNEL); | 1504 | cb7 = kzalloc(H_CB_ALIGNMENT, GFP_ATOMIC); |
1506 | if (!cb7) { | 1505 | if (!cb7) { |
1507 | ehea_error("no mem for cb7"); | 1506 | ehea_error("no mem for cb7"); |
1508 | goto out; | 1507 | goto out; |
@@ -1606,7 +1605,7 @@ static void ehea_add_multicast_entry(struct ehea_port* port, u8* mc_mac_addr) | |||
1606 | struct ehea_mc_list *ehea_mcl_entry; | 1605 | struct ehea_mc_list *ehea_mcl_entry; |
1607 | u64 hret; | 1606 | u64 hret; |
1608 | 1607 | ||
1609 | ehea_mcl_entry = kzalloc(sizeof(*ehea_mcl_entry), GFP_KERNEL); | 1608 | ehea_mcl_entry = kzalloc(sizeof(*ehea_mcl_entry), GFP_ATOMIC); |
1610 | if (!ehea_mcl_entry) { | 1609 | if (!ehea_mcl_entry) { |
1611 | ehea_error("no mem for mcl_entry"); | 1610 | ehea_error("no mem for mcl_entry"); |
1612 | return; | 1611 | return; |
diff --git a/drivers/net/irda/stir4200.c b/drivers/net/irda/stir4200.c index be8a66e702b0..3b4c47875935 100644 --- a/drivers/net/irda/stir4200.c +++ b/drivers/net/irda/stir4200.c | |||
@@ -15,8 +15,7 @@ | |||
15 | * | 15 | * |
16 | * This program is free software; you can redistribute it and/or modify | 16 | * This program is free software; you can redistribute it and/or modify |
17 | * it under the terms of the GNU General Public License as published by | 17 | * it under the terms of the GNU General Public License as published by |
18 | * the Free Software Foundation; either version 2 of the License, or | 18 | * the Free Software Foundation; either version 2 of the License. |
19 | * (at your option) any later version. | ||
20 | * | 19 | * |
21 | * This program is distributed in the hope that it will be useful, | 20 | * This program is distributed in the hope that it will be useful, |
22 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 21 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c index fdbb0d7213b0..806081b59733 100644 --- a/drivers/net/myri10ge/myri10ge.c +++ b/drivers/net/myri10ge/myri10ge.c | |||
@@ -2416,7 +2416,6 @@ static void myri10ge_enable_ecrc(struct myri10ge_priv *mgp) | |||
2416 | * firmware image, and set tx.boundary to 4KB. | 2416 | * firmware image, and set tx.boundary to 4KB. |
2417 | */ | 2417 | */ |
2418 | 2418 | ||
2419 | #define PCI_DEVICE_ID_SERVERWORKS_HT2000_PCIE 0x0132 | ||
2420 | #define PCI_DEVICE_ID_INTEL_E5000_PCIE23 0x25f7 | 2419 | #define PCI_DEVICE_ID_INTEL_E5000_PCIE23 0x25f7 |
2421 | #define PCI_DEVICE_ID_INTEL_E5000_PCIE47 0x25fa | 2420 | #define PCI_DEVICE_ID_INTEL_E5000_PCIE47 0x25fa |
2422 | 2421 | ||
diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c index a231ab7d28dd..33569ec9dbfc 100644 --- a/drivers/net/s2io.c +++ b/drivers/net/s2io.c | |||
@@ -5985,6 +5985,11 @@ static int set_rxd_buffer_pointer(nic_t *sp, RxD_t *rxdp, buffAdd_t *ba, | |||
5985 | ((RxD3_t*)rxdp)->Buffer1_ptr = *temp1; | 5985 | ((RxD3_t*)rxdp)->Buffer1_ptr = *temp1; |
5986 | } else { | 5986 | } else { |
5987 | *skb = dev_alloc_skb(size); | 5987 | *skb = dev_alloc_skb(size); |
5988 | if (!(*skb)) { | ||
5989 | DBG_PRINT(ERR_DBG, "%s: dev_alloc_skb failed\n", | ||
5990 | dev->name); | ||
5991 | return -ENOMEM; | ||
5992 | } | ||
5988 | ((RxD3_t*)rxdp)->Buffer2_ptr = *temp2 = | 5993 | ((RxD3_t*)rxdp)->Buffer2_ptr = *temp2 = |
5989 | pci_map_single(sp->pdev, (*skb)->data, | 5994 | pci_map_single(sp->pdev, (*skb)->data, |
5990 | dev->mtu + 4, | 5995 | dev->mtu + 4, |
@@ -6007,7 +6012,11 @@ static int set_rxd_buffer_pointer(nic_t *sp, RxD_t *rxdp, buffAdd_t *ba, | |||
6007 | ((RxD3_t*)rxdp)->Buffer2_ptr = *temp2; | 6012 | ((RxD3_t*)rxdp)->Buffer2_ptr = *temp2; |
6008 | } else { | 6013 | } else { |
6009 | *skb = dev_alloc_skb(size); | 6014 | *skb = dev_alloc_skb(size); |
6010 | 6015 | if (!(*skb)) { | |
6016 | DBG_PRINT(ERR_DBG, "%s: dev_alloc_skb failed\n", | ||
6017 | dev->name); | ||
6018 | return -ENOMEM; | ||
6019 | } | ||
6011 | ((RxD3_t*)rxdp)->Buffer0_ptr = *temp0 = | 6020 | ((RxD3_t*)rxdp)->Buffer0_ptr = *temp0 = |
6012 | pci_map_single(sp->pdev, ba->ba_0, BUF0_LEN, | 6021 | pci_map_single(sp->pdev, ba->ba_0, BUF0_LEN, |
6013 | PCI_DMA_FROMDEVICE); | 6022 | PCI_DMA_FROMDEVICE); |
diff --git a/drivers/net/skge.c b/drivers/net/skge.c index e7e414928f89..b2949035f66a 100644 --- a/drivers/net/skge.c +++ b/drivers/net/skge.c | |||
@@ -11,8 +11,7 @@ | |||
11 | * | 11 | * |
12 | * This program is free software; you can redistribute it and/or modify | 12 | * This program is free software; you can redistribute it and/or modify |
13 | * it under the terms of the GNU General Public License as published by | 13 | * it under the terms of the GNU General Public License as published by |
14 | * the Free Software Foundation; either version 2 of the License, or | 14 | * the Free Software Foundation; either version 2 of the License. |
15 | * (at your option) any later version. | ||
16 | * | 15 | * |
17 | * This program is distributed in the hope that it will be useful, | 16 | * This program is distributed in the hope that it will be useful, |
18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c index 95efdb5bbbe1..16616f5440d0 100644 --- a/drivers/net/sky2.c +++ b/drivers/net/sky2.c | |||
@@ -10,8 +10,7 @@ | |||
10 | * | 10 | * |
11 | * This program is free software; you can redistribute it and/or modify | 11 | * This program is free software; you can redistribute it and/or modify |
12 | * it under the terms of the GNU General Public License as published by | 12 | * it under the terms of the GNU General Public License as published by |
13 | * the Free Software Foundation; either version 2 of the License, or | 13 | * the Free Software Foundation; either version 2 of the License. |
14 | * (at your option) any later version. | ||
15 | * | 14 | * |
16 | * This program is distributed in the hope that it will be useful, | 15 | * This program is distributed in the hope that it will be useful, |
17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
@@ -3239,7 +3238,11 @@ static __devinit struct net_device *sky2_init_netdev(struct sky2_hw *hw, | |||
3239 | dev->poll = sky2_poll; | 3238 | dev->poll = sky2_poll; |
3240 | dev->weight = NAPI_WEIGHT; | 3239 | dev->weight = NAPI_WEIGHT; |
3241 | #ifdef CONFIG_NET_POLL_CONTROLLER | 3240 | #ifdef CONFIG_NET_POLL_CONTROLLER |
3242 | dev->poll_controller = sky2_netpoll; | 3241 | /* Network console (only works on port 0) |
3242 | * because netpoll makes assumptions about NAPI | ||
3243 | */ | ||
3244 | if (port == 0) | ||
3245 | dev->poll_controller = sky2_netpoll; | ||
3243 | #endif | 3246 | #endif |
3244 | 3247 | ||
3245 | sky2 = netdev_priv(dev); | 3248 | sky2 = netdev_priv(dev); |
diff --git a/drivers/net/tokenring/proteon.c b/drivers/net/tokenring/proteon.c index 4f756960db2a..cb7dbb63c9d9 100644 --- a/drivers/net/tokenring/proteon.c +++ b/drivers/net/tokenring/proteon.c | |||
@@ -370,6 +370,10 @@ static int __init proteon_init(void) | |||
370 | dev->dma = dma[i]; | 370 | dev->dma = dma[i]; |
371 | pdev = platform_device_register_simple("proteon", | 371 | pdev = platform_device_register_simple("proteon", |
372 | i, NULL, 0); | 372 | i, NULL, 0); |
373 | if (IS_ERR(pdev)) { | ||
374 | free_netdev(dev); | ||
375 | continue; | ||
376 | } | ||
373 | err = setup_card(dev, &pdev->dev); | 377 | err = setup_card(dev, &pdev->dev); |
374 | if (!err) { | 378 | if (!err) { |
375 | proteon_dev[i] = pdev; | 379 | proteon_dev[i] = pdev; |
@@ -385,9 +389,10 @@ static int __init proteon_init(void) | |||
385 | /* Probe for cards. */ | 389 | /* Probe for cards. */ |
386 | if (num == 0) { | 390 | if (num == 0) { |
387 | printk(KERN_NOTICE "proteon.c: No cards found.\n"); | 391 | printk(KERN_NOTICE "proteon.c: No cards found.\n"); |
388 | return (-ENODEV); | 392 | platform_driver_unregister(&proteon_driver); |
393 | return -ENODEV; | ||
389 | } | 394 | } |
390 | return (0); | 395 | return 0; |
391 | } | 396 | } |
392 | 397 | ||
393 | static void __exit proteon_cleanup(void) | 398 | static void __exit proteon_cleanup(void) |
diff --git a/drivers/net/tokenring/skisa.c b/drivers/net/tokenring/skisa.c index d6ba41cf3110..33afea31d87b 100644 --- a/drivers/net/tokenring/skisa.c +++ b/drivers/net/tokenring/skisa.c | |||
@@ -380,6 +380,10 @@ static int __init sk_isa_init(void) | |||
380 | dev->dma = dma[i]; | 380 | dev->dma = dma[i]; |
381 | pdev = platform_device_register_simple("skisa", | 381 | pdev = platform_device_register_simple("skisa", |
382 | i, NULL, 0); | 382 | i, NULL, 0); |
383 | if (IS_ERR(pdev)) { | ||
384 | free_netdev(dev); | ||
385 | continue; | ||
386 | } | ||
383 | err = setup_card(dev, &pdev->dev); | 387 | err = setup_card(dev, &pdev->dev); |
384 | if (!err) { | 388 | if (!err) { |
385 | sk_isa_dev[i] = pdev; | 389 | sk_isa_dev[i] = pdev; |
@@ -395,9 +399,10 @@ static int __init sk_isa_init(void) | |||
395 | /* Probe for cards. */ | 399 | /* Probe for cards. */ |
396 | if (num == 0) { | 400 | if (num == 0) { |
397 | printk(KERN_NOTICE "skisa.c: No cards found.\n"); | 401 | printk(KERN_NOTICE "skisa.c: No cards found.\n"); |
398 | return (-ENODEV); | 402 | platform_driver_unregister(&sk_isa_driver); |
403 | return -ENODEV; | ||
399 | } | 404 | } |
400 | return (0); | 405 | return 0; |
401 | } | 406 | } |
402 | 407 | ||
403 | static void __exit sk_isa_cleanup(void) | 408 | static void __exit sk_isa_cleanup(void) |
diff --git a/drivers/net/wan/n2.c b/drivers/net/wan/n2.c index dcf46add3adf..5c322dfb79f6 100644 --- a/drivers/net/wan/n2.c +++ b/drivers/net/wan/n2.c | |||
@@ -500,7 +500,7 @@ static int __init n2_init(void) | |||
500 | #ifdef MODULE | 500 | #ifdef MODULE |
501 | printk(KERN_INFO "n2: no card initialized\n"); | 501 | printk(KERN_INFO "n2: no card initialized\n"); |
502 | #endif | 502 | #endif |
503 | return -ENOSYS; /* no parameters specified, abort */ | 503 | return -EINVAL; /* no parameters specified, abort */ |
504 | } | 504 | } |
505 | 505 | ||
506 | printk(KERN_INFO "%s\n", version); | 506 | printk(KERN_INFO "%s\n", version); |
@@ -538,11 +538,11 @@ static int __init n2_init(void) | |||
538 | n2_run(io, irq, ram, valid[0], valid[1]); | 538 | n2_run(io, irq, ram, valid[0], valid[1]); |
539 | 539 | ||
540 | if (*hw == '\x0') | 540 | if (*hw == '\x0') |
541 | return first_card ? 0 : -ENOSYS; | 541 | return first_card ? 0 : -EINVAL; |
542 | }while(*hw++ == ':'); | 542 | }while(*hw++ == ':'); |
543 | 543 | ||
544 | printk(KERN_ERR "n2: invalid hardware parameters\n"); | 544 | printk(KERN_ERR "n2: invalid hardware parameters\n"); |
545 | return first_card ? 0 : -ENOSYS; | 545 | return first_card ? 0 : -EINVAL; |
546 | } | 546 | } |
547 | 547 | ||
548 | 548 | ||
diff --git a/net/sched/sch_netem.c b/net/sched/sch_netem.c index ef8874babf6a..0441876aa1e7 100644 --- a/net/sched/sch_netem.c +++ b/net/sched/sch_netem.c | |||
@@ -4,7 +4,7 @@ | |||
4 | * This program is free software; you can redistribute it and/or | 4 | * This program is free software; you can redistribute it and/or |
5 | * modify it under the terms of the GNU General Public License | 5 | * modify it under the terms of the GNU General Public License |
6 | * as published by the Free Software Foundation; either version | 6 | * as published by the Free Software Foundation; either version |
7 | * 2 of the License, or (at your option) any later version. | 7 | * 2 of the License. |
8 | * | 8 | * |
9 | * Many of the algorithms and ideas for this came from | 9 | * Many of the algorithms and ideas for this came from |
10 | * NIST Net which is not copyrighted. | 10 | * NIST Net which is not copyrighted. |