Commit Graph

264 Commits

Author SHA1 Message Date
Jesse Brandeburg
fcfb122425 e1000: add queue restart counter
Add a netif_wake/start_queue counter to the ethtool statistics to indicated
to the user that their transmit ring could be too small for their workload.

Signed-off-by: Jesse brandeburg <jesse.brandeburg@intel.com>
Cc: Jamal Hadi <hadi@cyberus.ca>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-12-02 00:12:00 -05:00
Auke Kok
fc2307d00c e1000: New hardware support
Add support for a Low Profile quad-port PCI-E adapter and 2 variants
of the ICH8 systems' onboard NIC's.

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-12-02 00:12:00 -05:00
Jesse Brandeburg
a9ebadd640 e1000: Remove unneeded and unwanted memsets
This memsetting was added in a paranoid rage debugging TX hangs, but
are no longer of importance. We can beef up the performance quite a
bit removing them. Make sure to fill in next_to_watch to allow this.

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
2006-12-02 00:12:00 -05:00
Auke Kok
996695de21 e1000: simplify skb_put call.
Simplify two calls to skb_put by removing one call to it.

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-12-02 00:11:59 -05:00
Jeff Kirsher
2bc35c1078 e1000: reorder pci-e infor struct
Order pci-e capability struct according to bus/pci bus width ordering
preserving the hard pci spec numbers.

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2006-12-02 00:11:59 -05:00
Jeff Kirsher
070f6ffbb8 e1000: fix VR powerdown code
On ich systems during PHY power down to D3, the voltage regulators
were left on.

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2006-12-02 00:11:59 -05:00
Jesse Brandeburg
2ce9047f5d e1000: add mmiowb() for IA64 to sync tail writes
IA64 SMP systems were seeing TX issues with multiple cpu's attempting
to write tail registers unordered. This mmiowb() fixes the issue.

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
2006-12-02 00:11:59 -05:00
Auke Kok
21c4d5e078 e1000: Enble early receive (ERT) on 82573
Enable early receives on 82573 for jumbo frame performance. Jumbo's
are only supported on 82573L with ASPM disabled.

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-12-02 00:11:59 -05:00
Auke Kok
87ca4e5b8d e1000: FIX: enable hw TSO for IPV6
Enable TSO for IPV6. All e1000 hardware supports it. This reduces CPU
utilizations by 50% when transmitting IPv6 frames.

Fix symbol naming enabling ipv6 TSO. Turn off TSO6 for 10/100.

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-12-02 00:11:58 -05:00
Auke Kok
b00dae7cce e1000: Remove DISABLE_MULR debug code
Remove debugging code disabling MULR (multiple reads). It's not usable
for a wide audience and there are no known problems with MULR right
now.

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-12-02 00:11:58 -05:00
Auke Kok
90fb51358a e1000: whitespace changes, comments, typos
Small whitespace changes, comment changes, typo fixes.

Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-12-02 00:11:58 -05:00
Matt LaPlante
0779bf2d2e Fix misc .c/.h comment typos
Fix various .c/.h typos in comments (no code changes).

Signed-off-by: Matt LaPlante <kernel1@cyberdogtech.com>
Signed-off-by: Adrian Bunk <bunk@stusta.de>
2006-11-30 05:24:39 +01:00
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