Need to handle receive and transmit packet arbiter timeouts.
Transmit arbiter timeouts happens when Gigabit sends to 100Mbit port
on same switch and pause occurs.
Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Cleanup messages (for debug) about PHY interrrupts, because when
user can't get driver working that is often the problem.
Use a consistent way of enabling interrupts by port.
Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Rewrite the code for handling the Broadcom PHY to something that
works. Remove link polling because Broadcom and Yukon don't need it.
When I wrote initial code, didn't have a genesis chipset based
board to test, so it was a non-working guess.
Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Remove support for the non-Broadcom genesis based boards. The code
is untested, and probably won't work as is. The newer boards are all
Yukon based, and only old Genesis board I can find uses Broadcom.
Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Remove the bits and pieces added relating to Yukon II chipset.
The Yukon 2 will be in a separate driver.
Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Replace inline accessor functions for chip revision and number of ports
with simple structure members.
Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
The inlines and macro's needed some cleanup's and fixes:
* change name of macro SKGEMAC_REG to SK_REG to better reflect usage
and fix comments
* ditto for SK_GEXM_REG -> SK_XMAC_REG and SKGEGMA_REG -> SK_GMA_REG
* change skge_gm_ to just gm_ since it is just a local function and long
names look ugly.
* change skge_xm_ to just xm_
* fix xm_write32 to write as two u16's with correct byte order
* fix xm_outaddr to correctly use offset
Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
This patch fixes two bugs in the dm9000 network driver:
- Don't read one byte too much in 8bit mode.
- release correct resource
Signed-off-by: Jochen Karrer <j.karrer@lightmaze.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Jeff Garzik <jgarzik@pobox.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Fix int vs. pm_message_t confusion in airo. Should change no code.
Signed-off-by: Pavel Machek <pavel@suse.cz>
Cc: Jeff Garzik <jgarzik@pobox.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
This is a fix for the interrupt handler in the defxx driver to use
irqreturn_t. Beside the obvious fix of returning a proper status at all,
it actually checks board registers as appropriate for determining if an
interrupt has been recorded in the bus-specific interface logic.
The patch also includes an obvious one-line fix for SET_NETDEV_DEV needed
for the EISA variation, for which I've decided there is no point in sending
separately.
Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org>
Cc: Jeff Garzik <jgarzik@pobox.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
drivers/net/tulip/dmfe.c: In function `dmfe_parse_srom':
drivers/net/tulip/dmfe.c:1805: warning: passing arg 1 of `__le16_to_cpup' from incompatible pointer type
drivers/net/tulip/dmfe.c:1817: warning: passing arg 1 of `__le32_to_cpup' from incompatible pointer type
drivers/net/tulip/dmfe.c:1817: warning: passing arg 1 of `__le32_to_cpup' from incompatible pointer type
This is basically a guess:
Cc: Jeff Garzik <jgarzik@pobox.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
The 8129/8130 support is a sub-option that is not visible if the user
hasn't enabled the 8139 support.
Let's make it a bit easier for users to find the driver for their nic.
Signed-off-by: Adrian Bunk <bunk@stusta.de>
This patch contains the follwing cleanups:
- make needlessly global code static
- remove obsolete Emacs settings
Signed-off-by: Adrian Bunk <bunk@stusta.de>
During some performance diagnostics I stumbled on this slightly wasteful
code in pcnet_cs.c which I made the patch included at the bottom for (two
minor comment fixes included).
Improvement:
instead of *always* calculating
lea 0x2c0(%edx),%ebx
and then additionally doing the
mov %edx,0xc0(%ebx)
addition *if we need it*,
we now do the *whole* calculation of
mov %edx,0x380(%ebx)
*only* if we need it.
This even manages to save us a whole 16-byte alignment buffer loss
in this compilation case.
Result: slightly improves IRQ handler performance in both shared and
non-shared IRQ case, which should make my rusty P3/700 a slight bit happier.
Thank you for your support,
Andreas Mohr
old asm result (using gcc 3.3.5):
000015a0 <ei_irq_wrapper>:
15a0: 55 push %ebp
15a1: 89 e5 mov %esp,%ebp
15a3: 53 push %ebx
15a4: 8d 9a c0 02 00 00 lea 0x2c0(%edx),%ebx
15aa: e8 fc ff ff ff call 15ab <ei_irq_wrapper+0xb>
15af: 83 f8 01 cmp $0x1,%eax
15b2: 74 03 je 15b7 <ei_irq_wrapper+0x17>
15b4: 5b pop %ebx
15b5: 5d pop %ebp
15b6: c3 ret
15b7: 31 d2 xor %edx,%edx
15b9: 89 93 c0 00 00 00 mov %edx,0xc0(%ebx)
15bf: eb f3 jmp 15b4 <ei_irq_wrapper+0x14>
15c1: eb 0d jmp 15d0 <ei_watchdog>
15c3: 90 nop
15c4: 90 nop
15c5: 90 nop
15c6: 90 nop
15c7: 90 nop
15c8: 90 nop
15c9: 90 nop
15ca: 90 nop
15cb: 90 nop
15cc: 90 nop
15cd: 90 nop
15ce: 90 nop
15cf: 90 nop
000015d0 <ei_watchdog>:
new asm result:
000015a0 <ei_irq_wrapper>:
15a0: 55 push %ebp
15a1: 89 e5 mov %esp,%ebp
15a3: 53 push %ebx
15a4: 89 d3 mov %edx,%ebx
15a6: e8 fc ff ff ff call 15a7 <ei_irq_wrapper+0x7>
15ab: 83 f8 01 cmp $0x1,%eax
15ae: 74 03 je 15b3 <ei_irq_wrapper+0x13>
15b0: 5b pop %ebx
15b1: 5d pop %ebp
15b2: c3 ret
15b3: 31 d2 xor %edx,%edx
15b5: 89 93 80 03 00 00 mov %edx,0x380(%ebx)
15bb: eb f3 jmp 15b0 <ei_irq_wrapper+0x10>
15bd: 8d 76 00 lea 0x0(%esi),%esi
000015c0 <ei_watchdog>:
Signed-off-by: Andrew Morton <akpm@osdl.org>
Use the DMA_{64,32}BIT_MASK constants from dma-mapping.h when calling
pci_set_dma_mask() or pci_set_consistent_dma_mask()
This patch includes dma-mapping.h explicitly because it caused errors
on some architectures otherwise.
See http://marc.theaimsgroup.com/?t=108001993000001&r=1&w=2 for details
Signed-off-by: Tobias Klauser <tklauser@nuerscht.ch>
Signed-off-by: Domen Puncer <domen@coderock.org>
Make sure the code compiles with and without ARLAN_ENTRY_EXIT_DEBUGGING.
Only provide parameter descriptions when parameters are defined.
Remove "arlan_"-prefix to shape up built-in parameter names:
arlan.arlan_debug -> arlan.debug
arlan.arlan_EEPROM_bad -> arlan.EEPROM_bad
arlan.arlan_entry_and_exit_debug -> arlan.entry_and_exit_debug
arlan.arlan_entry_debug -> arlan.entry_debug
arlan.arlan_exit_debug -> arlan.exit_debug
Signed-off-by: Magnus Damm <damm@opensource.se>
Use the DMA_32BIT_MASK constant from dma-mapping.h when calling
pci_set_dma_mask() or pci_set_consistent_dma_mask() instead of custom
macros.
This patch includes dma-mapping.h explicitly because it caused errors
on some architectures otherwise.
See http://marc.theaimsgroup.com/?t=108001993000001&r=1&w=2 for details
Signed-off-by: Tobias Klauser <tklauser@nuerscht.ch>
The spin loop in 8139cp is limited to 100 iterations when pulling hardware
stats. There is no allowance for processor speed so on a fast machine, the
stats may not be available that fast. Also, if the board doesn't return
soon enough make sure turn the address back off to prevent later updates
when memory has gone away.
Add support for alternate slave selection algorithms to bonding
balance-xor and 802.3ad modes. Default mode (what we have now: xor of
MAC addresses) is "layer2", new choice is "layer3+4", using IP and port
information for hashing to select peer.
Originally submitted by Jason Gabler for balance-xor mode;
modified by Jay Vosburgh to additionally support 802.3ad mode. Jason's
original comment is as follows:
The attached patch to the Linux Etherchannel Bonding driver modifies the
driver's "balance-xor" mode as follows:
- alternate hashing policy support for mode 2
* Added kernel parameter "xmit_policy" to allow the specification
of different hashing policies for mode 2. The original mode 2
policy is the default, now found in xmit_hash_policy_layer2().
* Added xmit_hash_policy_layer34()
This patch was inspired by hashing policies implemented by Cisco,
Foundry and IBM, which are explained in
Foundry documentation found at:
http://www.foundrynet.com/services/documentation/sribcg/Trunking.html#112750
Signed-off-by: Jason Gabler <jygabler@lbl.gov>
Signed-off-by: Jay Vosburgh <fubar@us.ibm.com>
Add support for generating gratuitous ARPs in bonding
active-backup mode when failovers occur. Includes support for VLAN
tagging the ARPs as needed.
Signed-off-by: Jay Vosburgh <fubar@us.ibm.com>
1. Establish a simple API for process freezing defined in linux/include/sched.h:
frozen(process) Check for frozen process
freezing(process) Check if a process is being frozen
freeze(process) Tell a process to freeze (go to refrigerator)
thaw_process(process) Restart process
frozen_process(process) Process is frozen now
2. Remove all references to PF_FREEZE and PF_FROZEN from all
kernel sources except sched.h
3. Fix numerous locations where try_to_freeze is manually done by a driver
4. Remove the argument that is no longer necessary from two function calls.
5. Some whitespace cleanup
6. Clear potential race in refrigerator (provides an open window of PF_FREEZE
cleared before setting PF_FROZEN, recalc_sigpending does not check
PF_FROZEN).
This patch does not address the problem of freeze_processes() violating the rule
that a task may only modify its own flags by setting PF_FREEZE. This is not clean
in an SMP environment. freeze(process) is therefore not SMP safe!
Signed-off-by: Christoph Lameter <christoph@lameter.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
wanpipe.txt and wan-router.txt in Documentation/networking contain the exact
same information (diff between the two shows no drivers/net/wan/Kconfig.
Signed-off-by: Tobias Klauser <tklauser@nuerscht.ch>
Signed-off-by: Domen Puncer <domen@coderock.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
1. Move tp->irq_sync = 0 to before the interrupt mailbox IO in
tg3_enable_ints() so that the interrupt handler will always see
irq_sync == 0 when interrupts are enabled.
2. Remove the tg3_enable_ints() call in tg3_reset_hw(). Interrupts are
always enabled explicitly or through tg3_netif_start(). This is to
prevent interrupts being enabled while poll is disabled.
3. Update trans_start with jiffies in tg3_netif_stop() to prevent false
NETDEV WATCHDOG.
4. Pass in the proper irq_sync parameter to tg3_full_lock() depending on
netif_running() in some of the ethtool set calls.
Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Move all driver spinlocks to be taken at sw IRQ
context only.
This fixes the skb_copy() we were doing with hw
IRQs disabled (which is illegal and triggers a
BUG() with HIGHMEM enabled). It also simplifies
the locking all over the driver tremendously.
We accomplish this feat by creating a special
sequence to synchronize with the hw IRQ handler
using a binary state and synchronize_irq().
This idea is from Herbert Xu.
Thanks to Michael Chan for helping to track down
all of the race conditions in initial versions
of this code.
Signed-off-by: David S. Miller <davem@davemloft.net>
There must be a rmb() between reading the status block tag
and calling tg3_has_work(). This was missing in tg3_mis()
and tg3_interrupt_tagged(). tg3_poll() got it right.
Also, SD_STATUS_UPDATED must be cleared in the status block
right before we call tg3_has_work(). Only tg3_poll() got this
wrong.
Based upon patches and commentary from Grant Grundler and
Michael Chan.
Signed-off-by: David S. Miller <davem@davemloft.net>
We can avoid assignments to the local variable 'tmp' and
actually get rid of tmp alltogether in sl_free_bufs(). This patch does
that. This is safe since both kfree() and slhc_free() handles NULL
pointers gracefully.
Signed-off-by: Jesper Juhl <juhl-lkml@dif.dk>
Signed-off-by: David S. Miller <davem@davemloft.net>
This patch fixes an obvious and nasty bug where we could exit the transmit
routine while holding tx_lock.
Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Use ssleep() / msleep() [as appropriate]
instead of schedule_timeout() to guarantee the task delays as expected.
Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com>
Acked-by: Arnaldo Carvalho de Melo <acme@conectiva.com.br>
Signed-off-by: Maximilian Attems <janitor@sternwelten.at>
Signed-off-by: Domen Puncer <domen@coderock.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
This patch removes an obsolete header file include/asm-m32r/m32102peri.h.
In this header, there are some undesirable single character types, like V.
And the header is almost no longer used.
Signed-off-by: Hayato Fujiwara <fujiwara@linux-m32r.org>
Signed-off-by: Hirokazu Takata <takata@linux-m32r.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Remove the superfluous test of "if (vortex_debug > 3)" inside the "if
(vortex_debug > 6)" clause early in boomerang_start_xmit.
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>