diff options
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/e1000/e1000.h | 8 | ||||
-rw-r--r-- | drivers/net/e1000/e1000_ethtool.c | 24 | ||||
-rw-r--r-- | drivers/net/e1000/e1000_hw.c | 3 | ||||
-rw-r--r-- | drivers/net/e1000/e1000_hw.h | 2 | ||||
-rw-r--r-- | drivers/net/e1000/e1000_main.c | 199 | ||||
-rw-r--r-- | drivers/net/e1000/e1000_osdep.h | 2 | ||||
-rw-r--r-- | drivers/net/e1000/e1000_param.c | 3 |
7 files changed, 106 insertions, 135 deletions
diff --git a/drivers/net/e1000/e1000.h b/drivers/net/e1000/e1000.h index 19858c267532..af1e82c5b808 100644 --- a/drivers/net/e1000/e1000.h +++ b/drivers/net/e1000/e1000.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /******************************************************************************* | 1 | /******************************************************************************* |
2 | 2 | ||
3 | 3 | ||
4 | Copyright(c) 1999 - 2004 Intel Corporation. All rights reserved. | 4 | Copyright(c) 1999 - 2005 Intel Corporation. All rights reserved. |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify it | 6 | This program is free software; you can redistribute it and/or modify it |
7 | under the terms of the GNU General Public License as published by the Free | 7 | under the terms of the GNU General Public License as published by the Free |
@@ -139,9 +139,9 @@ struct e1000_adapter; | |||
139 | /* How many Rx Buffers do we bundle into one write to the hardware ? */ | 139 | /* How many Rx Buffers do we bundle into one write to the hardware ? */ |
140 | #define E1000_RX_BUFFER_WRITE 16 /* Must be power of 2 */ | 140 | #define E1000_RX_BUFFER_WRITE 16 /* Must be power of 2 */ |
141 | 141 | ||
142 | #define AUTO_ALL_MODES 0 | 142 | #define AUTO_ALL_MODES 0 |
143 | #define E1000_EEPROM_82544_APM 0x0004 | 143 | #define E1000_EEPROM_82544_APM 0x0400 |
144 | #define E1000_EEPROM_APME 0x0400 | 144 | #define E1000_EEPROM_APME 0x0400 |
145 | 145 | ||
146 | #ifndef E1000_MASTER_SLAVE | 146 | #ifndef E1000_MASTER_SLAVE |
147 | /* Switch to override PHY master/slave setting */ | 147 | /* Switch to override PHY master/slave setting */ |
diff --git a/drivers/net/e1000/e1000_ethtool.c b/drivers/net/e1000/e1000_ethtool.c index fae585453463..237247f74df4 100644 --- a/drivers/net/e1000/e1000_ethtool.c +++ b/drivers/net/e1000/e1000_ethtool.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /******************************************************************************* | 1 | /******************************************************************************* |
2 | 2 | ||
3 | 3 | ||
4 | Copyright(c) 1999 - 2004 Intel Corporation. All rights reserved. | 4 | Copyright(c) 1999 - 2005 Intel Corporation. All rights reserved. |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify it | 6 | This program is free software; you can redistribute it and/or modify it |
7 | under the terms of the GNU General Public License as published by the Free | 7 | under the terms of the GNU General Public License as published by the Free |
@@ -69,6 +69,7 @@ static const struct e1000_stats e1000_gstrings_stats[] = { | |||
69 | { "rx_crc_errors", E1000_STAT(net_stats.rx_crc_errors) }, | 69 | { "rx_crc_errors", E1000_STAT(net_stats.rx_crc_errors) }, |
70 | { "rx_frame_errors", E1000_STAT(net_stats.rx_frame_errors) }, | 70 | { "rx_frame_errors", E1000_STAT(net_stats.rx_frame_errors) }, |
71 | { "rx_fifo_errors", E1000_STAT(net_stats.rx_fifo_errors) }, | 71 | { "rx_fifo_errors", E1000_STAT(net_stats.rx_fifo_errors) }, |
72 | { "rx_no_buffer_count", E1000_STAT(stats.rnbc) }, | ||
72 | { "rx_missed_errors", E1000_STAT(net_stats.rx_missed_errors) }, | 73 | { "rx_missed_errors", E1000_STAT(net_stats.rx_missed_errors) }, |
73 | { "tx_aborted_errors", E1000_STAT(net_stats.tx_aborted_errors) }, | 74 | { "tx_aborted_errors", E1000_STAT(net_stats.tx_aborted_errors) }, |
74 | { "tx_carrier_errors", E1000_STAT(net_stats.tx_carrier_errors) }, | 75 | { "tx_carrier_errors", E1000_STAT(net_stats.tx_carrier_errors) }, |
@@ -593,7 +594,7 @@ e1000_set_ringparam(struct net_device *netdev, | |||
593 | tx_old = adapter->tx_ring; | 594 | tx_old = adapter->tx_ring; |
594 | rx_old = adapter->rx_ring; | 595 | rx_old = adapter->rx_ring; |
595 | 596 | ||
596 | if ((ring->rx_mini_pending) || (ring->rx_jumbo_pending)) | 597 | if((ring->rx_mini_pending) || (ring->rx_jumbo_pending)) |
597 | return -EINVAL; | 598 | return -EINVAL; |
598 | 599 | ||
599 | if(netif_running(adapter->netdev)) | 600 | if(netif_running(adapter->netdev)) |
@@ -784,8 +785,8 @@ e1000_intr_test(struct e1000_adapter *adapter, uint64_t *data) | |||
784 | /* Hook up test interrupt handler just for this test */ | 785 | /* Hook up test interrupt handler just for this test */ |
785 | if(!request_irq(irq, &e1000_test_intr, 0, netdev->name, netdev)) { | 786 | if(!request_irq(irq, &e1000_test_intr, 0, netdev->name, netdev)) { |
786 | shared_int = FALSE; | 787 | shared_int = FALSE; |
787 | } else if(request_irq(irq, &e1000_test_intr, SA_SHIRQ, | 788 | } else if(request_irq(irq, &e1000_test_intr, SA_SHIRQ, |
788 | netdev->name, netdev)){ | 789 | netdev->name, netdev)){ |
789 | *data = 1; | 790 | *data = 1; |
790 | return -1; | 791 | return -1; |
791 | } | 792 | } |
@@ -842,10 +843,8 @@ e1000_intr_test(struct e1000_adapter *adapter, uint64_t *data) | |||
842 | * test failed. | 843 | * test failed. |
843 | */ | 844 | */ |
844 | adapter->test_icr = 0; | 845 | adapter->test_icr = 0; |
845 | E1000_WRITE_REG(&adapter->hw, IMC, | 846 | E1000_WRITE_REG(&adapter->hw, IMC, ~mask & 0x00007FFF); |
846 | (~mask & 0x00007FFF)); | 847 | E1000_WRITE_REG(&adapter->hw, ICS, ~mask & 0x00007FFF); |
847 | E1000_WRITE_REG(&adapter->hw, ICS, | ||
848 | (~mask & 0x00007FFF)); | ||
849 | msec_delay(10); | 848 | msec_delay(10); |
850 | 849 | ||
851 | if(adapter->test_icr) { | 850 | if(adapter->test_icr) { |
@@ -1010,7 +1009,7 @@ e1000_setup_desc_rings(struct e1000_adapter *adapter) | |||
1010 | struct e1000_rx_desc *rx_desc = E1000_RX_DESC(*rxdr, i); | 1009 | struct e1000_rx_desc *rx_desc = E1000_RX_DESC(*rxdr, i); |
1011 | struct sk_buff *skb; | 1010 | struct sk_buff *skb; |
1012 | 1011 | ||
1013 | if(!(skb = alloc_skb(E1000_RXBUFFER_2048 + NET_IP_ALIGN, | 1012 | if(!(skb = alloc_skb(E1000_RXBUFFER_2048 + NET_IP_ALIGN, |
1014 | GFP_KERNEL))) { | 1013 | GFP_KERNEL))) { |
1015 | ret_val = 6; | 1014 | ret_val = 6; |
1016 | goto err_nomem; | 1015 | goto err_nomem; |
@@ -1387,13 +1386,12 @@ static int | |||
1387 | e1000_link_test(struct e1000_adapter *adapter, uint64_t *data) | 1386 | e1000_link_test(struct e1000_adapter *adapter, uint64_t *data) |
1388 | { | 1387 | { |
1389 | *data = 0; | 1388 | *data = 0; |
1390 | |||
1391 | if (adapter->hw.media_type == e1000_media_type_internal_serdes) { | 1389 | if (adapter->hw.media_type == e1000_media_type_internal_serdes) { |
1392 | int i = 0; | 1390 | int i = 0; |
1393 | adapter->hw.serdes_link_down = TRUE; | 1391 | adapter->hw.serdes_link_down = TRUE; |
1394 | 1392 | ||
1395 | /* on some blade server designs link establishment */ | 1393 | /* On some blade server designs, link establishment |
1396 | /* could take as long as 2-3 minutes. */ | 1394 | * could take as long as 2-3 minutes */ |
1397 | do { | 1395 | do { |
1398 | e1000_check_for_link(&adapter->hw); | 1396 | e1000_check_for_link(&adapter->hw); |
1399 | if (adapter->hw.serdes_link_down == FALSE) | 1397 | if (adapter->hw.serdes_link_down == FALSE) |
@@ -1401,7 +1399,7 @@ e1000_link_test(struct e1000_adapter *adapter, uint64_t *data) | |||
1401 | msec_delay(20); | 1399 | msec_delay(20); |
1402 | } while (i++ < 3750); | 1400 | } while (i++ < 3750); |
1403 | 1401 | ||
1404 | *data = 1; | 1402 | *data = 1; |
1405 | } else { | 1403 | } else { |
1406 | e1000_check_for_link(&adapter->hw); | 1404 | e1000_check_for_link(&adapter->hw); |
1407 | if(adapter->hw.autoneg) /* if auto_neg is set wait for it */ | 1405 | if(adapter->hw.autoneg) /* if auto_neg is set wait for it */ |
diff --git a/drivers/net/e1000/e1000_hw.c b/drivers/net/e1000/e1000_hw.c index b7a7ceb67f47..723589b28be5 100644 --- a/drivers/net/e1000/e1000_hw.c +++ b/drivers/net/e1000/e1000_hw.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /******************************************************************************* | 1 | /******************************************************************************* |
2 | 2 | ||
3 | 3 | ||
4 | Copyright(c) 1999 - 2004 Intel Corporation. All rights reserved. | 4 | Copyright(c) 1999 - 2005 Intel Corporation. All rights reserved. |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify it | 6 | This program is free software; you can redistribute it and/or modify it |
7 | under the terms of the GNU General Public License as published by the Free | 7 | under the terms of the GNU General Public License as published by the Free |
@@ -144,7 +144,6 @@ e1000_phy_init_script(struct e1000_hw *hw) | |||
144 | 144 | ||
145 | DEBUGFUNC("e1000_phy_init_script"); | 145 | DEBUGFUNC("e1000_phy_init_script"); |
146 | 146 | ||
147 | |||
148 | if(hw->phy_init_script) { | 147 | if(hw->phy_init_script) { |
149 | msec_delay(20); | 148 | msec_delay(20); |
150 | 149 | ||
diff --git a/drivers/net/e1000/e1000_hw.h b/drivers/net/e1000/e1000_hw.h index 1573f608fb68..a0263ee96c6b 100644 --- a/drivers/net/e1000/e1000_hw.h +++ b/drivers/net/e1000/e1000_hw.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /******************************************************************************* | 1 | /******************************************************************************* |
2 | 2 | ||
3 | 3 | ||
4 | Copyright(c) 1999 - 2004 Intel Corporation. All rights reserved. | 4 | Copyright(c) 1999 - 2005 Intel Corporation. All rights reserved. |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify it | 6 | This program is free software; you can redistribute it and/or modify it |
7 | under the terms of the GNU General Public License as published by the Free | 7 | under the terms of the GNU General Public License as published by the Free |
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c index 24d96c02b509..325495b8b60c 100644 --- a/drivers/net/e1000/e1000_main.c +++ b/drivers/net/e1000/e1000_main.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /******************************************************************************* | 1 | /******************************************************************************* |
2 | 2 | ||
3 | 3 | ||
4 | Copyright(c) 1999 - 2004 Intel Corporation. All rights reserved. | 4 | Copyright(c) 1999 - 2005 Intel Corporation. All rights reserved. |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify it | 6 | This program is free software; you can redistribute it and/or modify it |
7 | under the terms of the GNU General Public License as published by the Free | 7 | under the terms of the GNU General Public License as published by the Free |
@@ -29,33 +29,9 @@ | |||
29 | #include "e1000.h" | 29 | #include "e1000.h" |
30 | 30 | ||
31 | /* Change Log | 31 | /* Change Log |
32 | * 5.3.12 6/7/04 | 32 | * 6.0.44+ 2/15/05 |
33 | * - kcompat NETIF_MSG for older kernels (2.4.9) <sean.p.mcdermott@intel.com> | 33 | * o applied Anton's patch to resolve tx hang in hardware |
34 | * - if_mii support and associated kcompat for older kernels | 34 | * o Applied Andrew Mortons patch - e1000 stops working after resume |
35 | * - More errlogging support from Jon Mason <jonmason@us.ibm.com> | ||
36 | * - Fix TSO issues on PPC64 machines -- Jon Mason <jonmason@us.ibm.com> | ||
37 | * | ||
38 | * 5.7.1 12/16/04 | ||
39 | * - Resurrect 82547EI/GI related fix in e1000_intr to avoid deadlocks. This | ||
40 | * fix was removed as it caused system instability. The suspected cause of | ||
41 | * this is the called to e1000_irq_disable in e1000_intr. Inlined the | ||
42 | * required piece of e1000_irq_disable into e1000_intr - Anton Blanchard | ||
43 | * 5.7.0 12/10/04 | ||
44 | * - include fix to the condition that determines when to quit NAPI - Robert Olsson | ||
45 | * - use netif_poll_{disable/enable} to synchronize between NAPI and i/f up/down | ||
46 | * 5.6.5 11/01/04 | ||
47 | * - Enabling NETIF_F_SG without checksum offload is illegal - | ||
48 | John Mason <jdmason@us.ibm.com> | ||
49 | * 5.6.3 10/26/04 | ||
50 | * - Remove redundant initialization - Jamal Hadi | ||
51 | * - Reset buffer_info->dma in tx resource cleanup logic | ||
52 | * 5.6.2 10/12/04 | ||
53 | * - Avoid filling tx_ring completely - shemminger@osdl.org | ||
54 | * - Replace schedule_timeout() with msleep()/msleep_interruptible() - | ||
55 | * nacc@us.ibm.com | ||
56 | * - Sparse cleanup - shemminger@osdl.org | ||
57 | * - Fix tx resource cleanup logic | ||
58 | * - LLTX support - ak@suse.de and hadi@cyberus.ca | ||
59 | */ | 35 | */ |
60 | 36 | ||
61 | char e1000_driver_name[] = "e1000"; | 37 | char e1000_driver_name[] = "e1000"; |
@@ -65,7 +41,7 @@ char e1000_driver_string[] = "Intel(R) PRO/1000 Network Driver"; | |||
65 | #else | 41 | #else |
66 | #define DRIVERNAPI "-NAPI" | 42 | #define DRIVERNAPI "-NAPI" |
67 | #endif | 43 | #endif |
68 | #define DRV_VERSION "5.7.6-k2"DRIVERNAPI | 44 | #define DRV_VERSION "6.0.54-k2"DRIVERNAPI |
69 | char e1000_driver_version[] = DRV_VERSION; | 45 | char e1000_driver_version[] = DRV_VERSION; |
70 | char e1000_copyright[] = "Copyright (c) 1999-2004 Intel Corporation."; | 46 | char e1000_copyright[] = "Copyright (c) 1999-2004 Intel Corporation."; |
71 | 47 | ||
@@ -96,6 +72,7 @@ static struct pci_device_id e1000_pci_tbl[] = { | |||
96 | INTEL_E1000_ETHERNET_DEVICE(0x1017), | 72 | INTEL_E1000_ETHERNET_DEVICE(0x1017), |
97 | INTEL_E1000_ETHERNET_DEVICE(0x1018), | 73 | INTEL_E1000_ETHERNET_DEVICE(0x1018), |
98 | INTEL_E1000_ETHERNET_DEVICE(0x1019), | 74 | INTEL_E1000_ETHERNET_DEVICE(0x1019), |
75 | INTEL_E1000_ETHERNET_DEVICE(0x101A), | ||
99 | INTEL_E1000_ETHERNET_DEVICE(0x101D), | 76 | INTEL_E1000_ETHERNET_DEVICE(0x101D), |
100 | INTEL_E1000_ETHERNET_DEVICE(0x101E), | 77 | INTEL_E1000_ETHERNET_DEVICE(0x101E), |
101 | INTEL_E1000_ETHERNET_DEVICE(0x1026), | 78 | INTEL_E1000_ETHERNET_DEVICE(0x1026), |
@@ -110,6 +87,9 @@ static struct pci_device_id e1000_pci_tbl[] = { | |||
110 | INTEL_E1000_ETHERNET_DEVICE(0x107B), | 87 | INTEL_E1000_ETHERNET_DEVICE(0x107B), |
111 | INTEL_E1000_ETHERNET_DEVICE(0x107C), | 88 | INTEL_E1000_ETHERNET_DEVICE(0x107C), |
112 | INTEL_E1000_ETHERNET_DEVICE(0x108A), | 89 | INTEL_E1000_ETHERNET_DEVICE(0x108A), |
90 | INTEL_E1000_ETHERNET_DEVICE(0x108B), | ||
91 | INTEL_E1000_ETHERNET_DEVICE(0x108C), | ||
92 | INTEL_E1000_ETHERNET_DEVICE(0x1099), | ||
113 | /* required last entry */ | 93 | /* required last entry */ |
114 | {0,} | 94 | {0,} |
115 | }; | 95 | }; |
@@ -350,8 +330,11 @@ e1000_up(struct e1000_adapter *adapter) | |||
350 | #endif | 330 | #endif |
351 | if((err = request_irq(adapter->pdev->irq, &e1000_intr, | 331 | if((err = request_irq(adapter->pdev->irq, &e1000_intr, |
352 | SA_SHIRQ | SA_SAMPLE_RANDOM, | 332 | SA_SHIRQ | SA_SAMPLE_RANDOM, |
353 | netdev->name, netdev))) | 333 | netdev->name, netdev))) { |
334 | DPRINTK(PROBE, ERR, | ||
335 | "Unable to allocate interrupt Error: %d\n", err); | ||
354 | return err; | 336 | return err; |
337 | } | ||
355 | 338 | ||
356 | mod_timer(&adapter->watchdog_timer, jiffies); | 339 | mod_timer(&adapter->watchdog_timer, jiffies); |
357 | 340 | ||
@@ -636,7 +619,7 @@ e1000_probe(struct pci_dev *pdev, | |||
636 | 619 | ||
637 | /* copy the MAC address out of the EEPROM */ | 620 | /* copy the MAC address out of the EEPROM */ |
638 | 621 | ||
639 | if (e1000_read_mac_addr(&adapter->hw)) | 622 | if(e1000_read_mac_addr(&adapter->hw)) |
640 | DPRINTK(PROBE, ERR, "EEPROM Read Error\n"); | 623 | DPRINTK(PROBE, ERR, "EEPROM Read Error\n"); |
641 | memcpy(netdev->dev_addr, adapter->hw.mac_addr, netdev->addr_len); | 624 | memcpy(netdev->dev_addr, adapter->hw.mac_addr, netdev->addr_len); |
642 | 625 | ||
@@ -963,12 +946,10 @@ e1000_check_64k_bound(struct e1000_adapter *adapter, | |||
963 | unsigned long begin = (unsigned long) start; | 946 | unsigned long begin = (unsigned long) start; |
964 | unsigned long end = begin + len; | 947 | unsigned long end = begin + len; |
965 | 948 | ||
966 | /* first rev 82545 and 82546 need to not allow any memory | 949 | /* First rev 82545 and 82546 need to not allow any memory |
967 | * write location to cross a 64k boundary due to errata 23 */ | 950 | * write location to cross 64k boundary due to errata 23 */ |
968 | if (adapter->hw.mac_type == e1000_82545 || | 951 | if (adapter->hw.mac_type == e1000_82545 || |
969 | adapter->hw.mac_type == e1000_82546 ) { | 952 | adapter->hw.mac_type == e1000_82546) { |
970 | |||
971 | /* check buffer doesn't cross 64kB */ | ||
972 | return ((begin ^ (end - 1)) >> 16) != 0 ? FALSE : TRUE; | 953 | return ((begin ^ (end - 1)) >> 16) != 0 ? FALSE : TRUE; |
973 | } | 954 | } |
974 | 955 | ||
@@ -992,8 +973,8 @@ e1000_setup_tx_resources(struct e1000_adapter *adapter) | |||
992 | size = sizeof(struct e1000_buffer) * txdr->count; | 973 | size = sizeof(struct e1000_buffer) * txdr->count; |
993 | txdr->buffer_info = vmalloc(size); | 974 | txdr->buffer_info = vmalloc(size); |
994 | if(!txdr->buffer_info) { | 975 | if(!txdr->buffer_info) { |
995 | DPRINTK(PROBE, ERR, | 976 | DPRINTK(PROBE, ERR, |
996 | "Unable to Allocate Memory for the Transmit descriptor ring\n"); | 977 | "Unable to allocate memory for the transmit descriptor ring\n"); |
997 | return -ENOMEM; | 978 | return -ENOMEM; |
998 | } | 979 | } |
999 | memset(txdr->buffer_info, 0, size); | 980 | memset(txdr->buffer_info, 0, size); |
@@ -1006,38 +987,38 @@ e1000_setup_tx_resources(struct e1000_adapter *adapter) | |||
1006 | txdr->desc = pci_alloc_consistent(pdev, txdr->size, &txdr->dma); | 987 | txdr->desc = pci_alloc_consistent(pdev, txdr->size, &txdr->dma); |
1007 | if(!txdr->desc) { | 988 | if(!txdr->desc) { |
1008 | setup_tx_desc_die: | 989 | setup_tx_desc_die: |
1009 | DPRINTK(PROBE, ERR, | ||
1010 | "Unable to Allocate Memory for the Transmit descriptor ring\n"); | ||
1011 | vfree(txdr->buffer_info); | 990 | vfree(txdr->buffer_info); |
991 | DPRINTK(PROBE, ERR, | ||
992 | "Unable to allocate memory for the transmit descriptor ring\n"); | ||
1012 | return -ENOMEM; | 993 | return -ENOMEM; |
1013 | } | 994 | } |
1014 | 995 | ||
1015 | /* fix for errata 23, cant cross 64kB boundary */ | 996 | /* Fix for errata 23, can't cross 64kB boundary */ |
1016 | if (!e1000_check_64k_bound(adapter, txdr->desc, txdr->size)) { | 997 | if (!e1000_check_64k_bound(adapter, txdr->desc, txdr->size)) { |
1017 | void *olddesc = txdr->desc; | 998 | void *olddesc = txdr->desc; |
1018 | dma_addr_t olddma = txdr->dma; | 999 | dma_addr_t olddma = txdr->dma; |
1019 | DPRINTK(TX_ERR,ERR,"txdr align check failed: %u bytes at %p\n", | 1000 | DPRINTK(TX_ERR, ERR, "txdr align check failed: %u bytes " |
1020 | txdr->size, txdr->desc); | 1001 | "at %p\n", txdr->size, txdr->desc); |
1021 | /* try again, without freeing the previous */ | 1002 | /* Try again, without freeing the previous */ |
1022 | txdr->desc = pci_alloc_consistent(pdev, txdr->size, &txdr->dma); | 1003 | txdr->desc = pci_alloc_consistent(pdev, txdr->size, &txdr->dma); |
1023 | /* failed allocation, critial failure */ | ||
1024 | if(!txdr->desc) { | 1004 | if(!txdr->desc) { |
1005 | /* Failed allocation, critical failure */ | ||
1025 | pci_free_consistent(pdev, txdr->size, olddesc, olddma); | 1006 | pci_free_consistent(pdev, txdr->size, olddesc, olddma); |
1026 | goto setup_tx_desc_die; | 1007 | goto setup_tx_desc_die; |
1027 | } | 1008 | } |
1028 | 1009 | ||
1029 | if (!e1000_check_64k_bound(adapter, txdr->desc, txdr->size)) { | 1010 | if (!e1000_check_64k_bound(adapter, txdr->desc, txdr->size)) { |
1030 | /* give up */ | 1011 | /* give up */ |
1031 | pci_free_consistent(pdev, txdr->size, | 1012 | pci_free_consistent(pdev, txdr->size, txdr->desc, |
1032 | txdr->desc, txdr->dma); | 1013 | txdr->dma); |
1033 | pci_free_consistent(pdev, txdr->size, olddesc, olddma); | 1014 | pci_free_consistent(pdev, txdr->size, olddesc, olddma); |
1034 | DPRINTK(PROBE, ERR, | 1015 | DPRINTK(PROBE, ERR, |
1035 | "Unable to Allocate aligned Memory for the Transmit" | 1016 | "Unable to allocate aligned memory " |
1036 | " descriptor ring\n"); | 1017 | "for the transmit descriptor ring\n"); |
1037 | vfree(txdr->buffer_info); | 1018 | vfree(txdr->buffer_info); |
1038 | return -ENOMEM; | 1019 | return -ENOMEM; |
1039 | } else { | 1020 | } else { |
1040 | /* free old, move on with the new one since its okay */ | 1021 | /* Free old allocation, new allocation was successful */ |
1041 | pci_free_consistent(pdev, txdr->size, olddesc, olddma); | 1022 | pci_free_consistent(pdev, txdr->size, olddesc, olddma); |
1042 | } | 1023 | } |
1043 | } | 1024 | } |
@@ -1144,8 +1125,8 @@ e1000_setup_rx_resources(struct e1000_adapter *adapter) | |||
1144 | size = sizeof(struct e1000_buffer) * rxdr->count; | 1125 | size = sizeof(struct e1000_buffer) * rxdr->count; |
1145 | rxdr->buffer_info = vmalloc(size); | 1126 | rxdr->buffer_info = vmalloc(size); |
1146 | if(!rxdr->buffer_info) { | 1127 | if(!rxdr->buffer_info) { |
1147 | DPRINTK(PROBE, ERR, | 1128 | DPRINTK(PROBE, ERR, |
1148 | "Unable to Allocate Memory for the Recieve descriptor ring\n"); | 1129 | "Unable to allocate memory for the receive descriptor ring\n"); |
1149 | return -ENOMEM; | 1130 | return -ENOMEM; |
1150 | } | 1131 | } |
1151 | memset(rxdr->buffer_info, 0, size); | 1132 | memset(rxdr->buffer_info, 0, size); |
@@ -1185,43 +1166,42 @@ e1000_setup_rx_resources(struct e1000_adapter *adapter) | |||
1185 | 1166 | ||
1186 | if(!rxdr->desc) { | 1167 | if(!rxdr->desc) { |
1187 | setup_rx_desc_die: | 1168 | setup_rx_desc_die: |
1188 | DPRINTK(PROBE, ERR, | ||
1189 | "Unble to Allocate Memory for the Recieve descriptor ring\n"); | ||
1190 | vfree(rxdr->buffer_info); | 1169 | vfree(rxdr->buffer_info); |
1191 | kfree(rxdr->ps_page); | 1170 | kfree(rxdr->ps_page); |
1192 | kfree(rxdr->ps_page_dma); | 1171 | kfree(rxdr->ps_page_dma); |
1172 | DPRINTK(PROBE, ERR, | ||
1173 | "Unable to allocate memory for the receive descriptor ring\n"); | ||
1193 | return -ENOMEM; | 1174 | return -ENOMEM; |
1194 | } | 1175 | } |
1195 | 1176 | ||
1196 | /* fix for errata 23, cant cross 64kB boundary */ | 1177 | /* Fix for errata 23, can't cross 64kB boundary */ |
1197 | if (!e1000_check_64k_bound(adapter, rxdr->desc, rxdr->size)) { | 1178 | if (!e1000_check_64k_bound(adapter, rxdr->desc, rxdr->size)) { |
1198 | void *olddesc = rxdr->desc; | 1179 | void *olddesc = rxdr->desc; |
1199 | dma_addr_t olddma = rxdr->dma; | 1180 | dma_addr_t olddma = rxdr->dma; |
1200 | DPRINTK(RX_ERR,ERR, | 1181 | DPRINTK(RX_ERR, ERR, "rxdr align check failed: %u bytes " |
1201 | "rxdr align check failed: %u bytes at %p\n", | 1182 | "at %p\n", rxdr->size, rxdr->desc); |
1202 | rxdr->size, rxdr->desc); | 1183 | /* Try again, without freeing the previous */ |
1203 | /* try again, without freeing the previous */ | ||
1204 | rxdr->desc = pci_alloc_consistent(pdev, rxdr->size, &rxdr->dma); | 1184 | rxdr->desc = pci_alloc_consistent(pdev, rxdr->size, &rxdr->dma); |
1205 | /* failed allocation, critial failure */ | ||
1206 | if(!rxdr->desc) { | 1185 | if(!rxdr->desc) { |
1186 | /* Failed allocation, critical failure */ | ||
1207 | pci_free_consistent(pdev, rxdr->size, olddesc, olddma); | 1187 | pci_free_consistent(pdev, rxdr->size, olddesc, olddma); |
1208 | goto setup_rx_desc_die; | 1188 | goto setup_rx_desc_die; |
1209 | } | 1189 | } |
1210 | 1190 | ||
1211 | if (!e1000_check_64k_bound(adapter, rxdr->desc, rxdr->size)) { | 1191 | if (!e1000_check_64k_bound(adapter, rxdr->desc, rxdr->size)) { |
1212 | /* give up */ | 1192 | /* give up */ |
1213 | pci_free_consistent(pdev, rxdr->size, | 1193 | pci_free_consistent(pdev, rxdr->size, rxdr->desc, |
1214 | rxdr->desc, rxdr->dma); | 1194 | rxdr->dma); |
1215 | pci_free_consistent(pdev, rxdr->size, olddesc, olddma); | 1195 | pci_free_consistent(pdev, rxdr->size, olddesc, olddma); |
1216 | DPRINTK(PROBE, ERR, | 1196 | DPRINTK(PROBE, ERR, |
1217 | "Unable to Allocate aligned Memory for the" | 1197 | "Unable to allocate aligned memory " |
1218 | " Receive descriptor ring\n"); | 1198 | "for the receive descriptor ring\n"); |
1219 | vfree(rxdr->buffer_info); | 1199 | vfree(rxdr->buffer_info); |
1220 | kfree(rxdr->ps_page); | 1200 | kfree(rxdr->ps_page); |
1221 | kfree(rxdr->ps_page_dma); | 1201 | kfree(rxdr->ps_page_dma); |
1222 | return -ENOMEM; | 1202 | return -ENOMEM; |
1223 | } else { | 1203 | } else { |
1224 | /* free old, move on with the new one since its okay */ | 1204 | /* Free old allocation, new allocation was successful */ |
1225 | pci_free_consistent(pdev, rxdr->size, olddesc, olddma); | 1205 | pci_free_consistent(pdev, rxdr->size, olddesc, olddma); |
1226 | } | 1206 | } |
1227 | } | 1207 | } |
@@ -1234,7 +1214,7 @@ setup_rx_desc_die: | |||
1234 | } | 1214 | } |
1235 | 1215 | ||
1236 | /** | 1216 | /** |
1237 | * e1000_setup_rctl - configure the receive control register | 1217 | * e1000_setup_rctl - configure the receive control registers |
1238 | * @adapter: Board private structure | 1218 | * @adapter: Board private structure |
1239 | **/ | 1219 | **/ |
1240 | 1220 | ||
@@ -1426,13 +1406,11 @@ static inline void | |||
1426 | e1000_unmap_and_free_tx_resource(struct e1000_adapter *adapter, | 1406 | e1000_unmap_and_free_tx_resource(struct e1000_adapter *adapter, |
1427 | struct e1000_buffer *buffer_info) | 1407 | struct e1000_buffer *buffer_info) |
1428 | { | 1408 | { |
1429 | struct pci_dev *pdev = adapter->pdev; | ||
1430 | |||
1431 | if(buffer_info->dma) { | 1409 | if(buffer_info->dma) { |
1432 | pci_unmap_page(pdev, | 1410 | pci_unmap_page(adapter->pdev, |
1433 | buffer_info->dma, | 1411 | buffer_info->dma, |
1434 | buffer_info->length, | 1412 | buffer_info->length, |
1435 | PCI_DMA_TODEVICE); | 1413 | PCI_DMA_TODEVICE); |
1436 | buffer_info->dma = 0; | 1414 | buffer_info->dma = 0; |
1437 | } | 1415 | } |
1438 | if(buffer_info->skb) { | 1416 | if(buffer_info->skb) { |
@@ -1457,7 +1435,7 @@ e1000_clean_tx_ring(struct e1000_adapter *adapter) | |||
1457 | /* Free all the Tx ring sk_buffs */ | 1435 | /* Free all the Tx ring sk_buffs */ |
1458 | 1436 | ||
1459 | if (likely(adapter->previous_buffer_info.skb != NULL)) { | 1437 | if (likely(adapter->previous_buffer_info.skb != NULL)) { |
1460 | e1000_unmap_and_free_tx_resource(adapter, | 1438 | e1000_unmap_and_free_tx_resource(adapter, |
1461 | &adapter->previous_buffer_info); | 1439 | &adapter->previous_buffer_info); |
1462 | } | 1440 | } |
1463 | 1441 | ||
@@ -1659,15 +1637,15 @@ e1000_set_multi(struct net_device *netdev) | |||
1659 | struct e1000_adapter *adapter = netdev->priv; | 1637 | struct e1000_adapter *adapter = netdev->priv; |
1660 | struct e1000_hw *hw = &adapter->hw; | 1638 | struct e1000_hw *hw = &adapter->hw; |
1661 | struct dev_mc_list *mc_ptr; | 1639 | struct dev_mc_list *mc_ptr; |
1640 | unsigned long flags; | ||
1662 | uint32_t rctl; | 1641 | uint32_t rctl; |
1663 | uint32_t hash_value; | 1642 | uint32_t hash_value; |
1664 | int i; | 1643 | int i; |
1665 | unsigned long flags; | ||
1666 | |||
1667 | /* Check for Promiscuous and All Multicast modes */ | ||
1668 | 1644 | ||
1669 | spin_lock_irqsave(&adapter->tx_lock, flags); | 1645 | spin_lock_irqsave(&adapter->tx_lock, flags); |
1670 | 1646 | ||
1647 | /* Check for Promiscuous and All Multicast modes */ | ||
1648 | |||
1671 | rctl = E1000_READ_REG(hw, RCTL); | 1649 | rctl = E1000_READ_REG(hw, RCTL); |
1672 | 1650 | ||
1673 | if(netdev->flags & IFF_PROMISC) { | 1651 | if(netdev->flags & IFF_PROMISC) { |
@@ -1874,7 +1852,7 @@ e1000_watchdog_task(struct e1000_adapter *adapter) | |||
1874 | /* Cause software interrupt to ensure rx ring is cleaned */ | 1852 | /* Cause software interrupt to ensure rx ring is cleaned */ |
1875 | E1000_WRITE_REG(&adapter->hw, ICS, E1000_ICS_RXDMT0); | 1853 | E1000_WRITE_REG(&adapter->hw, ICS, E1000_ICS_RXDMT0); |
1876 | 1854 | ||
1877 | /* Force detection of hung controller every watchdog period*/ | 1855 | /* Force detection of hung controller every watchdog period */ |
1878 | adapter->detect_tx_hung = TRUE; | 1856 | adapter->detect_tx_hung = TRUE; |
1879 | 1857 | ||
1880 | /* Reset the timer */ | 1858 | /* Reset the timer */ |
@@ -2255,7 +2233,7 @@ e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev) | |||
2255 | 2233 | ||
2256 | #ifdef NETIF_F_TSO | 2234 | #ifdef NETIF_F_TSO |
2257 | mss = skb_shinfo(skb)->tso_size; | 2235 | mss = skb_shinfo(skb)->tso_size; |
2258 | /* The controller does a simple calculation to | 2236 | /* The controller does a simple calculation to |
2259 | * make sure there is enough room in the FIFO before | 2237 | * make sure there is enough room in the FIFO before |
2260 | * initiating the DMA for each buffer. The calc is: | 2238 | * initiating the DMA for each buffer. The calc is: |
2261 | * 4 = ceil(buffer len/mss). To make sure we don't | 2239 | * 4 = ceil(buffer len/mss). To make sure we don't |
@@ -2268,7 +2246,7 @@ e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev) | |||
2268 | 2246 | ||
2269 | if((mss) || (skb->ip_summed == CHECKSUM_HW)) | 2247 | if((mss) || (skb->ip_summed == CHECKSUM_HW)) |
2270 | count++; | 2248 | count++; |
2271 | count++; /* for sentinel desc */ | 2249 | count++; |
2272 | #else | 2250 | #else |
2273 | if(skb->ip_summed == CHECKSUM_HW) | 2251 | if(skb->ip_summed == CHECKSUM_HW) |
2274 | count++; | 2252 | count++; |
@@ -2658,7 +2636,7 @@ e1000_intr(int irq, void *data, struct pt_regs *regs) | |||
2658 | */ | 2636 | */ |
2659 | if(hw->mac_type == e1000_82547 || hw->mac_type == e1000_82547_rev_2){ | 2637 | if(hw->mac_type == e1000_82547 || hw->mac_type == e1000_82547_rev_2){ |
2660 | atomic_inc(&adapter->irq_sem); | 2638 | atomic_inc(&adapter->irq_sem); |
2661 | E1000_WRITE_REG(&adapter->hw, IMC, ~0); | 2639 | E1000_WRITE_REG(hw, IMC, ~0); |
2662 | } | 2640 | } |
2663 | 2641 | ||
2664 | for(i = 0; i < E1000_MAX_INTR; i++) | 2642 | for(i = 0; i < E1000_MAX_INTR; i++) |
@@ -2686,7 +2664,7 @@ e1000_clean(struct net_device *netdev, int *budget) | |||
2686 | int work_to_do = min(*budget, netdev->quota); | 2664 | int work_to_do = min(*budget, netdev->quota); |
2687 | int tx_cleaned; | 2665 | int tx_cleaned; |
2688 | int work_done = 0; | 2666 | int work_done = 0; |
2689 | 2667 | ||
2690 | tx_cleaned = e1000_clean_tx_irq(adapter); | 2668 | tx_cleaned = e1000_clean_tx_irq(adapter); |
2691 | adapter->clean_rx(adapter, &work_done, work_to_do); | 2669 | adapter->clean_rx(adapter, &work_done, work_to_do); |
2692 | 2670 | ||
@@ -2776,9 +2754,9 @@ e1000_clean_tx_irq(struct e1000_adapter *adapter) | |||
2776 | netif_wake_queue(netdev); | 2754 | netif_wake_queue(netdev); |
2777 | 2755 | ||
2778 | spin_unlock(&adapter->tx_lock); | 2756 | spin_unlock(&adapter->tx_lock); |
2779 | |||
2780 | if(adapter->detect_tx_hung) { | 2757 | if(adapter->detect_tx_hung) { |
2781 | /* detect a transmit hang in hardware, this serializes the | 2758 | |
2759 | /* Detect a transmit hang in hardware, this serializes the | ||
2782 | * check with the clearing of time_stamp and movement of i */ | 2760 | * check with the clearing of time_stamp and movement of i */ |
2783 | adapter->detect_tx_hung = FALSE; | 2761 | adapter->detect_tx_hung = FALSE; |
2784 | if (tx_ring->buffer_info[i].dma && | 2762 | if (tx_ring->buffer_info[i].dma && |
@@ -2923,7 +2901,7 @@ e1000_clean_rx_irq(struct e1000_adapter *adapter) | |||
2923 | if(unlikely(!(rx_desc->status & E1000_RXD_STAT_EOP))) { | 2901 | if(unlikely(!(rx_desc->status & E1000_RXD_STAT_EOP))) { |
2924 | /* All receives must fit into a single buffer */ | 2902 | /* All receives must fit into a single buffer */ |
2925 | E1000_DBG("%s: Receive packet consumed multiple" | 2903 | E1000_DBG("%s: Receive packet consumed multiple" |
2926 | " buffers\n", netdev->name); | 2904 | " buffers\n", netdev->name); |
2927 | dev_kfree_skb_irq(skb); | 2905 | dev_kfree_skb_irq(skb); |
2928 | goto next_desc; | 2906 | goto next_desc; |
2929 | } | 2907 | } |
@@ -3130,43 +3108,43 @@ e1000_alloc_rx_buffers(struct e1000_adapter *adapter) | |||
3130 | struct e1000_rx_desc *rx_desc; | 3108 | struct e1000_rx_desc *rx_desc; |
3131 | struct e1000_buffer *buffer_info; | 3109 | struct e1000_buffer *buffer_info; |
3132 | struct sk_buff *skb; | 3110 | struct sk_buff *skb; |
3133 | unsigned int i, bufsz; | 3111 | unsigned int i; |
3112 | unsigned int bufsz = adapter->rx_buffer_len + NET_IP_ALIGN; | ||
3134 | 3113 | ||
3135 | i = rx_ring->next_to_use; | 3114 | i = rx_ring->next_to_use; |
3136 | buffer_info = &rx_ring->buffer_info[i]; | 3115 | buffer_info = &rx_ring->buffer_info[i]; |
3137 | 3116 | ||
3138 | while(!buffer_info->skb) { | 3117 | while(!buffer_info->skb) { |
3139 | bufsz = adapter->rx_buffer_len + NET_IP_ALIGN; | ||
3140 | |||
3141 | skb = dev_alloc_skb(bufsz); | 3118 | skb = dev_alloc_skb(bufsz); |
3119 | |||
3142 | if(unlikely(!skb)) { | 3120 | if(unlikely(!skb)) { |
3143 | /* Better luck next round */ | 3121 | /* Better luck next round */ |
3144 | break; | 3122 | break; |
3145 | } | 3123 | } |
3146 | 3124 | ||
3147 | /* fix for errata 23, cant cross 64kB boundary */ | 3125 | /* Fix for errata 23, can't cross 64kB boundary */ |
3148 | if (!e1000_check_64k_bound(adapter, skb->data, bufsz)) { | 3126 | if (!e1000_check_64k_bound(adapter, skb->data, bufsz)) { |
3149 | struct sk_buff *oldskb = skb; | 3127 | struct sk_buff *oldskb = skb; |
3150 | DPRINTK(RX_ERR,ERR, | 3128 | DPRINTK(RX_ERR, ERR, "skb align check failed: %u bytes " |
3151 | "skb align check failed: %u bytes at %p\n", | 3129 | "at %p\n", bufsz, skb->data); |
3152 | bufsz, skb->data); | 3130 | /* Try again, without freeing the previous */ |
3153 | /* try again, without freeing the previous */ | ||
3154 | skb = dev_alloc_skb(bufsz); | 3131 | skb = dev_alloc_skb(bufsz); |
3132 | /* Failed allocation, critical failure */ | ||
3155 | if (!skb) { | 3133 | if (!skb) { |
3156 | dev_kfree_skb(oldskb); | 3134 | dev_kfree_skb(oldskb); |
3157 | break; | 3135 | break; |
3158 | } | 3136 | } |
3137 | |||
3159 | if (!e1000_check_64k_bound(adapter, skb->data, bufsz)) { | 3138 | if (!e1000_check_64k_bound(adapter, skb->data, bufsz)) { |
3160 | /* give up */ | 3139 | /* give up */ |
3161 | dev_kfree_skb(skb); | 3140 | dev_kfree_skb(skb); |
3162 | dev_kfree_skb(oldskb); | 3141 | dev_kfree_skb(oldskb); |
3163 | break; /* while !buffer_info->skb */ | 3142 | break; /* while !buffer_info->skb */ |
3164 | } else { | 3143 | } else { |
3165 | /* move on with the new one */ | 3144 | /* Use new allocation */ |
3166 | dev_kfree_skb(oldskb); | 3145 | dev_kfree_skb(oldskb); |
3167 | } | 3146 | } |
3168 | } | 3147 | } |
3169 | |||
3170 | /* Make buffer alignment 2 beyond a 16 byte boundary | 3148 | /* Make buffer alignment 2 beyond a 16 byte boundary |
3171 | * this will result in a 16 byte aligned IP header after | 3149 | * this will result in a 16 byte aligned IP header after |
3172 | * the 14 byte MAC header is removed | 3150 | * the 14 byte MAC header is removed |
@@ -3182,25 +3160,23 @@ e1000_alloc_rx_buffers(struct e1000_adapter *adapter) | |||
3182 | adapter->rx_buffer_len, | 3160 | adapter->rx_buffer_len, |
3183 | PCI_DMA_FROMDEVICE); | 3161 | PCI_DMA_FROMDEVICE); |
3184 | 3162 | ||
3185 | /* fix for errata 23, cant cross 64kB boundary */ | 3163 | /* Fix for errata 23, can't cross 64kB boundary */ |
3186 | if(!e1000_check_64k_bound(adapter, | 3164 | if (!e1000_check_64k_bound(adapter, |
3187 | (void *)(unsigned long)buffer_info->dma, | 3165 | (void *)(unsigned long)buffer_info->dma, |
3188 | adapter->rx_buffer_len)) { | 3166 | adapter->rx_buffer_len)) { |
3189 | DPRINTK(RX_ERR,ERR, | 3167 | DPRINTK(RX_ERR, ERR, |
3190 | "dma align check failed: %u bytes at %ld\n", | 3168 | "dma align check failed: %u bytes at %p\n", |
3191 | adapter->rx_buffer_len, (unsigned long)buffer_info->dma); | 3169 | adapter->rx_buffer_len, |
3192 | 3170 | (void *)(unsigned long)buffer_info->dma); | |
3193 | dev_kfree_skb(skb); | 3171 | dev_kfree_skb(skb); |
3194 | buffer_info->skb = NULL; | 3172 | buffer_info->skb = NULL; |
3195 | 3173 | ||
3196 | pci_unmap_single(pdev, | 3174 | pci_unmap_single(pdev, buffer_info->dma, |
3197 | buffer_info->dma, | ||
3198 | adapter->rx_buffer_len, | 3175 | adapter->rx_buffer_len, |
3199 | PCI_DMA_FROMDEVICE); | 3176 | PCI_DMA_FROMDEVICE); |
3200 | 3177 | ||
3201 | break; /* while !buffer_info->skb */ | 3178 | break; /* while !buffer_info->skb */ |
3202 | } | 3179 | } |
3203 | |||
3204 | rx_desc = E1000_RX_DESC(*rx_ring, i); | 3180 | rx_desc = E1000_RX_DESC(*rx_ring, i); |
3205 | rx_desc->buffer_addr = cpu_to_le64(buffer_info->dma); | 3181 | rx_desc->buffer_addr = cpu_to_le64(buffer_info->dma); |
3206 | 3182 | ||
@@ -3210,7 +3186,6 @@ e1000_alloc_rx_buffers(struct e1000_adapter *adapter) | |||
3210 | * applicable for weak-ordered memory model archs, | 3186 | * applicable for weak-ordered memory model archs, |
3211 | * such as IA-64). */ | 3187 | * such as IA-64). */ |
3212 | wmb(); | 3188 | wmb(); |
3213 | |||
3214 | E1000_WRITE_REG(&adapter->hw, RDT, i); | 3189 | E1000_WRITE_REG(&adapter->hw, RDT, i); |
3215 | } | 3190 | } |
3216 | 3191 | ||
@@ -3483,9 +3458,10 @@ void | |||
3483 | e1000_pci_set_mwi(struct e1000_hw *hw) | 3458 | e1000_pci_set_mwi(struct e1000_hw *hw) |
3484 | { | 3459 | { |
3485 | struct e1000_adapter *adapter = hw->back; | 3460 | struct e1000_adapter *adapter = hw->back; |
3461 | int ret_val = pci_set_mwi(adapter->pdev); | ||
3486 | 3462 | ||
3487 | int ret; | 3463 | if(ret_val) |
3488 | ret = pci_set_mwi(adapter->pdev); | 3464 | DPRINTK(PROBE, ERR, "Error in setting MWI\n"); |
3489 | } | 3465 | } |
3490 | 3466 | ||
3491 | void | 3467 | void |
@@ -3643,8 +3619,7 @@ e1000_set_spd_dplx(struct e1000_adapter *adapter, uint16_t spddplx) | |||
3643 | break; | 3619 | break; |
3644 | case SPEED_1000 + DUPLEX_HALF: /* not supported */ | 3620 | case SPEED_1000 + DUPLEX_HALF: /* not supported */ |
3645 | default: | 3621 | default: |
3646 | DPRINTK(PROBE, ERR, | 3622 | DPRINTK(PROBE, ERR, "Unsupported Speed/Duplex configuration\n"); |
3647 | "Unsupported Speed/Duplexity configuration\n"); | ||
3648 | return -EINVAL; | 3623 | return -EINVAL; |
3649 | } | 3624 | } |
3650 | return 0; | 3625 | return 0; |
@@ -3810,7 +3785,7 @@ e1000_resume(struct pci_dev *pdev) | |||
3810 | * the interrupt routine is executing. | 3785 | * the interrupt routine is executing. |
3811 | */ | 3786 | */ |
3812 | static void | 3787 | static void |
3813 | e1000_netpoll (struct net_device *netdev) | 3788 | e1000_netpoll(struct net_device *netdev) |
3814 | { | 3789 | { |
3815 | struct e1000_adapter *adapter = netdev->priv; | 3790 | struct e1000_adapter *adapter = netdev->priv; |
3816 | disable_irq(adapter->pdev->irq); | 3791 | disable_irq(adapter->pdev->irq); |
diff --git a/drivers/net/e1000/e1000_osdep.h b/drivers/net/e1000/e1000_osdep.h index b1915e8eb564..aac64de61437 100644 --- a/drivers/net/e1000/e1000_osdep.h +++ b/drivers/net/e1000/e1000_osdep.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /******************************************************************************* | 1 | /******************************************************************************* |
2 | 2 | ||
3 | 3 | ||
4 | Copyright(c) 1999 - 2004 Intel Corporation. All rights reserved. | 4 | Copyright(c) 1999 - 2005 Intel Corporation. All rights reserved. |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify it | 6 | This program is free software; you can redistribute it and/or modify it |
7 | under the terms of the GNU General Public License as published by the Free | 7 | under the terms of the GNU General Public License as published by the Free |
diff --git a/drivers/net/e1000/e1000_param.c b/drivers/net/e1000/e1000_param.c index e914d09fe6f9..676247f9f1cc 100644 --- a/drivers/net/e1000/e1000_param.c +++ b/drivers/net/e1000/e1000_param.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /******************************************************************************* | 1 | /******************************************************************************* |
2 | 2 | ||
3 | 3 | ||
4 | Copyright(c) 1999 - 2004 Intel Corporation. All rights reserved. | 4 | Copyright(c) 1999 - 2005 Intel Corporation. All rights reserved. |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify it | 6 | This program is free software; you can redistribute it and/or modify it |
7 | under the terms of the GNU General Public License as published by the Free | 7 | under the terms of the GNU General Public License as published by the Free |
@@ -478,7 +478,6 @@ e1000_check_options(struct e1000_adapter *adapter) | |||
478 | DPRINTK(PROBE, INFO, "%s set to dynamic mode\n", | 478 | DPRINTK(PROBE, INFO, "%s set to dynamic mode\n", |
479 | opt.name); | 479 | opt.name); |
480 | break; | 480 | break; |
481 | case -1: | ||
482 | default: | 481 | default: |
483 | e1000_validate_option(&adapter->itr, &opt, | 482 | e1000_validate_option(&adapter->itr, &opt, |
484 | adapter); | 483 | adapter); |