summaryrefslogtreecommitdiffstats
path: root/drivers/net/sky2.c
Commit message (Collapse)AuthorAgeFilesLines
* [PATCH] 64bit resource: fix up printks for resources in networks driversGreg Kroah-Hartman2006-06-271-3/+3
| | | | | | | | | | 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>
* [NET]: Merge TSO/UFO fields in sk_buffHerbert Xu2006-06-231-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | 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>
* [PATCH] sky2: netconsole suspend/resume interactionStephen Hemminger2006-06-171-1/+6
| | | | | | | | | | | | | 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>
* [PATCH] sky2: stop/start hardware idle timer on suspend/resumeStephen Hemminger2006-06-131-4/+13
| | | | | | | | | 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>
* [PATCH] sky2: save/restore base hardware irq during suspend/resumeStephen Hemminger2006-06-131-0/+3
| | | | | | | | 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>
* [PATCH] sky2: fix hotplug detect during pollStephen Hemminger2006-06-131-2/+2
| | | | | | | | 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>
* [PATCH] sky2: don't hard code number of portsStephen Hemminger2006-06-131-2/+2
| | | | | | | 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>
* [PATCH] sky2: set_power_state should be voidStephen Hemminger2006-06-131-8/+8
| | | | | | | | | 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>
* [sky2] Fix sky2 network driver suspend/resumeLinus Torvalds2006-06-121-0/+4
| | | | | | | | | | | 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>
* [PATCH] sky2: fix jumbo packet supportStephen Hemminger2006-05-241-3/+16
| | | | | | | | | 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>
* [PATCH] sky2 version 1.4Stephen Hemminger2006-05-201-1/+1
| | | | | | | 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>
* [PATCH] sky2: force NAPI repoll if busyStephen Hemminger2006-05-201-5/+11
| | | | | | | | | 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>
* [PATCH] sky2: more fixes for Yukon UltraStephen Hemminger2006-05-201-1/+2
| | | | | | | | 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>
* [PATCH] Subjec: sky2, skge: correct PCI id for DGE-560TStephen Hemminger2006-05-201-0/+1
| | | | | | | | | | 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>
* [PATCH] sky2: allow dual port usageStephen Hemminger2006-05-201-15/+17
| | | | | | | | | | | | | | | | | 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>
* sky2: prevent dual port receiver problemsStephen Hemminger2006-05-151-1/+12
| | | | | | | | | | | | | 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>
* Merge branch 'upstream' of ↵Linus Torvalds2006-05-101-2/+3
|\ | | | | | | | | | | | | | | | | | | 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
| * sky2: ifdown kills irq maskStephen Hemminger2006-05-101-2/+3
| | | | | | | | | | | | | | 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>
* | sky2: version 1.3Stephen Hemminger2006-05-081-1/+1
| | | | | | | | | | | | Update version number, to track changes. Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
* | Add more support for the Yukon Ultra chip found in dual core centino laptops.Stephen Hemminger2006-05-081-29/+59
| | | | | | | | | | | | | | | | | | 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>
* | sky2: synchronize irq on removeStephen Hemminger2006-05-081-0/+2
| | | | | | | | | | | | | | Need to make sure interrupt is not racing with unregister of network device. Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
* | sky2: dont write status ringStephen Hemminger2006-05-081-14/+7
| | | | | | | | | | | | | | 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>
* | sky2: edge triggered workaround enhancementStephen Hemminger2006-05-081-8/+12
| | | | | | | | | | | | | | | | | | | | 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>
* | sky2: use mask instead of modulo operationStephen Hemminger2006-05-081-6/+8
| | | | | | | | | | | | | | | | 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>
* | sky2: tx ring index mask fixStephen Hemminger2006-05-081-1/+2
| | | | | | | | | | | | | | | | 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>
* | sky2: status irq hang fixStephen Hemminger2006-05-081-28/+25
| | | | | | | | | | | | | | | | | | 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>
* | sky2: backout NAPI rescheduleStephen Hemminger2006-05-081-16/+4
|/ | | | | | | | | 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>
* [PATCH] sky2: version 1.2Stephen Hemminger2006-04-261-1/+1
| | | | | | | Update to version 1.2 Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] sky2: reset function can be devinitStephen Hemminger2006-04-261-1/+1
| | | | | | | | 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>
* [PATCH] sky2: use ALIGN() macroStephen Hemminger2006-04-261-4/+2
| | | | | | | | 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>
* [PATCH] sky2: add fake idle irq timerStephen Hemminger2006-04-261-1/+21
| | | | | | | | 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>
* [PATCH] sky2: reschedule if irq still pendingStephen Hemminger2006-04-261-4/+16
| | | | | | | | | | | | 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>
* [PATCH] sky2: bad memory reference on dual port cardsStephen Hemminger2006-04-121-2/+2
| | | | | | | | | | | 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>
* [PATCH] dlink pci cards using wrong driverStephen Hemminger2006-04-121-2/+0
| | | | | | | | 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>
* [PATCH] sky2: dont need to use dev_kfree_skb_anyStephen Hemminger2006-03-231-2/+2
| | | | | | | | 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>
* [PATCH] sky2: Fix RX statsStephen Hemminger2006-03-231-1/+1
| | | | | | | | 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>
* [PATCH] sky2: typo in last stats patchStephen Hemminger2006-03-231-1/+1
| | | | | | | Typo in last stats patch. Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] sky2: more ethtool statsStephen Hemminger2006-03-221-5/+22
| | | | | | | | 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>
* [PATCH] sky2 version 1.1Stephen Hemminger2006-03-211-1/+1
| | | | | | | Set version to 1.1 Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] sky2: handle all error irqsStephen Hemminger2006-03-211-10/+45
| | | | | | | | 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>
* [PATCH] sky2: transmit recoveryStephen Hemminger2006-03-211-6/+31
| | | | | | | | | 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>
* [PATCH] sky2: whitespace fixesStephen Hemminger2006-03-211-5/+5
| | | | | | | Small whitespace fixes. Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] sky2: add MSI supportStephen Hemminger2006-03-211-4/+77
| | | | | | | Add MSI support to sky2 driver. Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] sky2: coalescing parametersStephen Hemminger2006-03-211-13/+6
| | | | | | | | 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>
* [PATCH] sky2: rework of NAPI and IRQ managementStephen Hemminger2006-03-211-169/+107
| | | | | | | | | | | | 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>
* [PATCH] sky2: drop broken wake on lan supportStephen Hemminger2006-03-211-36/+0
| | | | | | | | | 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>
* [PATCH] sky2: remove support for untested Yukon EC/rev 0Stephen Hemminger2006-03-211-61/+32
| | | | | | | | | | | | 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>
* sky2: truncate oversize packetsStephen Hemminger2006-03-091-5/+11
| | | | | | | 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>
* sky2: force early transmit interruptsStephen Hemminger2006-03-091-4/+9
| | | | | | | | | | 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>
* sky2: not random enoughStephen Hemminger2006-03-091-2/+1
| | | | | | | 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>