Commit c87fed15 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6

* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6: (23 commits)
  [PATCH] 8139too deadlock fix
  [netdrvr] 3c59x: snip changelog from source code
  e1000: increase version to 7.1.9-k2
  e1000: add ich8lan device ID's
  e1000: allow user to disable ich8 lock loss workaround
  e1000: integrate ich8 support into driver
  e1000: add ich8lan core functions
  e1000: disable ERT
  e1000: check return value of _get_speed_and_duplex
  e1000: M88 PHY workaround
  e1000: fix adapter led blinking inconsistency
  e1000: disable CRC stripping workaround
  e1000: force register write flushes to circumvent broken platforms
  e1000: rework module param code with uninitialized values
  e1000: recycle skb
  e1000: change printk into DPRINTK
  e1000: add smart power down code
  e1000: small performance tweak by removing double code
  e1000: fix CONFIG_PM blocks
  e1000: Make PHY powerup/down a function
  ...
parents 84e74f6b 70f05366
...@@ -17,172 +17,6 @@ ...@@ -17,172 +17,6 @@
410 Severn Ave., Suite 210 410 Severn Ave., Suite 210
Annapolis MD 21403 Annapolis MD 21403
Linux Kernel Additions:
0.99H+lk0.9 - David S. Miller - softnet, PCI DMA updates
0.99H+lk1.0 - Jeff Garzik <jgarzik@pobox.com>
Remove compatibility defines for kernel versions < 2.2.x.
Update for new 2.3.x module interface
LK1.1.2 (March 19, 2000)
* New PCI interface (jgarzik)
LK1.1.3 25 April 2000, Andrew Morton <andrewm@uow.edu.au>
- Merged with 3c575_cb.c
- Don't set RxComplete in boomerang interrupt enable reg
- spinlock in vortex_timer to protect mdio functions
- disable local interrupts around call to vortex_interrupt in
vortex_tx_timeout() (So vortex_interrupt can use spin_lock())
- Select window 3 in vortex_timer()'s write to Wn3_MAC_Ctrl
- In vortex_start_xmit(), move the lock to _after_ we've altered
vp->cur_tx and vp->tx_full. This defeats the race between
vortex_start_xmit() and vortex_interrupt which was identified
by Bogdan Costescu.
- Merged back support for six new cards from various sources
- Set vortex_have_pci if pci_module_init returns zero (fixes cardbus
insertion oops)
- Tell it that 3c905C has NWAY for 100bT autoneg
- Fix handling of SetStatusEnd in 'Too much work..' code, as
per 2.3.99's 3c575_cb (Dave Hinds).
- Split ISR into two for vortex & boomerang
- Fix MOD_INC/DEC races
- Handle resource allocation failures.
- Fix 3CCFE575CT LED polarity
- Make tx_interrupt_mitigation the default
LK1.1.4 25 April 2000, Andrew Morton <andrewm@uow.edu.au>
- Add extra TxReset to vortex_up() to fix 575_cb hotplug initialisation probs.
- Put vortex_info_tbl into __devinitdata
- In the vortex_error StatsFull HACK, disable stats in vp->intr_enable as well
as in the hardware.
- Increased the loop counter in issue_and_wait from 2,000 to 4,000.
LK1.1.5 28 April 2000, andrewm
- Added powerpc defines (John Daniel <jdaniel@etresoft.com> said these work...)
- Some extra diagnostics
- In vortex_error(), reset the Tx on maxCollisions. Otherwise most
chips usually get a Tx timeout.
- Added extra_reset module parm
- Replaced some inline timer manip with mod_timer
(Franois romieu <Francois.Romieu@nic.fr>)
- In vortex_up(), don't make Wn3_config initialisation dependent upon has_nway
(this came across from 3c575_cb).
LK1.1.6 06 Jun 2000, andrewm
- Backed out the PPC defines.
- Use del_timer_sync(), mod_timer().
- Fix wrapped ulong comparison in boomerang_rx()
- Add IS_TORNADO, use it to suppress 3c905C checksum error msg
(Donald Becker, I Lee Hetherington <ilh@sls.lcs.mit.edu>)
- Replace union wn3_config with BFINS/BFEXT manipulation for
sparc64 (Pete Zaitcev, Peter Jones)
- In vortex_error, do_tx_reset and vortex_tx_timeout(Vortex):
do a netif_wake_queue() to better recover from errors. (Anders Pedersen,
Donald Becker)
- Print a warning on out-of-memory (rate limited to 1 per 10 secs)
- Added two more Cardbus 575 NICs: 5b57 and 6564 (Paul Wagland)
LK1.1.7 2 Jul 2000 andrewm
- Better handling of shared IRQs
- Reset the transmitter on a Tx reclaim error
- Fixed crash under OOM during vortex_open() (Mark Hemment)
- Fix Rx cessation problem during OOM (help from Mark Hemment)
- The spinlocks around the mdio access were blocking interrupts for 300uS.
Fix all this to use spin_lock_bh() within mdio_read/write
- Only write to TxFreeThreshold if it's a boomerang - other NICs don't
have one.
- Added 802.3x MAC-layer flow control support
LK1.1.8 13 Aug 2000 andrewm
- Ignore request_region() return value - already reserved if Cardbus.
- Merged some additional Cardbus flags from Don's 0.99Qk
- Some fixes for 3c556 (Fred Maciel)
- Fix for EISA initialisation (Jan Rekorajski)
- Renamed MII_XCVR_PWR and EEPROM_230 to align with 3c575_cb and D. Becker's drivers
- Fixed MII_XCVR_PWR for 3CCFE575CT
- Added INVERT_LED_PWR, used it.
- Backed out the extra_reset stuff
LK1.1.9 12 Sep 2000 andrewm
- Backed out the tx_reset_resume flags. It was a no-op.
- In vortex_error, don't reset the Tx on txReclaim errors
- In vortex_error, don't reset the Tx on maxCollisions errors.
Hence backed out all the DownListPtr logic here.
- In vortex_error, give Tornado cards a partial TxReset on
maxCollisions (David Hinds). Defined MAX_COLLISION_RESET for this.
- Redid some driver flags and device names based on pcmcia_cs-3.1.20.
- Fixed a bug where, if vp->tx_full is set when the interface
is downed, it remains set when the interface is upped. Bad
things happen.
LK1.1.10 17 Sep 2000 andrewm
- Added EEPROM_8BIT for 3c555 (Fred Maciel)
- Added experimental support for the 3c556B Laptop Hurricane (Louis Gerbarg)
- Add HAS_NWAY to "3c900 Cyclone 10Mbps TPO"
LK1.1.11 13 Nov 2000 andrewm
- Dump MOD_INC/DEC_USE_COUNT, use SET_MODULE_OWNER
LK1.1.12 1 Jan 2001 andrewm (2.4.0-pre1)
- Call pci_enable_device before we request our IRQ (Tobias Ringstrom)
- Add 3c590 PCI latency timer hack to vortex_probe1 (from 0.99Ra)
- Added extended issue_and_wait for the 3c905CX.
- Look for an MII on PHY index 24 first (3c905CX oddity).
- Add HAS_NWAY to 3cSOHO100-TX (Brett Frankenberger)
- Don't free skbs we don't own on oom path in vortex_open().
LK1.1.13 27 Jan 2001
- Added explicit `medialock' flag so we can truly
lock the media type down with `options'.
- "check ioremap return and some tidbits" (Arnaldo Carvalho de Melo <acme@conectiva.com.br>)
- Added and used EEPROM_NORESET for 3c556B PM resumes.
- Fixed leakage of vp->rx_ring.
- Break out separate HAS_HWCKSM device capability flag.
- Kill vp->tx_full (ANK)
- Merge zerocopy fragment handling (ANK?)
LK1.1.14 15 Feb 2001
- Enable WOL. Can be turned on with `enable_wol' module option.
- EISA and PCI initialisation fixes (jgarzik, Manfred Spraul)
- If a device's internalconfig register reports it has NWAY,
use it, even if autoselect is enabled.
LK1.1.15 6 June 2001 akpm
- Prevent double counting of received bytes (Lars Christensen)
- Add ethtool support (jgarzik)
- Add module parm descriptions (Andrzej M. Krzysztofowicz)
- Implemented alloc_etherdev() API
- Special-case the 'Tx error 82' message.
LK1.1.16 18 July 2001 akpm
- Make NETIF_F_SG dependent upon nr_free_highpages(), not on CONFIG_HIGHMEM
- Lessen verbosity of bootup messages
- Fix WOL - use new PM API functions.
- Use netif_running() instead of vp->open in suspend/resume.
- Don't reset the interface logic on open/close/rmmod. It upsets
autonegotiation, and hence DHCP (from 0.99T).
- Back out EEPROM_NORESET flag because of the above (we do it for all
NICs).
- Correct 3c982 identification string
- Rename wait_for_completion() to issue_and_wait() to avoid completion.h
clash.
LK1.1.17 18Dec01 akpm
- PCI ID 9805 is a Python-T, not a dual-port Cyclone. Apparently.
And it has NWAY.
- Mask our advertised modes (vp->advertising) with our capabilities
(MII reg5) when deciding which duplex mode to use.
- Add `global_options' as default for options[]. Ditto global_enable_wol,
global_full_duplex.
LK1.1.18 01Jul02 akpm
- Fix for undocumented transceiver power-up bit on some 3c566B's
(Donald Becker, Rahul Karnik)
- See http://www.zip.com.au/~akpm/linux/#3c59x-2.3 for more details.
- Also see Documentation/networking/vortex.txt
LK1.1.19 10Nov02 Marc Zyngier <maz@wild-wind.fr.eu.org>
- EISA sysfs integration.
*/ */
/* /*
......
...@@ -1709,6 +1709,7 @@ static int rtl8139_start_xmit (struct sk_buff *skb, struct net_device *dev) ...@@ -1709,6 +1709,7 @@ static int rtl8139_start_xmit (struct sk_buff *skb, struct net_device *dev)
void __iomem *ioaddr = tp->mmio_addr; void __iomem *ioaddr = tp->mmio_addr;
unsigned int entry; unsigned int entry;
unsigned int len = skb->len; unsigned int len = skb->len;
unsigned long flags;
/* Calculate the next Tx descriptor entry. */ /* Calculate the next Tx descriptor entry. */
entry = tp->cur_tx % NUM_TX_DESC; entry = tp->cur_tx % NUM_TX_DESC;
...@@ -1725,7 +1726,7 @@ static int rtl8139_start_xmit (struct sk_buff *skb, struct net_device *dev) ...@@ -1725,7 +1726,7 @@ static int rtl8139_start_xmit (struct sk_buff *skb, struct net_device *dev)
return 0; return 0;
} }
spin_lock_irq(&tp->lock); spin_lock_irqsave(&tp->lock, flags);
RTL_W32_F (TxStatus0 + (entry * sizeof (u32)), RTL_W32_F (TxStatus0 + (entry * sizeof (u32)),
tp->tx_flag | max(len, (unsigned int)ETH_ZLEN)); tp->tx_flag | max(len, (unsigned int)ETH_ZLEN));
...@@ -1736,7 +1737,7 @@ static int rtl8139_start_xmit (struct sk_buff *skb, struct net_device *dev) ...@@ -1736,7 +1737,7 @@ static int rtl8139_start_xmit (struct sk_buff *skb, struct net_device *dev)
if ((tp->cur_tx - NUM_TX_DESC) == tp->dirty_tx) if ((tp->cur_tx - NUM_TX_DESC) == tp->dirty_tx)
netif_stop_queue (dev); netif_stop_queue (dev);
spin_unlock_irq(&tp->lock); spin_unlock_irqrestore(&tp->lock, flags);
if (netif_msg_tx_queued(tp)) if (netif_msg_tx_queued(tp))
printk (KERN_DEBUG "%s: Queued Tx packet size %u to slot %d.\n", printk (KERN_DEBUG "%s: Queued Tx packet size %u to slot %d.\n",
......
...@@ -68,7 +68,6 @@ ...@@ -68,7 +68,6 @@
#ifdef NETIF_F_TSO #ifdef NETIF_F_TSO
#include <net/checksum.h> #include <net/checksum.h>
#endif #endif
#include <linux/workqueue.h>
#include <linux/mii.h> #include <linux/mii.h>
#include <linux/ethtool.h> #include <linux/ethtool.h>
#include <linux/if_vlan.h> #include <linux/if_vlan.h>
...@@ -143,6 +142,7 @@ struct e1000_adapter; ...@@ -143,6 +142,7 @@ struct e1000_adapter;
#define AUTO_ALL_MODES 0 #define AUTO_ALL_MODES 0
#define E1000_EEPROM_82544_APM 0x0004 #define E1000_EEPROM_82544_APM 0x0004
#define E1000_EEPROM_ICH8_APME 0x0004
#define E1000_EEPROM_APME 0x0400 #define E1000_EEPROM_APME 0x0400
#ifndef E1000_MASTER_SLAVE #ifndef E1000_MASTER_SLAVE
...@@ -254,7 +254,6 @@ struct e1000_adapter { ...@@ -254,7 +254,6 @@ struct e1000_adapter {
spinlock_t tx_queue_lock; spinlock_t tx_queue_lock;
#endif #endif
atomic_t irq_sem; atomic_t irq_sem;
struct work_struct watchdog_task;
struct work_struct reset_task; struct work_struct reset_task;
uint8_t fc_autoneg; uint8_t fc_autoneg;
...@@ -339,8 +338,14 @@ struct e1000_adapter { ...@@ -339,8 +338,14 @@ struct e1000_adapter {
#ifdef NETIF_F_TSO #ifdef NETIF_F_TSO
boolean_t tso_force; boolean_t tso_force;
#endif #endif
boolean_t smart_power_down; /* phy smart power down */
unsigned long flags;
}; };
enum e1000_state_t {
__E1000_DRIVER_TESTING,
__E1000_RESETTING,
};
/* e1000_main.c */ /* e1000_main.c */
extern char e1000_driver_name[]; extern char e1000_driver_name[];
...@@ -348,6 +353,7 @@ extern char e1000_driver_version[]; ...@@ -348,6 +353,7 @@ extern char e1000_driver_version[];
int e1000_up(struct e1000_adapter *adapter); int e1000_up(struct e1000_adapter *adapter);
void e1000_down(struct e1000_adapter *adapter); void e1000_down(struct e1000_adapter *adapter);
void e1000_reset(struct e1000_adapter *adapter); void e1000_reset(struct e1000_adapter *adapter);
void e1000_reinit_locked(struct e1000_adapter *adapter);
int e1000_setup_all_tx_resources(struct e1000_adapter *adapter); int e1000_setup_all_tx_resources(struct e1000_adapter *adapter);
void e1000_free_all_tx_resources(struct e1000_adapter *adapter); void e1000_free_all_tx_resources(struct e1000_adapter *adapter);
int e1000_setup_all_rx_resources(struct e1000_adapter *adapter); int e1000_setup_all_rx_resources(struct e1000_adapter *adapter);
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -127,4 +127,17 @@ typedef enum { ...@@ -127,4 +127,17 @@ typedef enum {
#define E1000_WRITE_FLUSH(a) E1000_READ_REG(a, STATUS) #define E1000_WRITE_FLUSH(a) E1000_READ_REG(a, STATUS)
#define E1000_WRITE_ICH8_REG(a, reg, value) ( \
writel((value), ((a)->flash_address + reg)))
#define E1000_READ_ICH8_REG(a, reg) ( \
readl((a)->flash_address + reg))
#define E1000_WRITE_ICH8_REG16(a, reg, value) ( \
writew((value), ((a)->flash_address + reg)))
#define E1000_READ_ICH8_REG16(a, reg) ( \
readw((a)->flash_address + reg))
#endif /* _E1000_OSDEP_H_ */ #endif /* _E1000_OSDEP_H_ */
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment