Commit Graph

302 Commits

Author SHA1 Message Date
Auke Kok
edd106fc8a [PATCH] e1000: Fix regression: garbled stats and irq allocation during swsusp
e1000: Fix suspend/resume powerup and irq allocation

From: Auke Kok <auke-jan.h.kok@intel.com>

After 7.0.33/2.6.16, e1000 suspend/resume left the user with an enabled
device showing garbled statistics and undetermined irq allocation state,
where `ifconfig eth0 down` would display `trying to free already freed irq`.

Explicitly free and allocate irq as well as powerup the PHY during resume
fixes when needed.

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-11-07 04:27:51 -05:00
Auke Kok
ff1e55b078 e1000: Increment version to 7.2.9-k4
Significant fixes -> increment driver version.

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-10-24 14:46:09 -07:00
Jesse Brandeburg
d2a1e2131a e1000: FIX: move length adjustment due to crc stripping disabled.
Move the length (rx_bytes counter) adjustment of 4 bytes down to after the
TBI_ACCEPT workaround.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-10-24 14:46:06 -07:00
Jesse Brandeburg
032fe6e9e2 e1000: FIX: Don't limit descriptor size to 4kb for PCI-E adapters
82571 and newer chispets don't need to limit desc. length to 4kb and can
handle 8kb sizes.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-10-24 14:46:04 -07:00
Jesse Brandeburg
e64d7d0209 e1000: FIX: Disable Packet Split for non jumbo frames
Allocations using alloc_page are taking too long for normal MTU, so
use LPE only for jumbo frames.

Signed-off-bu: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-10-24 14:46:01 -07:00
Bruce Allan
225a5dbd68 e1000: FIX: fix wrong txdctl threshold bitmasks
Threshold bitmasks for prefetch, host and writeback were clearing
bits that they were not supposed to. The leftmost 2 bits in the byte
for each threshold are reserved.

Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-10-24 14:45:58 -07:00
Auke Kok
dc1f71f6b3 e1000: FIX: 82542 doesn't support WoL
Exclude 82542 when setting up WoL. This card does not do WoL at all.

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-10-24 14:45:55 -07:00
Jesse Brandeburg
4ccc12aeec e1000: FIX: don't poke at manageability registers for incompatible adapters
The MANC register should not be read for PCI-E adapters at all, as well as
82543 and older where 82543 would master abort when this register was
accessed.

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-10-24 14:45:53 -07:00
Linas Vepstas
7347b03d25 [PATCH] e1000: Reset all functions after a PCI error
During the handling of the PCI error recovery sequence, the current e1000
driver erroneously blocks a device reset for any but the first PCI
function.  It shouldn't -- this is a cut-n-paste error from a different
driver (which tolerated only one hardware reset per hardware card).

Signed-off-by: Linas Vepstas <linas@austin.ibm.com>
Cc: Jesse Brandeburg <jesse.brandeburg@intel.com>
Acked-by: Auke Kok <auke-jan.h.kok@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-10-21 14:08:24 -04:00
David Howells
7d12e780e0 IRQ: Maintain regs pointer globally rather than passing to IRQ handlers
Maintain a per-CPU global "struct pt_regs *" variable which can be used instead
of passing regs around manually through all ~1800 interrupt handlers in the
Linux kernel.

The regs pointer is used in few places, but it potentially costs both stack
space and code to pass it around.  On the FRV arch, removing the regs parameter
from all the genirq function results in a 20% speed up of the IRQ exit path
(ie: from leaving timer_interrupt() to leaving do_IRQ()).

Where appropriate, an arch may override the generic storage facility and do
something different with the variable.  On FRV, for instance, the address is
maintained in GR28 at all times inside the kernel as part of general exception
handling.

Having looked over the code, it appears that the parameter may be handed down
through up to twenty or so layers of functions.  Consider a USB character
device attached to a USB hub, attached to a USB controller that posts its
interrupts through a cascaded auxiliary interrupt controller.  A character
device driver may want to pass regs to the sysrq handler through the input
layer which adds another few layers of parameter passing.

I've build this code with allyesconfig for x86_64 and i386.  I've runtested the
main part of the code on FRV and i386, though I can't test most of the drivers.
I've also done partial conversion for powerpc and MIPS - these at least compile
with minimal configurations.

This will affect all archs.  Mostly the changes should be relatively easy.
Take do_IRQ(), store the regs pointer at the beginning, saving the old one:

	struct pt_regs *old_regs = set_irq_regs(regs);

And put the old one back at the end:

	set_irq_regs(old_regs);

Don't pass regs through to generic_handle_irq() or __do_IRQ().

In timer_interrupt(), this sort of change will be necessary:

	-	update_process_times(user_mode(regs));
	-	profile_tick(CPU_PROFILING, regs);
	+	update_process_times(user_mode(get_irq_regs()));
	+	profile_tick(CPU_PROFILING);

I'd like to move update_process_times()'s use of get_irq_regs() into itself,
except that i386, alone of the archs, uses something other than user_mode().

Some notes on the interrupt handling in the drivers:

 (*) input_dev() is now gone entirely.  The regs pointer is no longer stored in
     the input_dev struct.

 (*) finish_unlinks() in drivers/usb/host/ohci-q.c needs checking.  It does
     something different depending on whether it's been supplied with a regs
     pointer or not.

 (*) Various IRQ handler function pointers have been moved to type
     irq_handler_t.

Signed-Off-By: David Howells <dhowells@redhat.com>
(cherry picked from 1b16e7ac850969f38b375e511e3fa2f474a33867 commit)
2006-10-05 15:10:12 +01:00
Auke Kok
76ddb3fd96 e100, e1000, ixgb: increment version numbers
e100-3.5.17-k2
e1000-7.2.9-k2
ixgb-1.0.117-k2

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-09-27 12:54:22 -07:00
Vasily Averin
793fab7273 e1000: possible memory leak in e1000_set_ringparam
Memory allocated for new tx_ring and rx_ring leaks if
e1000_setup_XX_resources() fails.c Also this patch reduces stack usage
(removed tx_new and rx_new) and uses kzalloc instead kmalloc+memset(0)

Signed-off-by: Vasily Averin <vvs@sw.ru>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-09-27 12:54:14 -07:00
Linas Vepstas
dbf38c9474 e1000: Janitor: Use #defined values for literals
Minor janitorial patch: use #defines for literal values.

Signed-off-by: Linas Vepstas <linas@austin.ibm.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-09-27 12:54:11 -07:00
Bruce Allan
4666560a37 e1000: don't strip vlan ID if 8021q claims it
Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-09-27 12:54:08 -07:00
Jeff Kirsher
2a88c17371 e1000: rework polarity, NVM, eeprom code and fixes.
Several minor issues exist in the low-level device handling code of
e1000. The NVM and EEPROM writing/reading code was updated which fixes
unneeded delays, adds proper eeprom aqcuiring steps and handle shadow
ram and flash access. Minor cosmetic adjustments to the polarity code
adding symbols. PHY reset code mistakenly distinguished between MAC
types instead of PHY types, and was fixes.

Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-09-27 12:54:05 -07:00
Auke Kok
1314bbf3a3 e1000: driver state fixes (race fix)
We were plagued by our interrupt handler posting a watchdog event which
could occur when our adapter was going down in case a late packet arrived
just before e1000_down() finished. This caused the watchdog timer to start
after the NIC was down and keep rescheduling it every N seconds. Once
the driver unloaded it would panic.

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-09-27 12:54:02 -07:00
Jeff Kirsher
4f5f2317fb e1000: reduce RAR entries available for ICH8
Manageability is using one more RAR entry than we anticipated earlier
for ICH8.

Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-09-27 12:53:59 -07:00
Jeff Kirsher
caeccb682a e1000: add PCI-E capability detection code
Add code to display the detected PCI-E bus width.

Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-09-27 12:53:57 -07:00
Bruce Allan
61c2505fd5 e1000: handle manageability for pci-e adapters at PHY powerdown
When powering down the PHY (if WoL is disabled) we should only check
copper PHY's and handle PCI-E adapters differently.

Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-09-27 12:53:54 -07:00
Jeff Kirsher
09ae3e8866 e1000: gather hardware bit tweaks.
Several hardware bits were set all over the driver and have been
consolidated into a single function.

Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-09-27 12:53:51 -07:00
Jesse Brandeburg
65c7973fa5 e1000: Maybe stop TX if not enough free descriptors
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-09-27 12:53:48 -07:00
Bruce Allan
249d71d694 e1000: Jumbo frames fixes for 82573
Disable jumbo frames for 82573L alltogether and when ASPM is enabled
since the hardware has problems with it. For the NICs that do support
this in the 82573 series we set ERT_2048 to attempt to receive as much
traffic as early as we can.

Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-09-27 12:53:45 -07:00
Jeff Kirsher
5f01607a5b e1000: Fix MANC detection for PCIE adapters
Several manageability capability detection parts hinted towards
our code being incomplete for PCI-E. According to spec, we do not
want to poke any MANC bits at all.

Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-09-27 12:53:42 -07:00
Jeff Kirsher
2f2ca2638c e1000: allow ethtool to pass arbitrary speed advertisment
With a patch, ethtool can now signify the driver to advertise more
than just a single speed/duplex setting. This allows you to tell the
card to advertise in 10/100 in any speed if you don't have a gigabit
switch for instance.

Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-09-27 12:53:40 -07:00
Mitch Williams
49559854c9 e1000: add multicast stats counters
Add 4 multicast and broadcast hardware counters (rx/tx), and eliminate
as many non-hardware counters as possible.

Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-09-27 12:53:37 -07:00
Nicholas Nunley
35574764c7 e1000: remove unused code and make symbols static
Signed-off-by: Nicholas Nunley <nicholas.d.nunley@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-09-27 12:53:34 -07:00
Jeff Kirsher
70c6f30a5e e1000: add enums for several link properties
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-09-27 12:53:31 -07:00
Jeff Kirsher
11241b1069 e1000: rename flow control symbols
Sogned-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-09-27 12:53:28 -07:00
Auke Kok
c4e24f01f1 e1000: keep .suspend and .resume driver methods in CONFIG_PM
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-09-27 12:53:19 -07:00
Auke Kok
0eb5a34cdf e100, e1000, ixgb: Fix an impossible memory overwrite bug
We keep getting requests from people that think that this might be
an exploitable hole where we would overwrite 4 bytes in the netdev
struct if the pci name would exceed 15 characters. In reality this
will never happen but we fix it anyway.

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-09-27 12:53:17 -07:00
Auke Kok
0abb6eb128 e100, e1000, ixgb: update copyright header and remove LICENSE
This update to the copyright header adds the mailinglist, and aligns it
with the kernel licensing as well as remove the offending 'all rights
reserved'.

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-09-27 12:53:14 -07:00
Al Viro
0c5649af3a [PATCH] restore __iomem annotations in e1000
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-25 20:08:10 -04:00
Linus Torvalds
a319a2773a 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: (217 commits)
  net/ieee80211: fix more crypto-related build breakage
  [PATCH] Spidernet: add ethtool -S (show statistics)
  [NET] GT96100: Delete bitrotting ethernet driver
  [PATCH] mv643xx_eth: restrict to 32-bit PPC_MULTIPLATFORM
  [PATCH] Cirrus Logic ep93xx ethernet driver
  r8169: the MMIO region of the 8167 stands behin BAR#1
  e1000, ixgb: Remove pointless wrappers
  [PATCH] Remove powerpc specific parts of 3c509 driver
  [PATCH] s2io: Switch to pci_get_device
  [PATCH] gt96100: move to pci_get_device API
  [PATCH] ehea: bugfix for register access functions
  [PATCH] e1000 disable device on PCI error
  drivers/net/phy/fixed: #if 0 some incomplete code
  drivers/net: const-ify ethtool_ops declarations
  [PATCH] ethtool: allow const ethtool_ops
  [PATCH] sky2: big endian
  [PATCH] sky2: fiber support
  [PATCH] sky2: tx pause bug fix
  drivers/net: Trim trailing whitespace
  [PATCH] ehea: IBM eHEA Ethernet Device Driver
  ...

Manually resolved conflicts in drivers/net/ixgb/ixgb_main.c and
drivers/net/sky2.c related to CHECKSUM_HW/CHECKSUM_PARTIAL changes by
commit 84fa7933a3 that just happened to be
next to unrelated changes in this update.
2006-09-24 10:15:13 -07:00
Patrick McHardy
84fa7933a3 [NET]: Replace CHECKSUM_HW by CHECKSUM_PARTIAL/CHECKSUM_COMPLETE
Replace CHECKSUM_HW by CHECKSUM_PARTIAL (for outgoing packets, whose
checksum still needs to be completed) and CHECKSUM_COMPLETE (for
incoming packets, device supplied full checksum).

Patch originally from Herbert Xu, updated by myself for 2.6.18-rc3.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
2006-09-22 14:53:53 -07:00
Jeff Garzik
f8ec473387 e1000, ixgb: Remove pointless wrappers
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-19 15:27:07 -04:00
Linas Vepstas
72e8d6bbc1 [PATCH] e1000 disable device on PCI error
A recent patch in -mm3 titled
"gregkh-pci-pci-don-t-enable-device-if-already-enabled.patch" causes
pci_enable_device() to be a no-op if the kernel thinks that the device is
already enabled.  This change breaks the PCI error recovery mechanism in
the e1000 device driver, since, after PCI slot reset, the card is no longer
enabled.  This is a trivial fix for this problem.  Tested.

Signed-off-by: Linas Vepstas <linas@austin.ibm.com>
Cc: John Ronciak <john.ronciak@intel.com>
Cc: Jesse Brandeburg <jesse.brandeburg@intel.com>
Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Acked-by: Auke Kok <auke-jan.h.kok@intel.com>
Cc: Jeff Garzik <jeff@garzik.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-19 00:04:29 -04:00
Jeff Garzik
7282d491ec drivers/net: const-ify ethtool_ops declarations
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-13 14:30:00 -04:00
Auke-Jan H Kok
d3148ce9a6 [PATCH] e1000: revert 'e1000: Remove 0x1000 as supported device'
The commit 'e1000: Remove 0x1000 as supported device' (Jeff Kirsher,
673a052fde) Removes PIC device ID 8086:1000
from the list of supported devices. A fix was submitted for the original
issue (commit 6a9516989f).

This commit reverts commit 673a052fde and
re-enables 82542rev3 chips completely.

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-12 22:07:09 -04:00
Jeff Garzik
435b70e65d Merge branch 'upstream-fixes' into upstream 2006-09-12 12:03:54 -04:00
Auke Kok
6a9516989f [PATCH] e1000: fix TX timout hang regression for 82542rev3
Commit 581d708eb4 (oct. 5 2005) introduced
partial Multiqueue support for e1000 which broke macro smartness in setting
up head/tail registers for 82542 rev3 chipsets, making these adapters
completely non-working since 2.6.15.

This commit sets the proper head and tail registers for read and write
descriptor rings. Ths fix was tested on an 82542 rev3 NIC and newer NICs.

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-12 11:46:39 -04:00
Adrian Bunk
cff93eb3d3 [PATCH] make drivers/net/e1000/e1000_hw.c:e1000_phy_igp_get_info() static
This patch makes the needlessly global e1000_phy_igp_get_info() static.

Signed-off-by: Adrian Bunk <bunk@stusta.de>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-06 12:52:52 -04:00
Auke Kok
7cc33234f2 e1000: Increment driver version to 7.2.7-k2
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-08-31 14:27:47 -07:00
Christoph Hellwig
ca6f722419 e1000: clean up skb allocation code
Signed-off-by: Christoph Hellwig <hch@lst.de>
Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-08-31 14:27:47 -07:00
Jesse Brandeburg
5881cde8a3 e1000: Add PCI ID 0x10a4 for our new 4-port PCI-Express device
Device 0x10a4 is a double 82571 on a single PCI-Express card and
has 4 gigabit capable ports.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-08-31 14:27:47 -07:00
Jesse Brandeburg
120cd57644 e1000: unify WoL capability detection code
WoL is constantly giving problems and needed a rewrite. Consolidates
all WoL capabilities into a single function, and disables WoL for all
other ports on the device except for port A.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-08-31 14:27:46 -07:00
Auke Kok
1db2740d78 e1000: Use module param array code
Use module param array code to distinguish between defaults and user
specified values.

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-08-28 14:56:32 -07:00
Auke Kok
e7b4411704 e1000: remove unused part_num reading code
Remove the code that reads part_num from the EEPROM. This part number
is never displayed or queryable by the user.

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-08-28 14:56:30 -07:00
Auke Kok
3d1dd8cb23 e1000: error out if we cannot enable PCI device on resume
Do not ignore errors returned by pci_enable_device, instead error out.

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-08-28 14:56:27 -07:00
Vasily Averin
3fbbc72ef1 e1000: ring buffers resources cleanup
Memory leak was found in 2.6.18-rc4 and e1000 7.2.7 from sourceforge: We
should free resources allocated for previous rings if following allocation
fails.

Signed-off-by: Vasily Averin <vvs@sw.ru>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-08-28 14:56:24 -07:00
Vasily Averin
6dd62ab063 e1000: e1000_probe resources cleanup
Fix resources cleanup in e1000_probe()

Signed-off-by: Vasily Averin <vvs@sw.ru>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-08-28 14:56:22 -07:00
Vasily Averin
401a552b8b e1000: IRQ resources cleanup
irq leak was found in 2.6.18-rc4 and e1000 7.2.7 from sourceforge: if
e1000_up fails in e1000_open() we do not free allocated irq

Signed-off-by: Vasily Averin <vvs@sw.ru>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-08-28 14:56:19 -07:00
Auke Kok
8fc897b00a e1000: Whitespace cleanup, cosmetic changes
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-08-28 14:56:16 -07:00
Jeff Garzik
699a712388 Merge branch 'upstream-fixes' of git://lost.foo-projects.org/~ahkok/git/netdev-2.6 into tmp 2006-08-24 00:45:36 -04:00
Jeff Garzik
299176206b drivers/net: Remove deprecated use of pci_module_init()
From: Michal Piotrowski <michal.k.k.piotrowski@gmail.com>

Signed-off-by: Michal Piotrowski <michal.k.k.piotrowski@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-08-19 17:48:59 -04:00
Adrian Bunk
e4c780b1ff [PATCH] drivers/net/e1000/: possible cleanups
- make needlessly global functions static
- #if 0 the following unused global functions:
  - e1000_hw.c: e1000_mc_addr_list_update()
  - e1000_hw.c: e1000_read_reg_io()
  - e1000_hw.c: e1000_enable_pciex_master()
  - e1000_hw.c: e1000_ife_disable_dynamic_power_down()
  - e1000_hw.c: e1000_ife_enable_dynamic_power_down()
  - e1000_hw.c: e1000_write_ich8_word()
  - e1000_hw.c: e1000_duplex_reversal()
  - e1000_main.c: e1000_io_read()

Signed-off-by: Adrian Bunk <bunk@stusta.de>
Cc: John Ronciak <john.ronciak@intel.com>
Cc: Jesse Brandeburg <jesse.brandeburg@intel.com>
Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Cc: Auke Kok <auke-jan.h.kok@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-08-19 17:44:28 -04:00
Auke Kok
dc335d9735 e1000: Increment driver version to 7.1.9-k6
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-08-16 13:39:09 -07:00
Jeff Kirsher
600c977c08 e1000: Disable aggressive clocking on esb2 with SERDES port
Disable aggressive clocking on esb2 with SERDES port as it causes
hardware problems.

Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-08-16 13:39:04 -07:00
Jeff Kirsher
7820d4281a e1000: Force full DMA clocking for 10/100 speed
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-08-16 13:39:00 -07:00
Jeff Kirsher
c9c1b834c7 e1000: Allow NVM to setup LPLU for IGP2 and IGP3
Allow NVM to setup LPLU for IGP2 and IGP3. Only IGP needs LPLU D3
disabled during init here.

Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-08-16 13:38:54 -07:00
Jesse Brandeburg
1a821ca595 e1000: explicit locking for two ethtool path functions
Explicitly lock two more ethtool entry points completely instead
of the hardware reset only to prevent a race condition.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-08-16 13:38:46 -07:00
Jesse Brandeburg
d658266ed6 e1000: Explicitly power up the PHY during loopback testing.
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-08-16 13:31:33 -07:00
Jeff Kirsher
673a052fde e1000: Remove 0x1000 as supported device
Remove pci ID 8086:1000 from the list fo supported devices. This device
has not functioned with the driver for very long (since v. 5.2.4!)
and we lack the resources to come with a substantial fix. There are only
few cards of this type out there.

Signed-off-by: Jeff Kirsher <Jeffrey.t.kirsher@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-08-16 11:28:49 -07:00
Auke Kok
e15fdd0391 e1000: Same cosmetic fix as earlier sent out for IPV4.
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-08-16 11:28:45 -07:00
David S. Miller
87f5032e0c [E1000]: Convert to netdev_alloc_skb
Signed-off-by: David S. Miller <davem@davemloft.net>
2006-08-02 13:38:27 -07:00
Auke Kok
36902f2e35 e1000: bump version to 7.1.9-k4
Bump the version to 7.1.9-k4 to indicate three extra changes.

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-07-14 16:14:55 -07:00
Auke Kok
eb0f8054dd e1000: fix panic on large frame receive when mtu=default
A panic was reported when receiving 1522 size packets if using
the default MTU. we should set the initial rx buffer length to the
value that e1000changemtu sets so that we can receive any packet
that would not be dropped by LPE=0.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke.jan.h.kok@intel.com>
2006-07-14 16:14:48 -07:00
Auke Kok
f235a2abb2 e1000: remove CRC bytes from measured packet length
After removing the hardware CRC stripping which causes problems with
SOL and related issues, we need to compensate for this changed size.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-07-14 16:14:34 -07:00
Auke Kok
d3d9e484b2 e1000: Redo netpoll fix to address community concerns
The original suggested fix for netpoll was found to be racy on SMP
kernels. While it is highly unlikely that this race would ever be seen
in the real world due to current netpoll usage models, we implemented
this updated fix to address concerns.

Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-07-14 16:14:23 -07:00
Andrew Morton
61ef5c00a6 [PATCH] e1000: irq naming update
Use the new names.

Cc: Auke Kok <auke-jan.h.kok@intel.com>
Cc: Jeff Garzik <jeff@garzik.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-07-12 17:42:39 -04:00
Linus Torvalds
09075ef0fd Merge commit master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 of HEAD
* HEAD:
  [AX.25]: Use kzalloc
  [ATM] net/atm/clip.c: fix PROC_FS=n compile
  [PKT_SCHED]: act_api: Fix module leak while flushing actions
  [NET]: Fix IPv4/DECnet routing rule dumping
  [NET] gso: Fix up GSO packets with broken checksums
  [NET] gso: Add skb_is_gso
  [IRDA]: fix drivers/net/irda/ali-ircc.c:ali_ircc_init()
  [ATM]: fix possible recursive locking in skb_migrate()
  [ATM]: Typo in drivers/atm/Kconfig...
  [TG3]: add amd8131 to "write reorder" chipsets
  [NET]: Fix network device interface printk message priority
2006-07-09 15:50:41 -07:00
Herbert Xu
89114afd43 [NET] gso: Add skb_is_gso
This patch adds the wrapper function skb_is_gso which can be used instead
of directly testing skb_shinfo(skb)->gso_size.  This makes things a little
nicer and allows us to change the primary key for indicating whether an skb
is GSO (if we ever want to do that).

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
2006-07-08 13:34:32 -07:00
Jeff Garzik
c0bc8721b8 Merge branch 'upstream' of git://lost.foo-projects.org/~ahkok/git/netdev-2.6 into upstream
Conflicts:

	drivers/net/e1000/e1000_main.c
2006-07-05 14:32:39 -04:00
Thomas Gleixner
1fb9df5d30 [PATCH] irq-flags: drivers/net: Use the new IRQF_ constants
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Jeff Garzik <jeff@garzik.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-07-02 13:58:51 -07:00
Jörn Engel
6ab3d5624e Remove obsolete #include <linux/config.h>
Signed-off-by: Jörn Engel <joern@wohnheim.fh-wedel.de>
Signed-off-by: Adrian Bunk <bunk@stusta.de>
2006-06-30 19:25:36 +02:00
Auke Kok
e4ac9773be e1000: increase version to 7.1.9-k2
Increment the version to 7.1.9-k2

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-06-27 09:08:34 -07:00
Auke Kok
ae2c3860eb e1000: add ich8lan device ID's
Add the device ID's of the supported ICH8 LAN devices.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-06-27 09:08:30 -07:00
Auke Kok
1f9e7e3d32 e1000: allow user to disable ich8 lock loss workaround
The workaround for the ich8 lock loss problem is only needed for
a very small amount of systems. This adds an option for the user
to disable the workaround.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-06-27 09:08:26 -07:00
Auke Kok
cd94dd0b64 e1000: integrate ich8 support into driver
This hooks up the ich8 structure into the driver itself.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-06-27 09:08:22 -07:00
Auke Kok
d37ea5d562 e1000: add ich8lan core functions
This implements the core new functions needed for ich8's internal
NIC. This includes:

* ich8 specific read/write code
* flash/nvm access code
* software semaphore flag functions
* 10/100 PHY (fe - no gigabit speed) support for low-end versions
* A workaround for a powerdown sequence problem discovered that
affects a small number of motherboard.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-06-27 09:08:17 -07:00
Auke Kok
ab7bc0ad72 e1000: disable ERT
Hardware is reported to have problems with ERT. We disable it for
all hardware to make sure we are not seeing unexplainable user
problems.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-06-27 09:08:13 -07:00
Auke Kok
592600a053 e1000: check return value of _get_speed_and_duplex
We were not checking the return value of get_speed_and_duplex
properly, whih may contain an error value.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-06-27 09:08:09 -07:00
Auke Kok
ee04022a21 e1000: M88 PHY workaround
M88 rev 2 PHY needs a longer downshift to function properly. This adds
a much longer downshift counter for this specific device.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-06-27 09:08:03 -07:00
Auke Kok
f1b3a85354 e1000: fix adapter led blinking inconsistency
Several e1000 adapters were not blinking correctly or inconsistently. This
patch cleans this up and makes them all behave the same as far as possible.

Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-06-27 09:07:56 -07:00
Auke Kok
7dfee0cb1d e1000: disable CRC stripping workaround
CRC stripping is breaking SMBUS-connected BMC's. We disable this
feature to make it work. This fixes related bugs regarding SOL.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-06-27 09:07:50 -07:00
Auke Kok
4ca213a695 e1000: force register write flushes to circumvent broken platforms
A certain AMD64 bridge (8132) has an option to turn on write combining
which breaks our adapter. To circumvent this we need to flush every write.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-06-27 09:07:08 -07:00
Auke Kok
17231712ab e1000: rework module param code with uninitialized values
We can take uninitialized values into account which minimizes code
and allows us to simplify the parameter checking code greatly.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-06-27 09:06:59 -07:00
Auke Kok
864c4e45ec e1000: recycle skb
Recycle an skb to improve performance a bit.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-06-27 09:06:53 -07:00
Auke Kok
a5eafce2ce e1000: change printk into DPRINTK
Changing a printk message to make clear that this message is originating
from e1000.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-06-27 09:06:49 -07:00
Auke Kok
9a53a20298 e1000: add smart power down code
Smart Power Down is a power saving feature in newer e1000 hardware. We
disable it because it causes time to link to be long, but make it a
user choice.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-06-27 09:06:45 -07:00
Auke Kok
0cbabbb072 e1000: small performance tweak by removing double code
buffer_info is already filled at the end of this while() loop.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-06-27 09:06:41 -07:00
Auke Kok
6fdfef1624 e1000: fix CONFIG_PM blocks
e1000_suspend is called even when !CONFIG_PM. The non-PM code inside of it
is properly #ifdef'd. This fixes the compiler warnings when !CONFIG_PM.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-06-27 09:06:36 -07:00
Auke Kok
79f05bf0ba e1000: Make PHY powerup/down a function
In relation to the irq work done earlier we also move the PHY powerup
and powerdown functions into separate functions and move the calls to
_close and _open, making the PHY stay in it's power state as long as
the device is _up.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-06-27 09:06:32 -07:00
Auke Kok
2db10a081c e1000: rework driver hardware reset locking
After studying the driver mac reset code it was found that there
were multiple race conditions possible to reset the unit twice or
bring it e1000_up() double. This fixes all occurences where the
driver needs to reset the mac.

We also remove irq requesting/releasing into _open and _close so
that while the device is _up we will never touch the irq's. This fixes
the double free irq bug that people saw.

To make sure that the watchdog task doesn't cause another race we let
it run as a non-scheduled task.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-06-27 09:06:28 -07:00
Auke Kok
acfbc9fde2 e1000: fix loopback ethtool test
Ethtool was reporting that loopback failed randomly on esb2
systems. Upon study it was found that the phy manual was changed
with respect to the loopback mode bits. The new value fixes it.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-06-27 09:06:24 -07:00
Herbert Xu
7967168cef [NET]: Merge TSO/UFO fields in sk_buff
Having separate fields in sk_buff for TSO/UFO (tso_size/ufo_size) is not
going to scale if we add any more segmentation methods (e.g., DCCP).  So
let's merge them.

They were used to tell the protocol of a packet.  This function has been
subsumed by the new gso_type field.  This is essentially a set of netdev
feature bits (shifted by 16 bits) that are required to process a specific
skb.  As such it's easy to tell whether a given device can process a GSO
skb: you just have to and the gso_type field and the netdev's features
field.

I've made gso_type a conjunction.  The idea is that you have a base type
(e.g., SKB_GSO_TCPV4) that can be modified further to support new features.
For example, if we add a hardware TSO type that supports ECN, they would
declare NETIF_F_TSO | NETIF_F_TSO_ECN.  All TSO packets with CWR set would
have a gso_type of SKB_GSO_TCPV4 | SKB_GSO_TCPV4_ECN while all other TSO
packets would be SKB_GSO_TCPV4.  This means that only the CWR packets need
to be emulated in software.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
2006-06-23 02:07:29 -07:00
Linas Vepstas
282f33c986 [PATCH] e1000: prevent statistics from getting garbled during reset
If a PCI bus error/fault triggers a PCI bus reset, attempts to get the
ethernet packet count statistics from the hardware will fail, returning
garbage data upstream.  This patch skips statistics data collection if the
PCI device is not on the bus.

This patch presumes that an earlier patch,
[PATCH] PCI Error Recovery: e1000 network device driver
has already been applied.

Signed-off-by: Linas Vepstas <linas@austin.ibm.com>
Cc: John Ronciak <john.ronciak@intel.com>
Cc: Jesse Brandeburg <jesse.brandeburg@intel.com>
Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Cc: Jeff Garzik <jeff@garzik.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-06-11 10:35:15 -04:00
Auke Kok
a487a8f7b6 e1000: prevent statistics from garbling during bus resets
If a PCI bus error/fault triggers a PCI bus reset, attempts to get
the ethernet packet count statistics from the hardware will fail,
returning garbage data upstream.  This patch skips statistics data
collection if the PCI device is not on the bus.

Signed-off-by: Linas Vepstas <linas@austin.ibm.com>
Cc: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Acked-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-06-09 11:29:03 -07:00
Jeff Garzik
cac925a4aa Merge branch 'upstream' of git://lost.foo-projects.org/~ahkok/git/netdev-2.6 into tmp 2006-06-08 15:56:17 -04:00
Jeff Garzik
bcd618e4ea Merge branch 'upstream-fixes' into upstream
Conflicts:

	drivers/net/e1000/e1000_ethtool.c
2006-06-08 15:55:45 -04:00
Auke Kok
9026729bfe e1000: add PCI Error Recovery
Various PCI bus errors can be signaled by newer PCI controllers.
This patch adds the PCI error recovery callbacks to the intel gigabit
ethernet e1000 device driver. The patch has been tested, and appears
to work well.

Signed-off-by: Linas Vepstas <linas@linas.org>
Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-06-08 09:30:24 -07:00