aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/sky2.c
Commit message (Collapse)AuthorAgeFilesLines
* [NET]: Split skb->csumAl Viro2006-12-021-1/+1
| | | | | | | ... into anonymous union of __wsum and __u32 (csum and csum_offset resp.) Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: David S. Miller <davem@davemloft.net>
* [PATCH] sky2: msi enhancements.Stephen Hemminger2006-12-021-7/+10
| | | | | | | | If using Message Signaled Interrupts (MSI) then the IRQ will never be shared. Don't call pci_disable_msi() unless using MSI. Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] sky2: kfree_skb_any neededStephen Hemminger2006-12-021-1/+1
| | | | | | | | | | It is possible for the sky2 driver NAPI poll routine to be called with IRQ's disabled if netpoll is trying to make space in the tx queue. This is an obscure path, but if it happens, the kfree_skb needs to happen via softirq. Calling kfree_skb with IRQ's disabled is a not allowed. Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] sky2: fixes for Yukon EC_U chip revisionsStephen Hemminger2006-12-021-7/+6
| | | | | | | | | Update workarounds for 88E803X based on the latest SysKonnect vendor driver version (8.41). Tested on EC_U rev A1, only. These up the receive performance. Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] sky2: add Dlink 560SX idStephen Hemminger2006-12-021-0/+1
| | | | | | | | Add new PCI ID for DLink 560SX. This from the latest SysKonnect vendor driver (version 8.41). Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] sky2: receive error handling fixStephen Hemminger2006-12-021-3/+3
| | | | | | | | | If sky2 detects out of memory, or gets a bad frame, it reuses the same receive buffer, but forgets to poke the hardware. This could lead to the receiver getting stuck if there were lots of errors. Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] sky2: netpoll on dual port cardsStephen Hemminger2006-10-311-1/+5
| | | | | | | | | | | | | The sky2 driver uses a single NAPI poll routine for both ports on dual ported cards (because there is a single IRQ and status ring). Netpoll makes assumptions about the relationship between network device and NAPI that aren't correct on the second port, this will cause the port to never clear work. Most systems, just have single port, so not a big issue. The easy fix is just make the second port, not netpoll capable. Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] skge, sky2, et all. gplv2 onlyStephen Hemminger2006-10-311-2/+1
| | | | | | | | | I don't want my code to downgraded to GPLv3 because of cut-n-pasted the comments. These files which I hold copyright on were started before it was clear what GPLv3 was going to be. Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] sky2: 88E803X transmit lockupStephen Hemminger2006-10-211-21/+12
| | | | | | | | | | | | | | | | | The reason sky2 driver was locking up on transmit on the Yukon-FE chipset is that it was misconfiguring the internal RAM buffer so the transmitter and receiver were sharing the same space. The code assumed there was 16K of RAM on Yukon-FE (taken from vendor driver sk98lin which is even more f*cked up on this). Then it assigned based on that. The giveaway was that the registers would only hold 9bits so both RX/TX had 0..1ff for space. It is a wonder it worked at all! This patch addresses this, and fixes an easily reproducible hang on Transmit. Only the Yukon-FE chip is Marvell 88E803X (10/100 only) are affected. Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* sky2: accept multicast pause framesStephen Hemminger2006-10-171-6/+18
| | | | | | | | When using flow control, the PHY needs to accept multicast pause frames. Without this fix, these frames were getting discarded by the PHY before doing any flow control. Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
* sky2: version 1.9Stephen Hemminger2006-10-171-1/+1
| | | | | | Mark version, this has been a lot of patches. Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
* sky2: no message on rx fifo overflowStephen Hemminger2006-10-171-2/+4
| | | | | | | | Under high load it is possible to make the receiver FIFO get overloaded. The driver/hardware recover properly, so there is no reason to fill the log with lots of extra messages, just update counter. Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
* sky2: flow control setting fixesStephen Hemminger2006-10-171-43/+72
| | | | | | | | | The result of flow control negotiation should not limit the next negotiatition. If board is plugged into an old half duplex 10Mbit port, without pause, then replugged into a gigabit port, it should negotiate what is desired, not inherit that last negotiation. Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
* sky2: don't reset PHY twiceStephen Hemminger2006-10-171-12/+1
| | | | | | Don't need to reset PHY twice on startup. Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
* sky2: use duplex result bitsStephen Hemminger2006-10-171-20/+1
| | | | | | | The result of duplex negotiation is avaliable in the phy status register, so use that to simplify code and avoid rereading the PHY. Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
* sky2: fiber pause bitsStephen Hemminger2006-10-171-8/+19
| | | | | | | The advertisement bits for flow control are located in different location on fiber (1000baseX) Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
* sky2: phy irq on shutdownStephen Hemminger2006-10-171-8/+8
| | | | | | | | When PHY is turned off on shutdown, it causes the IRQ to get stuck on. Make sure and disable the IRQ first, and if IRQ occurs when device is not running, don't access PHY because that will hang. Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
* sky2: turn of workaround timerStephen Hemminger2006-10-171-2/+2
| | | | | | | The workaround timer is not needed in most systems with proper IRQ routing and by perodically waking up it adds to laptop power consumption. Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
* sky2: MSI test is only a warningStephen Hemminger2006-10-171-3/+3
| | | | | | | Some motherboards don't implement MSI correctly. The driver handles this but the warning is too verbose and overly cautious. Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
* [PATCH] sky2: set lower pause threshold to prevent overrunStephen Hemminger2006-10-111-1/+1
| | | | | | | | Adjust the pause threshold on slower systems to keep from getting overrun. Since FIFO is 2K bytes, don't send XON pause until there is space for a full frame. Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] sky2: revert pci express extensionsStephen Hemminger2006-10-111-22/+8
| | | | | | | | | | | | | | The pci express error handling extensions don't work unless PCI access is via mmconfig. Otherwise, all accesses to pci config registers greater than 256 fail. Since the sky2 driver has other ways of getting to PCI config space, it works around this short coming, but the pci_find_ext_capablity doesn't work. This backs out commit 91aeb3edbcf4e6ed72d138ac8c22fd68e6d717c3 Go back to hardcoding, since we know where the error registers are anyway. Fixes http://bugzilla.kernel.org/show_bug.cgi?id=7222 Signed-off-by: Stephen Hemminger <shemmminger@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* Merge branch 'master' into upstream-fixesJeff Garzik2006-10-111-3/+2
|\
| * IRQ: Maintain regs pointer globally rather than passing to IRQ handlersDavid Howells2006-10-051-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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)
* | [PATCH] sky2: incorrect length on receive packetsStephen Hemminger2006-10-051-2/+2
|/ | | | | | | | | | The previous change to do fragmented receive (post 2.6.18) introduced a bug where packets are passed up with size set to the size of the receive buffer not the actual received data. IP silently trims this so it didn't show up right away. Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] sky2: version 1.9Stephen Hemminger2006-09-271-1/+1
| | | | | | | Version 1.9 is for 2.6.19. Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] sky2: fragmented receive for large MTUStephen Hemminger2006-09-271-79/+211
| | | | | | | | | | | Use hardware support for chained receive to break up large frames into multiple pages. This avoids having to do a mult-page allocation that can fail on a busy system due to fragmented memory. For normal size MTU, this code behaves the same. Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] sky2: use netif_tx_lock instead of LLTXStephen Hemminger2006-09-271-40/+17
| | | | | | | | | Use the netdevice transmit lock via netif_tx_lock rather than putting lock in device specific code and using lockless transmit. The code is cleaner using netif_tx_lock, and the performance is same. Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] sky2: incremental transmit completionStephen Hemminger2006-09-271-48/+47
| | | | | | | | | | 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>
* [PATCH] sky2: name irq after eth for irqbalanceStephen Hemminger2006-09-271-21/+16
| | | | | | | | | 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>
* [PATCH] sky2: workarounds for some 88e806x chipsStephen Hemminger2006-09-271-1/+9
| | | | | | | Workarounds for 88e806x chips from the vendor driver. Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] sky2: use standard pci register capabilties for error registerStephen Hemminger2006-09-271-9/+23
| | | | | | | | | 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>
* [PATCH] sky2: gigabit full duplex negotiationStephen Hemminger2006-09-271-9/+20
| | | | | | | | 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>
* Merge branch 'upstream-linus' of ↵Linus Torvalds2006-09-241-220/+203
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 84fa7933a33f806bbbaae6775e87459b1ec584c0 that just happened to be next to unrelated changes in this update.
| * drivers/net: const-ify ethtool_ops declarationsJeff Garzik2006-09-131-1/+1
| | | | | | | | Signed-off-by: Jeff Garzik <jeff@garzik.org>
| * [PATCH] sky2: big endianStephen Hemminger2006-09-131-21/+22
| | | | | | | | | | | | | | | | 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>
| * [PATCH] sky2: fiber supportStephen Hemminger2006-09-131-32/+49
| | | | | | | | | | | | | | | | 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>
| * [PATCH] sky2: tx pause bug fixStephen Hemminger2006-09-131-81/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
| * [PATCH] sky2: more pci device id'sStephen Hemminger2006-09-061-0/+3
| | | | | | | | | | | | | | | | 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>
| * [PATCH] sky2: version 1.7shemminger@osdl.org2006-08-291-1/+1
| | | | | | | | | | | | | | Change version number for this bundle. Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
| * [PATCH] sky2: pci post bugshemminger@osdl.org2006-08-291-2/+4
| | | | | | | | | | | | | | 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>
| * [PATCH] sky2: power down PHY when not upshemminger@osdl.org2006-08-291-26/+31
| | | | | | | | | | | | | | 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>
| * [PATCH] sky2: optimize checksum offload informationshemminger@osdl.org2006-08-291-6/+11
| | | | | | | | | | | | | | | | | | 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>
| * [PATCH] sky2: TSO mss optimizationshemminger@osdl.org2006-08-291-9/+9
| | | | | | | | | | | | | | | | 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>
| * [PATCH] sky2: MSI test timingshemminger@osdl.org2006-08-291-3/+3
| | | | | | | | | | | | | | | | | | 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>
| * [PATCH] sky2: dont use force status bitshemminger@osdl.org2006-08-291-7/+2
| | | | | | | | | | | | | | | | 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>
| * [PATCH] sky2: use netdev_alloc_skbshemminger@osdl.org2006-08-291-13/+16
| | | | | | | | | | | | | | | | | | 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>
| * [PATCH] sky2: remove cloned/pskb_expand_head checkshemminger@osdl.org2006-08-291-8/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | 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>
| * Merge branch 'upstream-fixes' into upstreamJeff Garzik2006-08-101-3/+2
| |\
| * | [PATCH] sky2: status interrupt handling improvementStephen Hemminger2006-08-031-18/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
| * | [PATCH] sky2: more pci device idsStephen Hemminger2006-08-031-0/+4
| | | | | | | | | | | | | | | | | | | | | 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>