Commit Graph

49 Commits

Author SHA1 Message Date
Dale Farnsworth 94843566d7 [PATCH] mv643xx_eth: Fix tx_timeout to only conditionally wake tx queue
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>
2006-04-12 18:11:23 -04:00
Brent Cook 5c53740877 [PATCH] mv643xx_eth: Always free completed tx descs on tx interrupt
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>
2006-04-12 18:11:23 -04:00
Dale Farnsworth f78fb4743d [PATCH] mv643xx_eth: Remove non-working feature: task level rx queue refill
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>
2006-03-03 12:12:37 -05:00
Dale Farnsworth 468d09f894 [PATCH] mv643xx_eth: Clean up interrupt handling
Signed-off-by: Dale Farnsworth <dale@farnsworth.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-03-03 12:12:37 -05:00
Dale Farnsworth 7303fde88a [PATCH] mv643xx_eth: Move #defines of constants to mv643xx_eth.h
Signed-off-by: Dale Farnsworth <dale@farnsworth.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-03-03 12:12:36 -05:00
Dale Farnsworth ff561eef9f [PATCH] mv643xx_eth: Refactor/clean up tx queue handling
Signed-off-by: Dale Farnsworth <dale@farnsworth.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-03-03 12:12:36 -05:00
Dale Farnsworth c8aaea25e0 [PATCH] mv643xx_eth: Refactor tx command queuing code
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>
2006-03-03 12:12:36 -05:00
Dale Farnsworth 12a87c644a [PATCH] mv643xx_eth: Rename "channels" to "queues"
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>
2006-03-03 12:12:36 -05:00
Dale Farnsworth e38fd1a055 [PATCH] mv643xx_eth: Fix misplaced parenthesis in mv643xx_eth_port_disable_rx
This bug could result in a system hang.

Signed-off-by: Dale Farnsworth <dale@farnsworth.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-03-03 12:12:36 -05:00
Dale Farnsworth d5f9558a77 [PATCH] mv643xx_eth: Remove duplicate includes of linux/in.h and linux/ip.h
Signed-off-by: Dale Farnsworth <dale@farnsworth.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-03-03 12:12:36 -05:00
Jeff Garzik 70c07e0262 Merge branch 'viro' 2006-02-09 14:17:05 -05:00
Al Viro b6298c22c5 [PATCH] missing includes in drivers/net/mv643xx_eth.c
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2006-02-07 20:56:52 -05:00
Dale Farnsworth 01999873a4 [PATCH] mv643xx_eth: Clean up platform_data configuration
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>
2006-01-27 11:11:16 -05:00
James Chapman d0412d9670 [PATCH] mv643xx_eth: use MII library for ethtool functions
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>
2006-01-27 11:11:16 -05:00
James Chapman c28a4f8947 [PATCH] mv643xx_eth: use MII library for PHY management
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>
2006-01-27 11:11:16 -05:00
Dale Farnsworth 9f8dd31945 [PATCH] mv643xx_eth: Make port queue enable/disable code consistent
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>
2006-01-27 11:11:16 -05:00
Dale Farnsworth f98e36f1f7 [PATCH] mv643xx_eth: Rename mp->tx_ring_skbs to mp->tx_desc_count
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>
2006-01-27 11:11:16 -05:00
Dale Farnsworth cf4086c772 [PATCH] mv643xx_eth: Merge unicast and multicast address filtering code
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>
2006-01-27 11:11:16 -05:00
Dale Farnsworth ed9b5d4576 [PATCH] mv643xx_eth: Remove needless mp->port_mac_addr
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>
2006-01-27 11:11:16 -05:00
Dale Farnsworth b4de9051a9 [PATCH] mv643xx_eth: Whitespace cleanup
Signed-off-by: Dale Farnsworth <dale@farnsworth.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-01-27 11:09:24 -05:00
Paolo Galtieri 12ad74f88f [PATCH] mv643xx_eth: Update dev->last_rx on packet receive
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>
2006-01-27 11:09:24 -05:00
Dale Farnsworth c7cd9014e6 [PATCH] mv643xx_eth: Fix spinlock recursion bug
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>
2006-01-27 11:09:24 -05:00
Dale Farnsworth c2e5b352fc [PATCH] mv643xx_eth: Remove needless mask of extended intr register
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>
2006-01-17 07:23:39 -05:00
Dale Farnsworth ab4384a658 [PATCH] mv643xx_eth: Merge open and stop helper functions
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>
2006-01-17 07:23:38 -05:00
Dale Farnsworth 4476e0e4c7 [PATCH] mv643xx_eth: Fix transmit skb accounting
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>
2006-01-17 07:23:38 -05:00