aboutsummaryrefslogtreecommitdiff
path: root/drivers/net/e1000/e1000_ethtool.c
AgeCommit message (Collapse)Author
2006-10-05IRQ: Maintain regs pointer globally rather than passing to IRQ handlersDavid Howells
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-09-27e1000: possible memory leak in e1000_set_ringparamVasily Averin
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-27e1000: driver state fixes (race fix)Auke Kok
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-27e1000: allow ethtool to pass arbitrary speed advertismentJeff Kirsher
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-27e1000: add multicast stats countersMitch Williams
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-27e1000: remove unused code and make symbols staticNicholas Nunley
Signed-off-by: Nicholas Nunley <nicholas.d.nunley@intel.com> Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-09-27e1000: rename flow control symbolsJeff Kirsher
Sogned-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-09-27e100, e1000, ixgb: update copyright header and remove LICENSEAuke Kok
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-19e1000, ixgb: Remove pointless wrappersJeff Garzik
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-13drivers/net: const-ify ethtool_ops declarationsJeff Garzik
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-08-31e1000: Add PCI ID 0x10a4 for our new 4-port PCI-Express deviceJesse Brandeburg
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-31e1000: unify WoL capability detection codeJesse Brandeburg
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-28e1000: Whitespace cleanup, cosmetic changesAuke Kok
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-08-16e1000: explicit locking for two ethtool path functionsJesse Brandeburg
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-16e1000: Explicitly power up the PHY during loopback testing.Jesse Brandeburg
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-07-05Merge branch 'upstream' of git://lost.foo-projects.org/~ahkok/git/netdev-2.6 ↵Jeff Garzik
into upstream Conflicts: drivers/net/e1000/e1000_main.c
2006-07-02[PATCH] irq-flags: drivers/net: Use the new IRQF_ constantsThomas Gleixner
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-06-27e1000: integrate ich8 support into driverAuke Kok
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-27e1000: fix adapter led blinking inconsistencyAuke Kok
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-27e1000: rework driver hardware reset lockingAuke Kok
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-27e1000: fix loopback ethtool testAuke Kok
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-08Merge branch 'upstream-fixes' into upstreamJeff Garzik
Conflicts: drivers/net/e1000/e1000_ethtool.c
2006-06-08e1000: fix ethtool test irq alloc as "probe"Auke Kok
New code added in 2.6.17 caused setup_irq to print a warning when running ethtool -t eth0 offline. This test marks the request_irq call made by this test as a "probe" to see if the interrupt is shared or not. Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-05-23e1000: remove leading and trailing whitespace.Auke Kok
Some leading and trailing whitespace made it into the driver code here. Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
2006-04-14e1000: Version bump, contact fix, year string changeAuke Kok
Add the sourceforge project mailinglist to the contact information. Bump version to 7.0.38-k2 Update copyright string with the new year. Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com> Signed-off-by: John Ronciak <john.ronciak@intel.com>
2006-03-11[PATCH] drivers/net/e1000/: proper prototypesAdrian Bunk
This patch moves prototypes of global variables and functions to a header file. Signed-off-by: Adrian Bunk <bunk@stusta.de> Acked-by: John Ronciak <john.ronciak@gmail.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-03-02e1000: Fixed the following issues with ESB2 (requires ESB2 support):Jeff Kirsher
- Add restriction for ESB2 to MTU size <=9216 - Removed FIFO errors which were not being used - Fixed issues with loopback - Power management change for saving state and config space - WA to disable recieves and reset device on link loss. Reset needed to be done outside the interrupt context - modified existing tx_timeout_task Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: John Ronciak <john.ronciak@intel.com>
2006-03-02e1000: Add support for new hardware (ESB2)Jeff Kirsher
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: John Ronciak <john.ronciak@intel.com>
2006-03-02e1000: Fix network problems when forced at 100Mb/s and to fix TSO when ↵Jeff Kirsher
forced at 100Mb/s Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: John Ronciak <john.ronciak@intel.com>
2006-03-02e1000: Fix Quadport Wake on LANJeff Kirsher
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: John Ronciak <john.ronciak@intel.com>
2006-03-02e1000: Fix lock up while setting ring parametersJeff Kirsher
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: John Ronciak <john.ronciak@intel.com>
2006-03-02e1000: Fix dead countersJeff Kirsher
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: John Ronciak <john.ronciak@intel.com>
2006-03-02e1000: Remove Multiqueue code until we have support for MSI-X in our hardwareJeff Kirsher
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: John Ronciak <john.ronciak@intel.com>
2006-01-18[PATCH] e1000: Fix whitespaceJesse Brandeburg
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: John Ronciak <john.ronciak@intel.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-01-17[PATCH] e1000: Added firmware version reporting for 8257{1|2|3} controllersJeff Kirsher
The EEPROM image version is reported as a firmware version for these controllers. Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: John Ronciak <john.ronciak@intel.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-01-17[PATCH] e1000: Added hardware support for PCI express, 82546GB, and 82571 FiberJeff Kirsher
Added 82571 fiber to WOL fix for dual port adapters. Added support for 82546GB (Quad Copper). Added PCIe typedef for x2, igp cable length 115, and extended TX CTRL registers. Added parity error detection and PCIe CTRL registers. Added EEPROM config registers. Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: John Ronciak <john.ronciak@intel.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-01-17[PATCH] e1000: Fixed frame size logicJeff Kirsher
Simplified the logic used to assign the frame_size. Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: John Ronciak <john.ronciak@intel.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-01-17[PATCH] e1000: Fix desc. clean upJeff Kirsher
These were two separate community submitted patches. Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: John Ronciak <john.ronciak@intel.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-01-17[PATCH] e1000: Fix loopback logicJeff Kirsher
Fixed the loopback logic to work for the PCI express adapters. Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: John Ronciak <john.ronciak@intel.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-01-17[PATCH] e1000: Fix mulitple queuesJeff Kirsher
Fixed stats when using multiple queues. When multiple queues are enabled, log a message in syslog. Fixed memory allocation for multiple queues. Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: John Ronciak <john.ronciak@intel.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-01-17[PATCH] e1000: Fix adapter structure and prepare for multique fixJeff Kirsher
Fix adapter structure to handle multiple queues and prepping the driver for full multiple queue support, some changes are ifdef'd our unless you define CONFIG_E1000_MQ. Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: John Ronciak <john.ronciak@intel.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-01-17[PATCH] e1000: Fix LED functionality for 82573Jeff Kirsher
Fixed adapter identification issue. Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: John Ronciak <john.ronciak@intel.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-01-17[PATCH] Fix e1000 statsJeff Kirsher
Updated the e1000_stats structure and removed mpx for rx_errors and rx_dropped. Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: John Ronciak <john.ronciak@intel.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-01-17[PATCH] e1000: Fix SoL/IDER link and loopbackJeff Kirsher
Fix so that if a SoL/IDER session is active, do not allow operations which require a PHY reset and instead log a message. Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: John Ronciak <john.ronciak@intel.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-13e1000: Fixes for 8357xJeff Kirsher
- TSO workaround - Fixes eeprom version reporting - Fix loopback test - Fix for WOL Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: John Ronciak <john.ronciak@intel.com> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
2005-11-18[PATCH] e1000: zero-out pointers in e1000_free_desc_ringsJohn W. Linville
In e1000_free_desc_rings, zero-out pointers after the memory they point to is freed. The test rings are static and get re-used, and failures during subsequent test setups can cause e1000_free_desc_rings to get called with dirty pointers. Dirty pointers can cause oopses or crashes... Signed-off-by: John W. Linville <linville@tuxdriver.com>
2005-11-18[PATCH] e1000: avoid leak when e1000_setup_loopback_test failsJohn W. Linville
In e1000_loopback_test, make sure to call e1000_free_desc_rings if e1000_setup_loopback_test fails. Currently in that case it will not get called, causing a leak. Signed-off-by: John W. Linville <linville@tuxdriver.com>
2005-11-05[PATCH] drivers/net/e1000/: possible cleanupsAdrian Bunk
This patch contains the following possible cleanups: - make needlessly global code 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 Signed-off-by: Adrian Bunk <bunk@stusta.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2005-10-28drivers/net: Remove pointless checks for NULL prior to calling kfree()Jesper Juhl
2005-10-04e1000: Flush shadow RAMMallikarjuna R Chilakala
Flush shadow RAM to save updates to ASF related bits for 82573 controllers. These bits are past the first 63 words of NVM. Signed-off-by: Mallikarjuna R Chilakala <mallikarjuna.chilakala@intel.com> Signed-off-by: Ganesh Venkatesan <ganesh.venkatesan@intel.com> Signed-off-by: John Ronciak <john.ronciak@intel.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>