diff options
-rw-r--r-- | drivers/net/e100.c | 74 |
1 files changed, 37 insertions, 37 deletions
diff --git a/drivers/net/e100.c b/drivers/net/e100.c index 394fb019c4f4..bf1fd2b98bf8 100644 --- a/drivers/net/e100.c +++ b/drivers/net/e100.c | |||
@@ -1,25 +1,25 @@ | |||
1 | /******************************************************************************* | 1 | /******************************************************************************* |
2 | 2 | ||
3 | 3 | ||
4 | Copyright(c) 1999 - 2005 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 |
8 | Software Foundation; either version 2 of the License, or (at your option) | 8 | Software Foundation; either version 2 of the License, or (at your option) |
9 | any later version. | 9 | any later version. |
10 | 10 | ||
11 | This program is distributed in the hope that it will be useful, but WITHOUT | 11 | This program is distributed in the hope that it will be useful, but WITHOUT |
12 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | 12 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
13 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | 13 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
14 | more details. | 14 | more details. |
15 | 15 | ||
16 | You should have received a copy of the GNU General Public License along with | 16 | You should have received a copy of the GNU General Public License along with |
17 | this program; if not, write to the Free Software Foundation, Inc., 59 | 17 | this program; if not, write to the Free Software Foundation, Inc., 59 |
18 | Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 18 | Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
19 | 19 | ||
20 | The full GNU General Public License is included in this distribution in the | 20 | The full GNU General Public License is included in this distribution in the |
21 | file called LICENSE. | 21 | file called LICENSE. |
22 | 22 | ||
23 | Contact Information: | 23 | Contact Information: |
24 | Linux NICS <linux.nics@intel.com> | 24 | Linux NICS <linux.nics@intel.com> |
25 | Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 | 25 | Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 |
@@ -320,7 +320,7 @@ enum cuc_dump { | |||
320 | cuc_dump_complete = 0x0000A005, | 320 | cuc_dump_complete = 0x0000A005, |
321 | cuc_dump_reset_complete = 0x0000A007, | 321 | cuc_dump_reset_complete = 0x0000A007, |
322 | }; | 322 | }; |
323 | 323 | ||
324 | enum port { | 324 | enum port { |
325 | software_reset = 0x0000, | 325 | software_reset = 0x0000, |
326 | selftest = 0x0001, | 326 | selftest = 0x0001, |
@@ -715,10 +715,10 @@ static u16 e100_eeprom_read(struct nic *nic, u16 *addr_len, u16 addr) | |||
715 | ctrl = (cmd_addr_data & (1 << i)) ? eecs | eedi : eecs; | 715 | ctrl = (cmd_addr_data & (1 << i)) ? eecs | eedi : eecs; |
716 | writeb(ctrl, &nic->csr->eeprom_ctrl_lo); | 716 | writeb(ctrl, &nic->csr->eeprom_ctrl_lo); |
717 | e100_write_flush(nic); udelay(4); | 717 | e100_write_flush(nic); udelay(4); |
718 | 718 | ||
719 | writeb(ctrl | eesk, &nic->csr->eeprom_ctrl_lo); | 719 | writeb(ctrl | eesk, &nic->csr->eeprom_ctrl_lo); |
720 | e100_write_flush(nic); udelay(4); | 720 | e100_write_flush(nic); udelay(4); |
721 | 721 | ||
722 | /* Eeprom drives a dummy zero to EEDO after receiving | 722 | /* Eeprom drives a dummy zero to EEDO after receiving |
723 | * complete address. Use this to adjust addr_len. */ | 723 | * complete address. Use this to adjust addr_len. */ |
724 | ctrl = readb(&nic->csr->eeprom_ctrl_lo); | 724 | ctrl = readb(&nic->csr->eeprom_ctrl_lo); |
@@ -726,7 +726,7 @@ static u16 e100_eeprom_read(struct nic *nic, u16 *addr_len, u16 addr) | |||
726 | *addr_len -= (i - 16); | 726 | *addr_len -= (i - 16); |
727 | i = 17; | 727 | i = 17; |
728 | } | 728 | } |
729 | 729 | ||
730 | data = (data << 1) | (ctrl & eedo ? 1 : 0); | 730 | data = (data << 1) | (ctrl & eedo ? 1 : 0); |
731 | } | 731 | } |
732 | 732 | ||
@@ -1213,13 +1213,13 @@ static void e100_setup_ucode(struct nic *nic, struct cb *cb, struct sk_buff *skb | |||
1213 | * driver can change the algorithm. | 1213 | * driver can change the algorithm. |
1214 | * | 1214 | * |
1215 | * INTDELAY - This loads the dead-man timer with its inital value. | 1215 | * INTDELAY - This loads the dead-man timer with its inital value. |
1216 | * When this timer expires the interrupt is asserted, and the | 1216 | * When this timer expires the interrupt is asserted, and the |
1217 | * timer is reset each time a new packet is received. (see | 1217 | * timer is reset each time a new packet is received. (see |
1218 | * BUNDLEMAX below to set the limit on number of chained packets) | 1218 | * BUNDLEMAX below to set the limit on number of chained packets) |
1219 | * The current default is 0x600 or 1536. Experiments show that | 1219 | * The current default is 0x600 or 1536. Experiments show that |
1220 | * the value should probably stay within the 0x200 - 0x1000. | 1220 | * the value should probably stay within the 0x200 - 0x1000. |
1221 | * | 1221 | * |
1222 | * BUNDLEMAX - | 1222 | * BUNDLEMAX - |
1223 | * This sets the maximum number of frames that will be bundled. In | 1223 | * This sets the maximum number of frames that will be bundled. In |
1224 | * some situations, such as the TCP windowing algorithm, it may be | 1224 | * some situations, such as the TCP windowing algorithm, it may be |
1225 | * better to limit the growth of the bundle size than let it go as | 1225 | * better to limit the growth of the bundle size than let it go as |
@@ -1229,7 +1229,7 @@ static void e100_setup_ucode(struct nic *nic, struct cb *cb, struct sk_buff *skb | |||
1229 | * an interrupt for every frame received. If you do not want to put | 1229 | * an interrupt for every frame received. If you do not want to put |
1230 | * a limit on the bundle size, set this value to xFFFF. | 1230 | * a limit on the bundle size, set this value to xFFFF. |
1231 | * | 1231 | * |
1232 | * BUNDLESMALL - | 1232 | * BUNDLESMALL - |
1233 | * This contains a bit-mask describing the minimum size frame that | 1233 | * This contains a bit-mask describing the minimum size frame that |
1234 | * will be bundled. The default masks the lower 7 bits, which means | 1234 | * will be bundled. The default masks the lower 7 bits, which means |
1235 | * that any frame less than 128 bytes in length will not be bundled, | 1235 | * that any frame less than 128 bytes in length will not be bundled, |
@@ -1244,7 +1244,7 @@ static void e100_setup_ucode(struct nic *nic, struct cb *cb, struct sk_buff *skb | |||
1244 | * | 1244 | * |
1245 | * The current default is 0xFF80, which masks out the lower 7 bits. | 1245 | * The current default is 0xFF80, which masks out the lower 7 bits. |
1246 | * This means that any frame which is x7F (127) bytes or smaller | 1246 | * This means that any frame which is x7F (127) bytes or smaller |
1247 | * will cause an immediate interrupt. Because this value must be a | 1247 | * will cause an immediate interrupt. Because this value must be a |
1248 | * bit mask, there are only a few valid values that can be used. To | 1248 | * bit mask, there are only a few valid values that can be used. To |
1249 | * turn this feature off, the driver can write the value xFFFF to the | 1249 | * turn this feature off, the driver can write the value xFFFF to the |
1250 | * lower word of this instruction (in the same way that the other | 1250 | * lower word of this instruction (in the same way that the other |
@@ -1253,7 +1253,7 @@ static void e100_setup_ucode(struct nic *nic, struct cb *cb, struct sk_buff *skb | |||
1253 | * standard Ethernet frames are <= 2047 bytes in length. | 1253 | * standard Ethernet frames are <= 2047 bytes in length. |
1254 | *************************************************************************/ | 1254 | *************************************************************************/ |
1255 | 1255 | ||
1256 | /* if you wish to disable the ucode functionality, while maintaining the | 1256 | /* if you wish to disable the ucode functionality, while maintaining the |
1257 | * workarounds it provides, set the following defines to: | 1257 | * workarounds it provides, set the following defines to: |
1258 | * BUNDLESMALL 0 | 1258 | * BUNDLESMALL 0 |
1259 | * BUNDLEMAX 1 | 1259 | * BUNDLEMAX 1 |
@@ -1300,7 +1300,7 @@ static inline int e100_exec_cb_wait(struct nic *nic, struct sk_buff *skb, | |||
1300 | 1300 | ||
1301 | if ((err = e100_exec_cb(nic, NULL, e100_setup_ucode))) | 1301 | if ((err = e100_exec_cb(nic, NULL, e100_setup_ucode))) |
1302 | DPRINTK(PROBE,ERR, "ucode cmd failed with error %d\n", err); | 1302 | DPRINTK(PROBE,ERR, "ucode cmd failed with error %d\n", err); |
1303 | 1303 | ||
1304 | /* must restart cuc */ | 1304 | /* must restart cuc */ |
1305 | nic->cuc_cmd = cuc_start; | 1305 | nic->cuc_cmd = cuc_start; |
1306 | 1306 | ||
@@ -1313,7 +1313,7 @@ static inline int e100_exec_cb_wait(struct nic *nic, struct sk_buff *skb, | |||
1313 | msleep(10); | 1313 | msleep(10); |
1314 | if (!--counter) break; | 1314 | if (!--counter) break; |
1315 | } | 1315 | } |
1316 | 1316 | ||
1317 | /* ack any interupts, something could have been set */ | 1317 | /* ack any interupts, something could have been set */ |
1318 | writeb(~0, &nic->csr->scb.stat_ack); | 1318 | writeb(~0, &nic->csr->scb.stat_ack); |
1319 | 1319 | ||
@@ -1322,7 +1322,7 @@ static inline int e100_exec_cb_wait(struct nic *nic, struct sk_buff *skb, | |||
1322 | DPRINTK(PROBE,ERR, "ucode load failed\n"); | 1322 | DPRINTK(PROBE,ERR, "ucode load failed\n"); |
1323 | err = -EPERM; | 1323 | err = -EPERM; |
1324 | } | 1324 | } |
1325 | 1325 | ||
1326 | return err; | 1326 | return err; |
1327 | } | 1327 | } |
1328 | 1328 | ||
@@ -1391,13 +1391,13 @@ static int e100_phy_init(struct nic *nic) | |||
1391 | mdio_write(netdev, nic->mii.phy_id, MII_NSC_CONG, cong); | 1391 | mdio_write(netdev, nic->mii.phy_id, MII_NSC_CONG, cong); |
1392 | } | 1392 | } |
1393 | 1393 | ||
1394 | if((nic->mac >= mac_82550_D102) || ((nic->flags & ich) && | 1394 | if((nic->mac >= mac_82550_D102) || ((nic->flags & ich) && |
1395 | (mdio_read(netdev, nic->mii.phy_id, MII_TPISTATUS) & 0x8000))) { | 1395 | (mdio_read(netdev, nic->mii.phy_id, MII_TPISTATUS) & 0x8000))) { |
1396 | /* enable/disable MDI/MDI-X auto-switching. | 1396 | /* enable/disable MDI/MDI-X auto-switching. |
1397 | MDI/MDI-X auto-switching is disabled for 82551ER/QM chips */ | 1397 | MDI/MDI-X auto-switching is disabled for 82551ER/QM chips */ |
1398 | if((nic->mac == mac_82551_E) || (nic->mac == mac_82551_F) || | 1398 | if((nic->mac == mac_82551_E) || (nic->mac == mac_82551_F) || |
1399 | (nic->mac == mac_82551_10) || (nic->mii.force_media) || | 1399 | (nic->mac == mac_82551_10) || (nic->mii.force_media) || |
1400 | !(nic->eeprom[eeprom_cnfg_mdix] & eeprom_mdix_enabled)) | 1400 | !(nic->eeprom[eeprom_cnfg_mdix] & eeprom_mdix_enabled)) |
1401 | mdio_write(netdev, nic->mii.phy_id, MII_NCONFIG, 0); | 1401 | mdio_write(netdev, nic->mii.phy_id, MII_NCONFIG, 0); |
1402 | else | 1402 | else |
1403 | mdio_write(netdev, nic->mii.phy_id, MII_NCONFIG, NCONFIG_AUTO_SWITCH); | 1403 | mdio_write(netdev, nic->mii.phy_id, MII_NCONFIG, NCONFIG_AUTO_SWITCH); |
@@ -1527,7 +1527,7 @@ static void e100_update_stats(struct nic *nic) | |||
1527 | } | 1527 | } |
1528 | } | 1528 | } |
1529 | 1529 | ||
1530 | 1530 | ||
1531 | if(e100_exec_cmd(nic, cuc_dump_reset, 0)) | 1531 | if(e100_exec_cmd(nic, cuc_dump_reset, 0)) |
1532 | DPRINTK(TX_ERR, DEBUG, "exec cuc_dump_reset failed\n"); | 1532 | DPRINTK(TX_ERR, DEBUG, "exec cuc_dump_reset failed\n"); |
1533 | } | 1533 | } |
@@ -1576,10 +1576,10 @@ static void e100_watchdog(unsigned long data) | |||
1576 | mii_check_link(&nic->mii); | 1576 | mii_check_link(&nic->mii); |
1577 | 1577 | ||
1578 | /* Software generated interrupt to recover from (rare) Rx | 1578 | /* Software generated interrupt to recover from (rare) Rx |
1579 | * allocation failure. | 1579 | * allocation failure. |
1580 | * Unfortunately have to use a spinlock to not re-enable interrupts | 1580 | * Unfortunately have to use a spinlock to not re-enable interrupts |
1581 | * accidentally, due to hardware that shares a register between the | 1581 | * accidentally, due to hardware that shares a register between the |
1582 | * interrupt mask bit and the SW Interrupt generation bit */ | 1582 | * interrupt mask bit and the SW Interrupt generation bit */ |
1583 | spin_lock_irq(&nic->cmd_lock); | 1583 | spin_lock_irq(&nic->cmd_lock); |
1584 | writeb(readb(&nic->csr->scb.cmd_hi) | irq_sw_gen,&nic->csr->scb.cmd_hi); | 1584 | writeb(readb(&nic->csr->scb.cmd_hi) | irq_sw_gen,&nic->csr->scb.cmd_hi); |
1585 | spin_unlock_irq(&nic->cmd_lock); | 1585 | spin_unlock_irq(&nic->cmd_lock); |
@@ -1864,7 +1864,7 @@ static void e100_rx_clean(struct nic *nic, unsigned int *work_done, | |||
1864 | struct rx *rx_to_start = NULL; | 1864 | struct rx *rx_to_start = NULL; |
1865 | 1865 | ||
1866 | /* are we already rnr? then pay attention!!! this ensures that | 1866 | /* are we already rnr? then pay attention!!! this ensures that |
1867 | * the state machine progression never allows a start with a | 1867 | * the state machine progression never allows a start with a |
1868 | * partially cleaned list, avoiding a race between hardware | 1868 | * partially cleaned list, avoiding a race between hardware |
1869 | * and rx_to_clean when in NAPI mode */ | 1869 | * and rx_to_clean when in NAPI mode */ |
1870 | if(RU_SUSPENDED == nic->ru_running) | 1870 | if(RU_SUSPENDED == nic->ru_running) |
@@ -2100,7 +2100,7 @@ static void e100_tx_timeout(struct net_device *netdev) | |||
2100 | { | 2100 | { |
2101 | struct nic *nic = netdev_priv(netdev); | 2101 | struct nic *nic = netdev_priv(netdev); |
2102 | 2102 | ||
2103 | /* Reset outside of interrupt context, to avoid request_irq | 2103 | /* Reset outside of interrupt context, to avoid request_irq |
2104 | * in interrupt context */ | 2104 | * in interrupt context */ |
2105 | schedule_work(&nic->tx_timeout_task); | 2105 | schedule_work(&nic->tx_timeout_task); |
2106 | } | 2106 | } |
@@ -2347,7 +2347,7 @@ static int e100_set_ringparam(struct net_device *netdev, | |||
2347 | struct param_range *rfds = &nic->params.rfds; | 2347 | struct param_range *rfds = &nic->params.rfds; |
2348 | struct param_range *cbs = &nic->params.cbs; | 2348 | struct param_range *cbs = &nic->params.cbs; |
2349 | 2349 | ||
2350 | if ((ring->rx_mini_pending) || (ring->rx_jumbo_pending)) | 2350 | if ((ring->rx_mini_pending) || (ring->rx_jumbo_pending)) |
2351 | return -EINVAL; | 2351 | return -EINVAL; |
2352 | 2352 | ||
2353 | if(netif_running(netdev)) | 2353 | if(netif_running(netdev)) |
@@ -2789,7 +2789,7 @@ static struct pci_driver e100_driver = { | |||
2789 | .suspend = e100_suspend, | 2789 | .suspend = e100_suspend, |
2790 | .resume = e100_resume, | 2790 | .resume = e100_resume, |
2791 | #endif | 2791 | #endif |
2792 | .shutdown = e100_shutdown, | 2792 | .shutdown = e100_shutdown, |
2793 | }; | 2793 | }; |
2794 | 2794 | ||
2795 | static int __init e100_init_module(void) | 2795 | static int __init e100_init_module(void) |