summaryrefslogtreecommitdiffstats
path: root/drivers/net/mv643xx_eth.c
Commit message (Collapse)AuthorAgeFilesLines
* [NET]: Clean up skb_linearizeHerbert Xu2006-06-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | The linearisation operation doesn't need to be super-optimised. So we can replace __skb_linearize with __pskb_pull_tail which does the same thing but is more general. Also, most users of skb_linearize end up testing whether the skb is linear or not so it helps to make skb_linearize do just that. Some callers of skb_linearize also use it to copy cloned data, so it's useful to have a new function skb_linearize_cow to copy the data if it's either non-linear or cloned. Last but not least, I've removed the gfp argument since nobody uses it anymore. If it's ever needed we can easily add it back. Misc bugs fixed by this patch: * via-velocity error handling (also, no SG => no frags) Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
* [PATCH] mv643xx_eth: provide sysfs class device symlinkOlaf Hering2006-05-021-0/+2
| | | | | | | | | | | | | | | | | | | | | On Sat, Mar 11, Olaf Hering wrote: > Why is the /sys/class/net/eth0/device symlink not created for the > mv643xx_eth driver? Does this work for other platform device drivers? > Seems to work for the ps2 keyboard at least. The SET_NETDEV_DEV has to be done before a call to register_netdev. With the new patch below, the device symlink for the platform device was created. Unfortunately, after the 4 ls commands, the network connection died. No idea if the box crashed or if something else broke, lost remote access. Provide sysfs 'device' in /class/net/ethN Also, set module owner field, like pcnet32 driver does. Signed-off-by: Olaf Hering <olh@suse.de> Acked-by: Dale Farnsworth <dale@farnsworth.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] mv643xx_eth: Fix tx_timeout to only conditionally wake tx queueDale Farnsworth2006-04-121-3/+14
| | | | | | | | | | | | | | | After resetting the hardware on a tx_timeout, call netif_wake_queue() only if we have free tx descriptors. Also, attempt to recover if mv643xx_eth_start_xmit() is called when there are fewer free tx descriptors than expected. The BUG_ON() call we are replacing was hit on a tx_timeout that called netif_wake_queue(), indirectly via netif_device_attach(), even though we did not have enough free tx descriptors. Signed-off-by: Dale Farnsworth <dale@farnsworth.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] mv643xx_eth: Always free completed tx descs on tx interruptBrent Cook2006-04-121-1/+1
| | | | | | | | | | | Fix the tx interrupt handler to free completed tx descriptors even when NAPI is enabled. Otherwise, the tx queue would fill up resulting in poor performance and "NETDEV WATCHDOG: <iface>: transmit timed out" messages. Signed-off-by: Brent Cook <bcook@bpointsys.com> Signed-off-by: Dale Farnsworth <dale@farnsworth.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] mv643xx_eth: Remove non-working feature: task level rx queue refillDale Farnsworth2006-03-031-47/+12
| | | | | | | | The task level rx queue refill feature hasn't ever worked (at least in 2.6) and is of dubious value. Remove it. Signed-off-by: Dale Farnsworth <dale@farnsworth.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] mv643xx_eth: Clean up interrupt handlingDale Farnsworth2006-03-031-50/+25
| | | | | Signed-off-by: Dale Farnsworth <dale@farnsworth.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] mv643xx_eth: Move #defines of constants to mv643xx_eth.hDale Farnsworth2006-03-031-48/+18
| | | | | Signed-off-by: Dale Farnsworth <dale@farnsworth.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] mv643xx_eth: Refactor/clean up tx queue handlingDale Farnsworth2006-03-031-173/+84
| | | | | Signed-off-by: Dale Farnsworth <dale@farnsworth.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] mv643xx_eth: Refactor tx command queuing codeDale Farnsworth2006-03-031-397/+152
| | | | | | | | Simplify and remove redundant code for filling transmit descriptors. No changes in features; it's just a code reorganization/cleanup. Signed-off-by: Dale Farnsworth <dale@farnsworth.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] mv643xx_eth: Rename "channels" to "queues"Dale Farnsworth2006-03-031-22/+22
| | | | | | | Use better terminology for HW queues. No functional changes. Signed-off-by: Dale Farnsworth <dale@farnsworth.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] mv643xx_eth: Fix misplaced parenthesis in mv643xx_eth_port_disable_rxDale Farnsworth2006-03-031-2/+2
| | | | | | | This bug could result in a system hang. Signed-off-by: Dale Farnsworth <dale@farnsworth.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] mv643xx_eth: Remove duplicate includes of linux/in.h and linux/ip.hDale Farnsworth2006-03-031-2/+0
| | | | | Signed-off-by: Dale Farnsworth <dale@farnsworth.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* Merge branch 'viro'Jeff Garzik2006-02-091-0/+2
|\
| * [PATCH] missing includes in drivers/net/mv643xx_eth.cAl Viro2006-02-071-0/+2
| | | | | | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* | [PATCH] mv643xx_eth: Clean up platform_data configurationDale Farnsworth2006-01-271-50/+21
| | | | | | | | | | | | | | | | | | | | We shouldn't expose the hardware register contents in platform_data. The only things we allow the user to configure are autoneg, speed, and duplex. Add specific platform_data fields for these values and remove the registers configs. Signed-off-by: Dale Farnsworth <dale@farnsworth.org> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* | [PATCH] mv643xx_eth: use MII library for ethtool functionsJames Chapman2006-01-271-141/+210
| | | | | | | | | | | | | | | | | | | | Use the common ethtool support functions of the MII library. Add generic MII ioctl handler. Add PHY parameter speed/duplex/negotiation initialization and modification. Signed-off-by: James Chapman <jchapman@katalix.com> Signed-off-by: Dale Farnsworth <dale@farnsworth.org> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* | [PATCH] mv643xx_eth: use MII library for PHY managementJames Chapman2006-01-271-23/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Modify link up/down handling to use the functions from the MII library. Note that I track link state using the MII PHY registers rather than the mv643xx chip's link state registers because I think it's cleaner to use the MII library code rather than writing local driver support code. It is also useful to make the actual MII registers available to the user with maskable kernel printk messages so the MII registers are being read anyway Signed-off-by: James Chapman <jchapman@katalix.com> Signed-off-by: Dale Farnsworth <dale@farnsworth.org> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* | [PATCH] mv643xx_eth: Make port queue enable/disable code consistentDale Farnsworth2006-01-271-54/+79
| | | | | | | | | | | | | | | | | | | | | | | | | | Add and use the following functions: mv643xx_eth_port_enable_tx() mv643xx_eth_port_enable_rx() mv643xx_eth_port_disable_tx() mv643xx_eth_port_disable_rx() so that ports are enabled/disabled consistently. Signed-off-by: Dale Farnsworth <dale@farnsworth.org> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* | [PATCH] mv643xx_eth: Rename mp->tx_ring_skbs to mp->tx_desc_countDale Farnsworth2006-01-271-25/+26
| | | | | | | | | | | | | | | | | | | | | | tx_ring_skbs is actually a count of tx descriptors currently in use. Since there may be multiple descriptors per skb, it is not the same as the number of skbs in the ring. Also change rx_ring_skbs to rx_desc_count to be consistent. Signed-off-by: Dale Farnsworth <dale@farnsworth.org> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* | [PATCH] mv643xx_eth: Merge unicast and multicast address filtering codeDale Farnsworth2006-01-271-75/+9
| | | | | | | | | | | | | | | | Remove duplicated code by having unicast and multicast code use a common filter table function: eth_port_set_filter_table_entry(). Signed-off-by: Dale Farnsworth <dale@farnsworth.org> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* | [PATCH] mv643xx_eth: Remove needless mp->port_mac_addrDale Farnsworth2006-01-271-11/+7
|/ | | | | | | mp->port_mac_addr is just a redundant copy of dev->dev_addr, so remove it. Signed-off-by: Dale Farnsworth <dale@farnsworth.org> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* [PATCH] mv643xx_eth: Whitespace cleanupDale Farnsworth2006-01-271-48/+46
| | | | | Signed-off-by: Dale Farnsworth <dale@farnsworth.org> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* [PATCH] mv643xx_eth: Update dev->last_rx on packet receivePaolo Galtieri2006-01-271-0/+1
| | | | | | | | | | Update dev->last_rx on packet receive This fix corrects errors seen during configuration of the bonding driver. Signed-off-by: Paolo Galtieri <pgaltieri@mvista.com> Signed-off-by: Dale Farnsworth <dale@farnsworth.org> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* [PATCH] mv643xx_eth: Fix spinlock recursion bugDale Farnsworth2006-01-271-13/+0
| | | | | | | | | This patch eliminates a spinlock recursion bug introduced recently. Since eth_port_send() is always called with the lock held, we simply remove the locking inside the function itself. Signed-off-by: Dale Farnsworth <dale@farnsworth.org> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* [PATCH] mv643xx_eth: Remove needless mask of extended intr registerDale Farnsworth2006-01-171-55/+26
| | | | | | | | | | | | All interrupts controlled by the extended mask register are also masked by a bit in the main mask register, so there is no need to directly manipulate the extended mask register. Signed-off-by: Dale Farnsworth <dale@farnsworth.org> mv643xx_eth.c | 81 ++++++++++++++++++---------------------------------------- 1 file changed, 26 insertions(+), 55 deletions(-) Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* [PATCH] mv643xx_eth: Merge open and stop helper functionsDale Farnsworth2006-01-171-64/+45
| | | | | | | | | | | | Move code from helper functions mv643xx_eth_real_open and mv643xx_eth_real_stop as they are no longer needed. Signed-off-by Dale Farnsworth <dale@farnsworth.org> mv643xx_eth.c | 109 +++++++++++++++++++++++----------------------------------- 1 file changed, 45 insertions(+), 64 deletions(-) Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* [PATCH] mv643xx_eth: Fix transmit skb accountingDale Farnsworth2006-01-171-2/+5
| | | | | | | | Signed-off-by: Dale Farnsworth <dale@farnsworth.org> mv643xx_eth.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* [PATCH] mv643xx_eth: Request HW checksum generation only for IPv4Wolfram Joost2006-01-171-8/+11
| | | | | | | | | | | | | | This patch removes the NETIF_F_HW_CSUM flag to be able to use other protocols than IPv4. Hardware checksums for IPv4 should continue to work because NETIF_F_IP_CSUM is still set. The sanity-check has been enhanced to check the used protocol and to not access skb->iph for non-ipv4-packets. Signed-off-by: Wolfram Joost <pegasos@frokaschwei.de> Signed-off-by: Dale Farnsworth <dale@farnsworth.org> mv643xx_eth.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* [PATCH] mv643xx_eth: Hold spinlocks only where neededDale Farnsworth2006-01-171-80/+90
| | | | | | | | | | | | | This driver has historically held a spin_lock during the entire open and stop functions and while receiving multiple packets. This is unecessarily long and holds locks during calls that may sleep. This patch reduces the size of windows where locks are held. Signed-off-by: Dale Farnsworth <dale@farnsworth.org> mv643xx_eth.c | 172 ++++++++++++++++++++++++++++++---------------------------- 1 file changed, 91 insertions(+), 81 deletions(-) Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* [PATCH] mv643xx_eth: iounmap the correct SRAM bufferDale Farnsworth2006-01-171-1/+1
| | | | | | | | Signed-off-by: Dale Farnsworth <dale@farnsworth.org> mv643xx_eth.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* [PATCH] mv643xx_eth: Fix handling of small, unaligned fragmentsPaul Janzen2006-01-171-23/+31
| | | | | | | | | | | | Fix handling of small, unaligned fragments. It also solves a potential deadlock if skb_linearize() returns -ENOMEM. Signed-off-by: Paul Janzen <pcj@linux.sez.to> Signed-off-by: Dale Farnsworth <dale@farnsworth.org> mv643xx_eth.c | 54 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 31 insertions(+), 23 deletions(-) Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* [PATCH] mv643xx_eth: Receive buffers require 8 byte alignmentDale Farnsworth2006-01-171-3/+9
| | | | | | | | | | | | | | | | The Marvell mv643xx ethernet hardware requires that DMA buffers be aligned to 8-byte boundaries. This patch satisfies this requirement. Buffers allocated by dev_alloc_skb() only have 4-byte alignment when slab debugging is enabled. Also, document that the 2-byte offset to align the IP packets on receive is a hardware feature and is not tied to NET_IP_ALIGN. Signed-off-by: Dale Farnsworth <dale@farnsworth.org> mv643xx_eth.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* [PATCH] mv643xx_eth: Add multicast supportDale Farnsworth2006-01-171-4/+197
| | | | | | | | | | This code is adapted from code in a ppc-specific version of the driver. Signed-off-by: Dale Farnsworth <dale@farnsworth.org> mv643xx_eth.c | 201 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 197 insertions(+), 4 deletions(-) Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* [PATCH] mv643xx_eth: Fix a NULL pointer dereferencePaolo Galtieri2006-01-171-0/+2
| | | | | | | | | | | | | | Fix a NULL pointer dereference. Fill in the buf_ptr and byte_cnt fields of pkt_info in eth_tx_return_desc(). Signed-off-by: Paolo Galtieri <pgaltieri@mvista.com> Signed-off-by: Dale Farnsworth <dale@farnsworth.org> mv643xx_eth.c | 51 +++++++++++++++++++++------------------------------ 1 file changed, 21 insertions(+), 30 deletions(-) Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* [PATCH] mv643xx_eth: Fix dma_map/dma_unmap relationsPaolo Galtieri2006-01-171-30/+19
| | | | | | | | | | | | If you do a dma_map_single you must do dma_unmap_single and if you do a dma_map_page you must do a dma_unmap_page. Signed-off-by: Paolo Galtieri <pgaltieri@mvista.com> Signed-off-by: Dale Farnsworth <dale@farnsworth.org> mv643xx_eth.c | 51 +++++++++++++++++++++------------------------------ 1 file changed, 21 insertions(+), 30 deletions(-) Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* [PATCH] mv643xx_eth: 2.6.16 needs ip.h and in.hOlaf Hering2006-01-171-0/+2
| | | | | | | | | Signed-off-by: Olaf Hering <olh@suse.de> Signed-off-by: Dale Farnsworth <dale@farnsworth.org> mv643xx_eth.c | 2 ++ 1 file changed, 2 insertions(+) Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* [PATCH] remove bouncing mail address of mv643xx_eth maintainerOlaf Hering2006-01-091-1/+1
| | | | | | | | | Remove bouncing mail address of mv643xx maintainer. Signed-off-by: Olaf Hering <olh@suse.de> Cc: Jeff Garzik <jgarzik@pobox.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* [DRIVER MODEL] Convert platform drivers to use struct platform_driverRussell King2005-11-091-20/+20
| | | | | | | | | This allows us to eliminate the casts in the drivers, and eventually remove the use of the device_driver function pointer methods for platform device drivers. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
* Merge master.kernel.org:/home/rmk/linux-2.6-drvmodelLinus Torvalds2005-10-311-0/+2
|\ | | | | | | Manual #include fixups for clashes - there may be some unnecessary
| * Create platform_device.h to contain all the platform device details.Russell King2005-10-291-0/+2
| | | | | | | | | | | | | | | | Convert everyone who uses platform_bus_type to include linux/platform_device.h. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
* | [PATCH] mv643xx_eth_showsram: Added information message when using the SRAMNicolas DET2005-10-291-0/+3
|/ | | | | | | | | Added information message when using the SRAM in mv643xx_eth_probe() Signed-off-by: Nicolas DET <det.nicolas@free.fr> Signed-off-by: Sven Luther <sl@bplan-gmbh.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
* [PATCH] more SPIN_LOCK_UNLOCKED -> DEFINE_SPINLOCK conversionsIngo Molnar2005-09-091-1/+1
| | | | | | | | | This converts the final 20 DEFINE_SPINLOCK holdouts. (another 580 places are already using DEFINE_SPINLOCK). Build tested on x86. Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [PATCH] mv643xx: add netpoll api supportDale Farnsworth2005-09-051-2/+42
| | | | | | | Add support for the netpoll api for use by netconsole, kgdb, etc. Signed-off-by: Dale Farnsworth <dale@farnsworth.org> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* [PATCH] mv643xx: Fix promiscuous mode handlingDale Farnsworth2005-09-051-58/+4
| | | | | | | | | | | | | | mv643xx_eth_get_config_reg() was reading the wrong register. mv643xx_eth_set_config_reg() was or'ing instead of setting the register. These functions are trivial and both are called only from mv643xx_eth_set_rx_mode() when changing to/from promiscuous mode. Remove both functions and do the operations directly in mv643xx_eth_set_rx_mode(). Also, maintain promiscuous mode setting across port resets. Signed-off-by: Dale Farnsworth <dale@farnsworth.org> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* [PATCH] mv643xx: Disable per port bandwidth limitsDale Farnsworth2005-09-051-0/+3
| | | | | | | | The mv643xx chips support per port bandwith limits. This patch disables the bandwidth limits by clearing the MTU register. Signed-off-by: Dale Farnsworth <dale@farnsworth.org> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* [PATCH] mv643xx: fix outstanding tx skb counterDale Farnsworth2005-09-051-15/+9
| | | | | | | | | This patch corrects the accounting of outstanding tx skbs. It fixes a bug that causes "Error on Queue Full" messages seen since scatter-gather was enabled by using the hardware tcp/udp checksum generator. Signed-off-by: Dale Farnsworth <dale@farnsworth.org> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* [PATCH] mv643xx: fix skb memory leakDale Farnsworth2005-09-051-4/+2
| | | | | | | | | This patch fixes an skb memory leak under heavy receive load (whenever the more packets have been received than the NAPI budget allows to be processed). Signed-off-by: Dale Farnsworth <dale@farnsworth.org> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* [PATCH] mv643xx: add workaround for HW checksum generation bugDale Farnsworth2005-08-231-11/+18
| | | | | | | | | | | [PATCH] [NET] mv643xx: add workaround for HW checksum generation bug The hardware checksum generator on the mv64xxx occasionally generates an incorrect checksum. This patch works around the issue and enables hardware checksum generation. Signed-off-by: Dale Farnsworth <dale@farnsworth.org> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
* [PATCH] ppc iomem annotations: mv643xx_ethAl Viro2005-04-251-2/+2
| | | | | | | void * __iomem replaced with intended void __iomem *. Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [PATCH] ppc32: MV643XX ethernet is an option for PegasosBenjamin Herrenschmidt2005-04-161-1/+1
| | | | | | | | | | | | This patch allows Kconfig to build the MV643xx ethernet driver on Pegasos (CONFIG_PPC_MULTIPLATFORM) and adds what I think is a missing fix from Dale's batch, that is remove SA_INTERRUPT and add SA_SHIRQ in there as the interrupt is shared if I understand things correctly. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Fabio Massimo Di Nitto <fabbione@ubuntu.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>