11 Oct, 2006
4 commits
-
Want to be able to track downstream impact of fiber related
fixes.Signed-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik -
Do flow control negotiation properly. Don't let auto negotiation
status limit renegotiation. Separate desired pause values from
the result of auto negotiation.Signed-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik -
Do correct mapping of pause and duplex when using 1000BaseX fiber
versions of the board.Signed-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik -
The PHY interrupt from the internal fiber is getting
stuck on when the link is down. Add code to handle the
transition and mask it.Signed-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik
05 Oct, 2006
1 commit
-
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
(cherry picked from 1b16e7ac850969f38b375e511e3fa2f474a33867 commit)
26 Sep, 2006
1 commit
-
Add support for older fiber versions of the SysKonnect board. These chipsets
use an internal PHY so they require special handling. The older sk98lin
driver already supported theseSigned-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik
25 Sep, 2006
1 commit
-
* '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 84fa7933a33f806bbbaae6775e87459b1ec584c0 that just happened to be
next to unrelated changes in this update.
23 Sep, 2006
1 commit
-
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
Signed-off-by: David S. Miller
14 Sep, 2006
1 commit
-
Signed-off-by: Jeff Garzik
11 Sep, 2006
1 commit
-
Check if IRQ came from hardware fault (hotplug).
Signed-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik
06 Sep, 2006
4 commits
-
Because of the NAPI and other SMP fixes, let's call
this a version.Signed-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik -
The skge driver has much better performance if transmit done is handled in
NAPI softirq. Change from doing transmit locking in driver (LLTX) and
use device lock.Signed-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik -
The driver needs to access the IRQ status inside of lock to avoid
races with other places changing IRQ mask etc. This may be related
to some of the SMP bugs reported against skge in kernel bugzilla.Signed-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik -
Change to use new netdev_alloc_skb interface for 2.6.18.
Signed-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik
30 Aug, 2006
5 commits
-
Increase version.
Signed-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik -
The user level irq balance daemon uses "eth" as a way to distinquish
ethernet devices. Also, by using device name it is possible to distinquish
different boards.Signed-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik -
To avoid problems with buggy protocols that assume extra header space,
use dev_alloc_skb() when allocating receive buffers.Signed-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik -
At the end of a critical section, we need to force the PCI write
to complete by doing a read.Signed-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik -
The code for suspend/resume needs several fixes. The hardware lock
should be setup in probe only, not in resume. Interrupts should be
disabled during suspend, etc.Signed-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik
20 Aug, 2006
2 commits
-
From: Michal Piotrowski
Signed-off-by: Michal Piotrowski
Signed-off-by: Jeff Garzik -
Signed-off-by: Edgar E. Iglesias
Cc: Stephen Hemminger
Cc: Jeff Garzik
Signed-off-by: Andrew Morton
Signed-off-by: Jeff Garzik
29 Jul, 2006
1 commit
-
Okay, Fix both typo's in one patch .The impact is that the incorrect value
was being computed for blinking LED and interrupt moderation values.Signed-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik
03 Jul, 2006
1 commit
-
Signed-off-by: Thomas Gleixner
Cc: Ingo Molnar
Cc: "David S. Miller"
Cc: Benjamin Herrenschmidt
Cc: Jeff Garzik
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds
01 Jul, 2006
1 commit
-
Signed-off-by: Jörn Engel
Signed-off-by: Adrian Bunk
28 Jun, 2006
1 commit
-
This is needed if we wish to change the size of the resource structures.
Based on an original patch from Vivek Goyal
Cc: Vivek Goyal
Signed-off-by: Andrew Morton
Signed-off-by: Greg Kroah-Hartman
23 Jun, 2006
1 commit
-
First of all it is unnecessary to allocate a new skb in skb_pad since
the existing one is not shared. More importantly, our hard_start_xmit
interface does not allow a new skb to be allocated since that breaks
requeueing.This patch uses pskb_expand_head to expand the existing skb and linearize
it if needed. Actually, someone should sift through every instance of
skb_pad on a non-linear skb as they do not fit the reasons why this was
originally created.Incidentally, this fixes a minor bug when the skb is cloned (tcpdump,
TCP, etc.). As it is skb_pad will simply write over a cloned skb. Because
of the position of the write it is unlikely to cause problems but still
it's best if we don't do it.Signed-off-by: Herbert Xu
Signed-off-by: David S. Miller
09 Jun, 2006
5 commits
-
Update version string.
Signed-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik -
Sometimes boards don't reset properly, and the address read out of the
EEPROM is zero. Stop the insanity before the device gets registered.Signed-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik -
The transmit side code has a number of ring problems that caused some
of the Bugzilla reports. Rather than trying to fix the details, it is safer
to rewrite the code that handles transmit completion and freeing.Signed-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik -
Consolidate all usage of ring low water mark to one value.
Signed-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik -
Since accessing the PHY can take 100's of usecs, use a work queue to
allow spinning in outside of soft/hard irq.Signed-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik
20 May, 2006
3 commits
-
The driver will get stuck (permanent transmit timeout), if the transmit
ring size is set too small. It needs to have enough ring elements to
hold one maximum size transmit.Signed-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik -
Skge driver always causes bad checksums on big-endian.
The checksum in the receive control block was being swapped
when it doesn't need to be.Signed-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik -
The Dlink DGE-560T uses Yukon2 chipset so it needs sky2 driver; and
the DGE-530T uses Yukon1 so it uses skge driver.Bug: http://bugzilla.kernel.org/show_bug.cgi?id=6544
Signed-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik
13 Apr, 2006
1 commit
-
This patch fixes the problem of some Dlink cards picking the wrong
driver. It looks like these cards use Yukon 1 chipset, not Yukon 2.Signed-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik
24 Mar, 2006
5 commits
-
Update version to allow tracking of complaints.
Signed-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik -
Don't need to keep track of available buffers, it is simpler
to just compute the value (ala e1000). Don't need tes on link up
because should always have available buffers then.Signed-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik -
Don't free transmit buffers until the whole set of transmit descriptors
has been marked as done. Otherwise, we risk freeing a skb before the
whole transmit is done.This changes the transmit completion handling from incremental to a
two pass algorithm. First pass scans and records the start of the last
done descriptor, second cleans up until that point.Signed-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik -
Fix count of multicast packets.
Signed-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik -
In the error case we call skge_rx_reuse twice. This is harmless
but unnecessary.Signed-off-by: Stephen Hemminger
Signed-off-by: Jeff Garzik