Commit Graph

365 Commits

Author SHA1 Message Date
Stephen Hemminger 291ea6142b [PATCH] sky2: incremental transmit completion
Since a transmit can take several control blocks, the old code waited
until the last control block was marked as done. This code processes
the return values incrementally. This makes slots in the tx ring available
and less chance of getting stuck.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-27 17:56:31 -04:00
Stephen Hemminger 9fa1b1f33c [PATCH] sky2: name irq after eth for irqbalance
Use the ethernet device name when requesting the irq because the
irqbalance daemon looks for the name when deciding policy.
Better to play along with this dubious heuristic.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-27 17:56:31 -04:00
Stephen Hemminger c2716fb407 [PATCH] sky2: workarounds for some 88e806x chips
Workarounds for 88e806x chips from the vendor driver.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-27 17:56:31 -04:00
Stephen Hemminger 91aeb3edbc [PATCH] sky2: use standard pci register capabilties for error register
Use the standard pci capability mechanism to access PCI express error
registers, rather than hard coding the offset. Mask off the PCI express
error from ever occuring on non-PCI express systems.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-27 17:56:31 -04:00
Stephen Hemminger e0ed545903 [PATCH] sky2: gigabit full duplex negotiation
Look at the registers correctly, when doing gigabit full duplex.
Need to look for link partner result.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-27 17:56:31 -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 7282d491ec drivers/net: const-ify ethtool_ops declarations
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-13 14:30:00 -04:00
Stephen Hemminger f65b138ca9 [PATCH] sky2: big endian
Fix support for big endian platforms like PPC.
Still not sure about VLAN acceleration (does it need swapping)?

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-13 13:27:44 -04:00
Stephen Hemminger b89165f2b7 [PATCH] sky2: fiber support
Fix the support for fiber connected gigabit boards.
Allow half duplex gigabit to be configured.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-13 13:27:44 -04:00
Stephen Hemminger 2eaba1a280 [PATCH] sky2: tx pause bug fix
Fix problems with transmit pause frames. The driver was telling the
GMAC to flush (not process) pause frames. Manually disabling pause wasn't
working because of problems in the setup.

This maybe the cause of the lockup under load.
	http://bugzilla.kernel.org/show_bug.cgi?id=6839

Patch against netdev-2.6 git tree

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-13 13:27:44 -04:00
Stephen Hemminger 2f4a66ad49 [PATCH] sky2: more pci device id's
Some more Marvell device id's, these are from the latest SysKonnect
vendor driver version of sk98lin (8.36).

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-06 11:10:50 -04:00
shemminger@osdl.org e981d47b9f [PATCH] sky2: version 1.7
Change version number for this bundle.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-08-29 17:18:30 -04:00
shemminger@osdl.org 98232f85ff [PATCH] sky2: pci post bug
Make sure that PCI write occurs before the delay.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-08-29 17:18:30 -04:00
shemminger@osdl.org d3bcfbeb27 [PATCH] sky2: power down PHY when not up
To save power, don't enable power to the PHY until device is brought up.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-08-29 17:18:30 -04:00
shemminger@osdl.org 1d179332f8 [PATCH] sky2: optimize checksum offload information
Since many packets have the same checksum starting offset and insertion
location; the driver can save the last information and only tell hardware
when it changes.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-08-29 17:18:30 -04:00
shemminger@osdl.org e07560cd4f [PATCH] sky2: TSO mss optimization
The MSS in the transmit engine only has to change if TSO mtu changes. This
means less commands to the chip when mixing TSO and regular data.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-08-29 17:18:30 -04:00
shemminger@osdl.org bb507fe11f [PATCH] sky2: MSI test timing
The test for MSI IRQ could have timing issues. The PCI write needs to be
pushed out before waiting, and the wait queue should be initialized before
the IRQ.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-08-29 17:18:30 -04:00
shemminger@osdl.org 97bda706b4 [PATCH] sky2: dont use force status bit
Don't use force status bit. It was never implemented on all chips, or has
no impact.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-08-29 17:18:29 -04:00
shemminger@osdl.org 497d7c8681 [PATCH] sky2: use netdev_alloc_skb
Use netdev_alloc_skb for buffer allocation to allow for headroom.
This prevents bugs in code paths that assume extra space at the
front and makes sky2 behave like other drivers.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-08-29 17:18:29 -04:00
shemminger@osdl.org fba5008cda [PATCH] sky2: remove cloned/pskb_expand_head check
The code to handle cloned skb overwriting is unnecessary in the
sky2 driver and is buggy. The bug is that pskb_expand_head can change the
skb but the driver has already mapped in the header.

Since the sky2 hardware doesn't need to overwrite memory, the buggy
code can just be removed; it was mistakenly copied from the tg3
driver.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-08-29 17:18:29 -04:00
Jeff Garzik f5c7db1c91 Merge branch 'upstream-fixes' into upstream 2006-08-10 08:31:03 -04:00
Stephen Hemminger 8d3d35b4e2 [PATCH] sky2: phy power problems on 88e805X chips
On the 88E805X chipsets (used in laptops), the PHY was not getting powered
out of shutdown properly. The variable reg1 was getting reused incorrectly.
This is probably the cause of the bug.
	http://bugzilla.kernel.org/show_bug.cgi?id=6471

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-08-10 08:30:48 -04:00
Stephen Hemminger fe2a24dfc5 [PATCH] sky2: status interrupt handling improvement
More changes to prevent losing status and causing hangs.
The hardware is smarter than I gave it credit for.
Clearing the status IRQ causes the status state machine to
toggle an IRQ if needed and post any more transmits.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-08-03 17:36:39 -04:00
Stephen Hemminger 57fa442c1e [PATCH] sky2: more pci device ids
Recent vendor driver and customer reports show more devices.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-08-03 17:31:56 -04:00
Stephen Hemminger 5f5d83fdbf [PATCH] sky2: add another PCI ID
Yet another PCI ID for 88E8056

Signed-off-by: Stephen Hemminger <sch@sch-laptop.localdomain>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-07-19 13:49:04 -04:00
Stephen Hemminger caa0371e8b [PATCH] sky2: NAPI poll fix
When sky2 driver gets lots of received packets at once, it can get stuck.
The NAPI poll routine gets called back to keep going, but since no IRQ bits
are set it doesn't make progress.

Increase version, since this is serious enough problem that I want to be
able to tell new from old problems.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-07-17 13:27:46 -04:00
Stephen Hemminger 22e1170310 [PATCH] sky2: optimize receive restart
When the driver handles multiple packets per NAPI poll, it is
better to reload the receive ring, then tell the hardware. Otherwise,
under packet storm with flow control, the driver/hardware will degrade
down to one packet getting through per pause-exchange.

Likewise on transmit, don't wakeup until a little more than minimum
ring space is available.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-07-12 18:39:22 -04:00
Stephen Hemminger afa195da45 [PATCH] sky2: PHY power on delays
The documentation says we need to wait after turning on the PHY.
Also, don't enable WOL by default.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-07-12 18:39:21 -04:00
Stephen Hemminger 6a5706b99c [PATCH] sky2: NAPI suspend/resume of dual port cards
The changes to handle suspend/resume didn't handle the case where
a dual port card has the first port down, but the second is running.
In this driver, all NAPI polling is done on the primary port.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-07-12 18:39:21 -04:00
Stephen Hemminger 59139528c8 [PATCH] sky2: sky2_reset section mismatch
Since sky2_reset gets call from sky2_resume it shouldn't be tagged
with devinit.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-07-12 18:39:21 -04: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
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
Greg Kroah-Hartman 7c7459d1f9 [PATCH] 64bit resource: fix up printks for resources in networks drivers
This is needed if we wish to change the size of the resource structures.

Based on an original patch from Vivek Goyal <vgoyal@in.ibm.com>

Cc: Vivek Goyal <vgoyal@in.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2006-06-27 09:23:58 -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
Stephen Hemminger 88d113601c [PATCH] sky2: netconsole suspend/resume interaction
A couple of fixes that should prevent crashes when using netconsole and
suspend/resume. First, netconsole poll routine shouldn't run unless the
device is up; second, the NAPI poll should be disabled during suspend.

This is only an issue on sky2, because it has to have one NAPI poll
routine for both ports on dual port boards. Normal drivers use
netif_rx_schedule_prep and that checks for netif_running.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-06-17 10:52:12 -07:00
Stephen Hemminger eb35cf60e4 [PATCH] sky2: stop/start hardware idle timer on suspend/resume
The resume bug was caused not by an early interrupt but because the idle
timeout was not being stopped on suspend.  Also disable hardware IRQ's
on suspend.  Will need to revisit this with hotplug?

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-06-13 13:16:41 -07:00
Stephen Hemminger 8ab8fca207 [PATCH] sky2: save/restore base hardware irq during suspend/resume
The hardware should be fully shut off during suspend, and the base
irq mask restored during resume.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-06-13 13:16:41 -07:00
Stephen Hemminger 26ec43f132 [PATCH] sky2: fix hotplug detect during poll
If the poll routine detects no hardware available, it needs to dequeue
it self from the network poll list. Linus didn't understand NAPI.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-06-13 13:16:41 -07:00
Stephen Hemminger f05267e7de [PATCH] sky2: don't hard code number of ports
It is cleaner, to not loop over both ports if only one exists.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-06-13 13:16:41 -07:00
Stephen Hemminger 2ccc99b7b7 [PATCH] sky2: set_power_state should be void
The set power state function is cleaner if it doesn't return anything.
The only caller that could fail is in suspend() and it can check the argument
there.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-06-13 13:16:40 -07:00
Linus Torvalds d374c1c128 [sky2] Fix sky2 network driver suspend/resume
This fixes two independent problems: it would not save the PCI state on
suspend (and thus try to resume a nonexistent state on resume), and
while shut off, if an interrupt happened on the same shared irq, the irq
handler would react very badly to the interrupt status being an invalid
all-ones state.

Acked-by: Jeff Garzik <jgarzik@pobox.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-06-12 12:53:27 -07:00
Stephen Hemminger a1433ac4ab [PATCH] sky2: fix jumbo packet support
The truncate threshold calculation to prevent receiver from getting stuck
was incorrect, and it didn't take into account the upper limit on bits
in the register so the jumbo packet support was broken.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-05-24 00:36:09 -04:00
Stephen Hemminger c9b84dcac6 [PATCH] sky2 version 1.4
Need to track impact of this group of changes.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-05-20 00:15:39 -04:00
Stephen Hemminger 86fba6342d [PATCH] sky2: force NAPI repoll if busy
If the status ring processing can't keep up with the incoming frames,
it is more efficient to have NAPI keep scheduling the poll routine
rather than causing another interrupt.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-05-20 00:15:39 -04:00
Stephen Hemminger 86a31a759f [PATCH] sky2: more fixes for Yukon Ultra
Logic error in the phy initialization code. Also, turn on wake on lan
bit in status control.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-05-20 00:15:39 -04:00
Stephen Hemminger 2d2a387199 [PATCH] Subjec: sky2, skge: correct PCI id for DGE-560T
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 <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-05-20 00:15:39 -04:00
Stephen Hemminger ee7abb04df [PATCH] sky2: allow dual port usage
If both ports are receiving on the SysKonnect dual port cards,
then it appears the bus interface unit can give an interrupt status
for frame before DMA has completed.  This leads to bogus frames
and general confusion. This is why receive checksumming is also
messed up on dual port cards.

A workaround for the out of order receive problem is to eliminating
split transactions on PCI-X.

This version is based of the current linux-2.6.git including earlier
patch to disable dual ports.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-05-20 00:15:39 -04:00
Stephen Hemminger 843a46f423 sky2: prevent dual port receiver problems
When both ports are receiving simultaneously, the receive logic gets confused
and may pass up a packet before it is full. This causes hangs, and IP will see
lots of garbage packets. There is even the potential for data corruption if
a later arriving packet DMA's into freed memory.

It looks like a hardware bug because status arrives for a packet but no
data is there. Until this bug is worked out, block the user from bringing
up both ports at once.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
2006-05-15 12:35:01 -07:00
Linus Torvalds 6314410dd1 Merge branch 'upstream' of master.kernel.org:/pub/scm/linux/kernel/git/shemminger/netdev-2.6
* 'upstream' of master.kernel.org:/pub/scm/linux/kernel/git/shemminger/netdev-2.6:
  sis900: phy for FoxCon motherboard
  dl2k: use DMA_48BIT_MASK constant
  phy: mdiobus_register(): initialize all phy_map entries
  sky2: ifdown kills irq mask
2006-05-10 14:59:29 -07:00
Stephen Hemminger f4ea431bb7 sky2: ifdown kills irq mask
Bringing down a port also masks off the status and other IRQ's
needed for device to function due to missing paren's.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
2006-05-10 14:03:41 -07:00
Stephen Hemminger 6d4b0f617d sky2: version 1.3
Update version number, to track changes.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
2006-05-08 16:00:28 -07:00
Stephen Hemminger ed6d32c7a9 Add more support for the Yukon Ultra chip found in dual core centino laptops.
The newest Yukon Ultra chipset's require more special tweaks.
They seem to be like the Yukon XL chipsets. This code is transliterated
from the latest SysKonnect driver; I don't have any Ultra hardware.

Signed-off-by: Stephe Hemminger <shemminger@osdl.org>
Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
2006-05-08 16:00:27 -07:00
Stephen Hemminger 72cb852920 sky2: synchronize irq on remove
Need to make sure interrupt is not racing with unregister of
network device.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
2006-05-08 16:00:27 -07:00
Stephen Hemminger e71ebd7327 sky2: dont write status ring
It is more efficient not to write the status ring from the
processor and just read the active portion.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
2006-05-08 16:00:27 -07:00
Stephen Hemminger 01bd75645f sky2: edge triggered workaround enhancement
Need to make the edge-triggered workaround timer faster to get marginally
better peformance. The test_and_set_bit in schedule_prep() acts as a barrier
already. Make it a module parameter so that laptops who are concerned
about power can set it to 0; and user's stuck with broken BIOS's
can turn the driver into pure polling.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
2006-05-08 16:00:27 -07:00
Stephen Hemminger cb5d954730 sky2: use mask instead of modulo operation
Gcc isn't smart enough to know that it can do a modulo
operation with power of 2 constant by doing a mask.
So add macro to do it for us.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
2006-05-08 16:00:27 -07:00
Stephen Hemminger f55925d7eb sky2: tx ring index mask fix
Mask for transmit ring status was picking up bits from the
unused sync ring.  They were always zero, so far...
Also, make sure to remind self not to make tx ring too big.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
2006-05-08 16:00:25 -07:00
Stephen Hemminger 1e5f1283a2 sky2: status irq hang fix
The status interrupt flag should be cleared before processing,
not afterwards to avoid race. Need to process in poll routine
even if no new interrupt status. This is a normal occurrence when
more than 64 frames (NAPI weight) are processed in one poll routine.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
2006-05-08 16:00:24 -07:00
Stephen Hemminger d324031245 sky2: backout NAPI reschedule
This is a backout of earlier patch.

The whole rescheduling hack was a bad idea. It doesn't really solve
the problem and it makes the code more complicated for no good reason.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
2006-05-08 16:00:23 -07:00
Stephen Hemminger bdf9c27d02 [PATCH] sky2: version 1.2
Update to version 1.2

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-04-26 06:19:46 -04:00
Stephen Hemminger 98712e5e33 [PATCH] sky2: reset function can be devinit
The sky2_reset function only called from sky2_probe.
Maybe the compiler was smart enough to figure this out already.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-04-26 06:19:46 -04:00
Stephen Hemminger 4a15d56f78 [PATCH] sky2: use ALIGN() macro
The ALIGN() macro in kernel.h does the same math that the
sky2 driver was using for padding.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-04-26 06:19:45 -04:00
Stephen Hemminger d27ed38765 [PATCH] sky2: add fake idle irq timer
Add an fake NAPI schedule once a second. This is an attempt to work around
for broken configurations with edge-triggered interrupts.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-04-26 06:19:45 -04:00
Stephen Hemminger 734cbc363b [PATCH] sky2: reschedule if irq still pending
This is a workaround for the case edge-triggered irq's. Several users
seem to have broken configurations sharing edge-triggered irq's. To avoid
losing IRQ's, reshedule if more work arrives.

The changes to netdevice.h are to extract the part that puts device
back in list into separate inline.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-04-26 06:19:45 -04:00
Stephen Hemminger 43f2f10444 [PATCH] sky2: bad memory reference on dual port cards
Sky2 driver will oops referencing bad memory if used on
a dual port card.  The problem is accessing past end of
MIB counter space.

Applies for both 2.6.17 and 2.6.16 (with fuzz)

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-04-12 18:11:23 -04:00
Stephen Hemminger 5636f72794 [PATCH] dlink pci cards using wrong driver
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 <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-04-12 18:04:03 -04:00
Stephen Hemminger 15240072ac [PATCH] sky2: dont need to use dev_kfree_skb_any
Transmit buffers are always freed with interrupts enabled (softirq),
so we can just call dev_kfree_skb.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-03-23 17:13:53 -05:00
Stephen Hemminger 050ff18016 [PATCH] sky2: Fix RX stats
Unicast packets are shown as multicast, real multicast packets are missing.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-03-23 17:13:53 -05:00
Stephen Hemminger d26045404c [PATCH] sky2: typo in last stats patch
Typo in last stats patch.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-03-23 17:13:53 -05:00
Stephen Hemminger eadfa7ddca [PATCH] sky2: more ethtool stats
Expose all the available hardware statistics via ethtool.
And cleanup some of the statistics definitions.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-03-22 20:30:45 -05:00
Stephen Hemminger 8368f31c8f [PATCH] sky2 version 1.1
Set version to 1.1

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-03-21 16:00:53 -05:00
Stephen Hemminger d257924e85 [PATCH] sky2: handle all error irqs
The hardware has additional error trap interrupt bits.  I have never seen
them trigger, but if they do, it looks like this might be useful.

Signed-off-by: Stephen Hemminger <shemminger@osdl.rog>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-03-21 16:00:53 -05:00
Stephen Hemminger 8f24664da6 [PATCH] sky2: transmit recovery
This patch decodes state and revovers from any races in the transmit
timeout and NAPI logic. It should never trigger, but if it does then
do the right thing.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-03-21 16:00:52 -05:00
Stephen Hemminger d89e134395 [PATCH] sky2: whitespace fixes
Small whitespace fixes.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-03-21 16:00:52 -05:00
Stephen Hemminger fb2690a9bf [PATCH] sky2: add MSI support
Add MSI support to sky2 driver.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-03-21 16:00:52 -05:00
Stephen Hemminger 77b3d6a2d5 [PATCH] sky2: coalescing parameters
Change default coalescing parameters slightly, and allow wider
range of values.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-03-21 16:00:52 -05:00
Stephen Hemminger e07b1aa8b3 [PATCH] sky2: rework of NAPI and IRQ management
Redo the interupt handling of sky2 driver based on the IRQ mangement
documentation. All interrupts are handled by the device0 NAPI poll
routine.

Don't need to adjust interrupt mask in IRQ context, done only when
changing device under RTNL. Therefore don't need hwlock anymore.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-03-21 16:00:52 -05:00
Stephen Hemminger c4b1580e8a [PATCH] sky2: drop broken wake on lan support
Remove wake on lan support for now. It doesn't work right, and I
don't have a machine with working suspend/resume to test or fix it.
It will be re-enabled later.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-03-21 16:00:52 -05:00
Stephen Hemminger 290d4de5b7 [PATCH] sky2: remove support for untested Yukon EC/rev 0
The Yukon EC/rev0 (A1) chipset requires a bunch of workarounds. I copied these
from sk98lin.  But since they never got tested and add more cruft to the code;
any attempt at using driver as is on this version will probably fail.

It looks like this was a early engineering sample chip revision, if it ever shows
up on a real system. Produce an error message.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-03-21 16:00:51 -05:00
Stephen Hemminger 70f1be4812 sky2: truncate oversize packets
Turn on truncation to prevent getting choked by frames larger than expected.
Without this fix, driver hangs after receiving an oversize packet.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
2006-03-09 23:19:03 +01:00
Stephen Hemminger b19666d920 sky2: force early transmit interrupts
Avoid premature transmit ring full conditions.
Force a transmit status interrupt if transmit ring gets nearly full
and after a TSO send.

Allow more entries in transmit ring to be used if dma_addr is 32 bits

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
2006-03-09 23:19:02 +01:00
Stephen Hemminger 28a3186019 sky2: not random enough
Don't use sky2 to seed random pool beacause the network packet arrival time
will not be truly random due to NAPI and interrupt mitigation.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
2006-03-09 23:19:01 +01:00
Stephen Hemminger 958ddb75b0 [PATCH] sky2: remove MSI support
Remove Message Signaled Interrupt support (for 2.6.16).
MSI is inherently edge-triggered and that is incompatiable (without more
work) with NAPI.

In future, will replace with smarter lockless-IRQ handling like
tg3.c

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-02-28 18:06:25 -05:00
Stephen Hemminger 791917deb6 [PATCH] sky2: close race on IRQ mask update.
Need to avoid race in updating IRQ mask.  This can probably be replaced
smarter use of the interrupt control registers (if/when chipset
docs are available).

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
2006-02-23 01:25:26 +01:00
Stephen Hemminger 56a645cc1b [PATCH] sky2: use device iomem to access PCI config
To avoid problems with PCI config access without ACPI (or busted ACPI tables),
use the device's window into PCI config space.

I know this probably will upset the purists, but I would rather have users
than ACPI testers. It also generates less code.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
2006-02-23 01:25:23 +01:00
Stephen Hemminger 9a6d343188 [PATCH] sky2: force early transmit status
Need to force a transmit coalesce timer restart after processing
transmit packets. Otherwise, can get transmit status after last
update and chip doesn't send the next one.

Can go with the chip defaults for coalescing timers, except for
Tx timer which needs to be bigger.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
2006-02-23 01:25:03 +01:00
Stephen Hemminger a8fd6266da [PATCH] sky2: poke coalescing timer to fix hang
Need to restart the interrupt coalescing timer after clearing the interrupt,
to avoid races with interrupt timer and processing.

Patch from Carl-Daniel Halfinger

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
2006-02-23 01:24:04 +01:00
Stephen Hemminger ff81fbbe32 [PATCH] sky2: limit coalescing values to ring size
Don't allow coalescing values to be bigger than the transmit ring.
Since if you set them that big, the interrupt never happens and driver
livelocks.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
2006-02-23 01:23:40 +01:00
Stephen Hemminger 977bdf06ca [PATCH] sky2: yukon-ec-u chipset initialization
Add more complete setup code for Yukon EC_U chipset.
Based on matching code in 8.31 code in SysKonnect vendor driver.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
2006-02-23 01:23:36 +01:00
Stephen Hemminger 6f4c56b2ae [PATCH] sky2: speed setting fix
Users report problems w/ auto-negotiation disabled and the link set
to 100/Half or 10/Half.  Problems range from poor performance to no
link at all.

The current sky2 code does not set things properly on link up if
autonegotiation is disabled.  Plus it does not contemplate a 10Mbit
setting at all.  This patch corrects that.

Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-02-17 16:16:21 -05:00
Stephen Hemminger fa8d3549b5 [PATCH] sky2: version 0.15 update
Increase version, and get rid of out-dated comment.
Speed setting has worked for quite a while.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-02-07 02:00:36 -05:00
Stephen Hemminger 4d52b48b43 [PATCH] sky2: support msi interrupt (revised)
This hardware supports Message Signaled interrupts.
When setting up, use software interrupt to check for bad hardware.

Signed-off-by: Stephen Hemminger <shemminger @osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-02-07 02:00:36 -05:00
Stephen Hemminger db992c970d [PATCH] sky2: add irq to entropy pool
The sky2 interrupt can be used to add entropy.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-02-07 02:00:36 -05:00
Stephen Hemminger f9a66c7f5f [PATCH] sky2: clear irq race
Move the interrupt clear to before processing, this avoids a
possible races with status delaying.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-02-07 02:00:35 -05:00
Stephen Hemminger a8ab1ec0c3 [PATCH] sky2: set mac address fix
Using the sky2 driver with bonding can result in oopses related to
reinitializing the PHY when the MAC address is changed (which bonding
is wont to do).  This patch changes sky2_set_mac_address to take less
drastic measures.

This is analagous to the skge patch here:

	http://lkml.org/lkml/2005/9/29/399

which fixed the issue here:

	http://bugzilla.kernel.org/show_bug.cgi?id=5271

Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-02-07 02:00:35 -05:00
Stephen Hemminger d28d487027 [PATCH] sky2: ethtool rx_coalesce settings fix
This fixes setting rx_coalesce_usecs_irq via ethtool in sky2.
The write was directed to the wrong register.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-02-07 02:00:35 -05:00
Stephen Hemminger 2d42d21f11 [PATCH] sky2: pci config space checking
There were bugs in mmconfig access to PCI space, up to and
include 2.6.16-rc1. These prevented the sky2 driver from being
able to clear PCI express errors.

This patch makes the driver check (during probe), for errors
in PCI config access and fail.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-02-07 02:00:35 -05:00
Stephen Hemminger 08c06d8a90 [PATCH] sky2: power management fix
Fix suspend/resume for sky2. The status ring was getting reallocated
and a bunch of other mistakes. Also, check return from power_state
on resume.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-02-07 02:00:35 -05:00
Stephen Hemminger 0570cc0819 [PATCH] sky2: 0.13 version
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-01-17 19:27:31 -05:00
Stephen Hemminger 302d12522a [PATCH] sky2: more conservative transmit locking
Be more careful about transmit locking, this solves a possible race
between tx_complete and transmit, that would cause a tx timeout.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-01-17 19:27:30 -05:00
Stephen Hemminger 28bd181a8e [PATCH] sky2: don't inline so much
Don't need to inline quite so many routines, let the compiler
decide

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-01-17 19:27:30 -05:00
Stephen Hemminger 6aad85d673 [PATCH] sky2: use kzalloc
Can use kzalloc here.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-01-17 19:27:30 -05:00
Stephen Hemminger 3be92a7023 [PATCH] sky2: ratelimit error messages
Make sure and rate limit all the error messages that might occur. If a problem
occurs then a few messages are enough.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-01-17 19:27:30 -05:00
Stephen Hemminger a036119f97 [PATCH] sky2: optimize for 32 bit dma
Small optimization, if dma addresses are 32 bits, then high
bits are always zero.

Signed-off-by: Stephen Hemminger <shemminger@osdl.or>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-01-17 19:27:30 -05:00
Stephen Hemminger dc4d5ea221 [PATCH] sky2: don't bother clearing status ring elements
Don't need to zero out the status ring entries after processing.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-01-17 19:27:29 -05:00
Stephen Hemminger 762c2de2e6 [PATCH] sky2: write barrier's
Be more careful about memory barriers. The only place we really
need them is before and after updating the chip's ring interface.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-01-17 19:27:29 -05:00
Stephen Hemminger 1c28f6ba60 [PATCH] sky2: fix ram buffer for Yukon FE rev 2
Fix problems with Yukon FE rev 2 chipset. Don't cut and paste bugs in from
sk98lin driver. Change how the ram buffer is divided up, and make the math
clearer. Also, set the thresholds where rx takes precedence. The threshold
values are just guesses at this point, it might be worth tuning them later.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-01-17 19:27:29 -05:00
Stephen Hemminger e0c94455ce [PATCH] sky2: version 0.12
Version update.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-01-17 19:27:29 -05:00
Stephen Hemminger d1f3d4dddd [PATCH] sky2: call pci_set_consistent_dma_mask
Need to call pci_set_consistent_dma_mask in the case of 64 bit
DMA.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-01-17 19:27:29 -05:00
Stephen Hemminger 82788c7a47 [PATCH] sky2: receive buffer alignment
Need to make sure that sky2 receive buffers are 64 bit
aligned. Also, don't need to start off with GFP_ATOMIC
on initial setup.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-01-17 19:27:28 -05:00
Stephen Hemminger c4c48d83e9 [PATCH] sky2: version 0.11
Version number change.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-24 09:38:35 -05:00
Stephen Hemminger 6e15b71249 [PATCH] sky2: handle hardware packet overrun
It is possible for hardware to get confused when an oversized frame
is received. In that case, just drop the packet and increment a counter.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-24 09:38:35 -05:00
Stephen Hemminger 6ed995bb29 [PATCH] sky2: don't lose multicast addresses
Don't lose multicast addresses when link goes down or ring
parameters change.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-24 09:38:35 -05:00
Stephen Hemminger 1b537565a8 [PATCH] sky2: handle out of memory on admin changes
Don't die if we run out of memory on mtu or ring parameter change.
For other admin operations, don't rebuild Rx ring, just restart the PHY.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-24 09:38:35 -05:00
Stephen Hemminger fed954dafc [PATCH] sky2: version 0.10
Change version number.  Still don't have enough history on this
to call it 1.0 yet.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-12 15:27:22 -05:00
Stephen Hemminger 75d070c56f [PATCH] sky2: disable rx checksum on Yukon XL
Under load, my SysKonnect SK-9S22 sees duplicate checksums from
earlier packets.  Doesn't happen on other platforms so just disable
receive checksum there.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-12 15:27:22 -05:00
Stephen Hemminger 585b56012f [PATCH] sky2: turn on tx flow control
Turn symmetric flow control on by default. This was an oversight
in the initial versions.

Signed-off-by: Stephen HEmminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-12 15:27:22 -05:00
Stephen Hemminger d70cd51ac0 [PATCH] sky2: prefetch tuning
Add a couple more prefetches to where we walk the rings.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-12 15:27:21 -05:00
Stephen Hemminger 8c463ef792 [PATCH] sky2: quiet ring full message in case of race
Don't print ring full message if we lose race.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-12 15:27:21 -05:00
Stephen Hemminger 8cc048e338 [PATCH] sky2: handle tx timeout
Put more logic in to try and handle transmit timeout recovery.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-12 15:27:21 -05:00
Stephen Hemminger 69634ee736 [PATCH] sky2: interrupt coalescing tuning
Adjust interrupt deferral values for better performance and avoid
starvation issues under stress.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-12 15:27:21 -05:00
Stephen Hemminger 3e4b32e116 [PATCH] sky2: interrupt/poll optimization
Optimize poll routine by not clearing interrupt till after
processing, and checking for more work before re-enable.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-12 15:27:21 -05:00
Stephen Hemminger af2a58acb1 [PATCH] sky2: transmit complete routine optimization
Hand optimize transmit completion routine.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-12 15:27:21 -05:00
Stephen Hemminger 13b97b74b9 [PATCH] sky2: transmit complete index optimization
Change transmit complete handling to use the status values
in the poll list because they are in-cache, rather than reading
non-cached memory for chips status.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-12 15:27:21 -05:00
Stephen Hemminger 0e3ff6aab1 [PATCH] sky2: transmit logic fixes
Some transmit side small fixes:
 * When computing number of list elements per transmit, do full
   comparision to check for checksuming.
 * Get rid of racy check for tx_complete
 * Change stop test to match wake condition.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-12 15:27:21 -05:00
Stephen Hemminger 6cdbbdf305 [PATCH] sky2: tx/rx ring data structure split
Split Tx and Rx ring into two different data structures.
Tx needs the next value (to handle partial status), and
Rx always needs the mapaddr (to handle resubmitting same buffer).

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-12 15:27:20 -05:00
Stephen Hemminger 734d186846 [PATCH] sky2: map length optimization
Don't need to keep track of mapping length in ring structure
because we can get the same info from other info.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-12 15:27:20 -05:00
Stephen Hemminger 129372d052 [PATCH] sky2: ring distance optimization
Faster way to compute ring distance.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-12 15:27:20 -05:00
Stephen Hemminger f2e46561cc [PATCH] sky2: no irq disable needed during tx
Don't need to disable interrupts during the transmit routine.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-12 15:27:20 -05:00
Stephen Hemminger 91c86df5a8 [PATCH] sky2: phy processing in workqueue rather than tasklet
Do phy processing in a work queue rather than a tasklet.
This means we can let bottom halves run.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-12 15:27:20 -05:00
Stephen Hemminger fb17358fe3 [PATCH] sky2: ethtool get/set interrupt coalescing
Add support for get/set the interrupt coalescing settings.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-12 15:27:20 -05:00
Stephen Hemminger bdb5c58ebe [PATCH] sky2: copy threshold as module parameter
Make the copy threshold a module parameter for those who
may want to turn it off.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-12 15:27:20 -05:00
Stephen Hemminger 92f965e8c5 [PATCH] sky2: don't die if we see chip rev 0xb5
There maybe new versions of Yukon2 in the future, so make the
driver more robust to handle this.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-12 15:27:19 -05:00
Stephen Hemminger f89c2b4645 [PATCH] sky2: interrupt not cleared.
One of the rearrangements dropped this and it means
sky2 spins in napi/interrupt.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-03 20:29:03 -05:00
shemminger@osdl.org 5f4f9dc113 [PATCH] sky2: update version number
Update version number and print version in boot message.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-01 02:20:21 -05:00
shemminger@osdl.org 50241c4c59 [PATCH] sky2: use pci_register_driver
Switch to using pci_register_driver as per current convention.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-01 02:20:21 -05:00
shemminger@osdl.org af4ed7e6ba [PATCH] sky2: remove pci-express hacks
Eliminate special case tuning for PCI-Express. This code
causes receive hangs and doesn't help performance much anyway.

Signed-off-by: Stephen Hemminger <shemmnger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-01 02:20:21 -05:00
shemminger@osdl.org 2224795d7e [PATCH] sky2: dual port tx completion
Sometimes on dual port cards, one tx complete may cover both
ports. To handle that rearrange poll routine to lookup at
end.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-01 02:20:20 -05:00
shemminger@osdl.org 018d1c667e [PATCH] sky2: race with MTU change
Avoid possible race conditions when doing MTU and change and shutdown.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-01 02:20:20 -05:00
shemminger@osdl.org 0a12257697 [PATCH] sky2: change netif_rx_schedule_test to __netif_schedule_prep
I didn't like the name netif_rx_schedule_test(), in earlier patches
and changed to __netif_rx_schedule_prep to be more consistent.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-01 02:20:20 -05:00
shemminger@osdl.org a018e3305f [PATCH] sky2: handle DMA boundary crossing
Handle the case of DMA spanning 32 bit boundary.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-01 02:20:20 -05:00
shemminger@osdl.org 5a5b1ea026 [PATCH] sky2: add Yukon-EC ultra support
Add support for Yukon-EC Ultra chip as implemented in SysKonnect's
driver version 8.26.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-01 02:20:20 -05:00
shemminger@osdl.org 13210ce5c0 [PATCH] sky2: improve receive performance
Changes to receive side processing:
	* bigger receive ring
	* clean up polling loop

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-01 02:20:20 -05:00
shemminger@osdl.org 42eeea0145 [PATCH] sky2: fix receive flush/pause issues
Fix issues with pause and flush. This code works on
all chip versions tested.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-01 02:20:19 -05:00
shemminger@osdl.org ef743d3359 [PATCH] sky2: add MII support
Add MII ioctl interface to sky2.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-01 02:20:19 -05:00
shemminger@osdl.org 2143764348 [PATCH] sky2: eliminate special case for EC-A1
Eliminate special case for EC-A1. The overhead isn't so
great that having config option is worth it.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-01 02:20:19 -05:00
Andrew Morton d0bbccfa32 [PATCH] sky2 needs dma_mapping.h
On alpha:

drivers/net/sky2.c: In function `sky2_probe':
drivers/net/sky2.c:2819: error: `DMA_64BIT_MASK' undeclared (first use in this function)
drivers/net/sky2.c:2819: error: (Each undeclared identifier is reported only once
drivers/net/sky2.c:2819: error: for each function it appears in.)
drivers/net/sky2.c:2825: error: `DMA_32BIT_MASK' undeclared (first use in this function)

Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-11-11 05:52:37 -05:00
shemminger@osdl.org f1e691a249 [PATCH] sky2: version 0.7
Change version number

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-10-28 12:18:53 -04:00
shemminger@osdl.org bea8610331 [PATCH] sky2: fix NAPI and receive handling
Speed up the receive and interrupt processing and eliminate a
couple of race conditions from NAPI code.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-10-28 12:18:53 -04:00
shemminger@osdl.org d571b694df [PATCH] sky2: spelling fixes
Cosmetic cleanup's: mostly spelling fixes etc.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-10-28 12:18:53 -04:00
shemminger@osdl.org b2f5ad4fec [PATCH] sky2: use kzalloc
Can use kzalloc to save a little code.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-10-28 12:18:52 -04:00
Stephen Hemminger 2995bfb785 [PATCH] sky2: add permanent address support.
Add permanent address support

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-10-04 07:59:43 -04:00
Stephen Hemminger 9a7ae0a978 [PATCH] sky2: nway reset (BONUS FEATURE)
Here is support for ethtool controlled renegotiation.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-09-28 11:52:58 -04:00
shemminger@osdl.org 724bca3ca4 [PATCH] sky2: version 0.6
Verion number change, comment update and one simple optimization

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-09-28 11:52:57 -04:00
shemminger@osdl.org 5afa0a9cfb [PATCH] sky2: explicit set power state
Add better power management, and power down the chip on device removal

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-09-28 11:52:57 -04:00
shemminger@osdl.org d1f1370863 [PATCH] sky2: add hardware VLAN acceleration support
Use the hardware to do VLAN.
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-09-28 11:49:32 -04:00
shemminger@osdl.org d11c13e752 [PATCH] sky2: cleanup interrupt processing
The receive processing can be cleaned up by not using local variables
to store checksum status, instead just put it directly onto the expected
skb.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-09-28 11:49:32 -04:00
shemminger@osdl.org 6b1a3aefd8 [PATCH] sky2: changing mtu doesn't have to reset link
Changing the MTU of the network device doesn't mean the whole link
has to be brought down and back up again.  Just stopping the receive
engine is good enough.

Signed-off-by: Stephen Hemminger <shmminger @osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-09-28 11:49:32 -04:00
Stephen Hemminger ecfd7f32aa [PATCH] sky2: version 0.5
Bump version (we are half way to a stable driver??)

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-09-21 22:30:52 -04:00
Stephen Hemminger 6e4cbb34d4 [PATCH] sky2: allow ethtool debug access to all of PCI space
For debugging, it is useful to allow ethtool to dump all of
the PCI mapped space. There is one small set of registers for RAM
diagnostics that needs to be avoided to prevent hanging, but all
the rest is accessible.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-09-21 22:30:52 -04:00
Stephen Hemminger 79e57d32fe [PATCH] sky2: fix FIFO DMA alignment problems
The Yukon2 chip FIFO has a problem recovering from a pause frame
if the receive buffer is not aligned. The workaround is to just
leave receive buffer at original alignment, which will make IP
header unaligned. Rework receive logic for clarity.

Need to ignore receive overrun interrupts (or mac hangs).

These fixes make the sky2 driver generally usable.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-09-21 22:30:52 -04:00
Stephen Hemminger 793b883ed1 [PATCH] sky2: driver update.
Here is revised patch against netdev sky2 branch.
It includes whitespace fixes, all the changes from the previous
review as well as some optimizations and timing fixes to
solve some of the hangs.

The stall problem is better but not perfect. It appears that
under stress the chip can't keep up with the bus
and sends a pause frame, then hangs. This version is for
testing, and hopefully other eyes might see the root
cause of the problem.

I don't want to reinvent the ugly watchdog code in the syskonnect
version of sk98lin.  If you read it you will see, the original
driver writer and the hardware developer obviously didn't
understand each other.

Dual port support is included, but not tested yet. It did
require small change to NAPI since both ports share same
IRQ.
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-09-16 02:48:03 -04:00
Stephen Hemminger cd28ab6a4e [PATCH] sky2: new experimental Marvell Yukon2 driver
New driver for the Marvell Yukon2 Gigabit Ethernet chipset.
This driver is based on the skge driver, but using the logic
from the SysKonnect version of the sk98lin driver.
It should support all the Yukon2 chipsets that are available
in many current Intel and AMD motherboards.

The driver does support ethtool, tx and rx checksum, and
tcp segmentation offload.  But it has only been tested for
a short while and is known to stop receiving under heavy load.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-08-17 00:53:12 -04:00