* BUG: warning at kernel/softirq.c:141/local_bh_enable()
@ 2006-10-17 13:50 John Philips
2006-10-17 13:56 ` Eric Dumazet
0 siblings, 1 reply; 11+ messages in thread
From: John Philips @ 2006-10-17 13:50 UTC (permalink / raw)
To: linux-kernel; +Cc: linux-net
Hi,
I recently upgraded some router/NAT devices from 2.4.25 to 2.6.17.8. They're using VIA C3 processors and NatSemi DP83815 NICs.
Right after the upgrade I started noticing these error messages on one of the heavier-loaded boxes. This particular box routes and does NAT for around 400 users, peaking at 6Mb/sec of throughput.
The errors were happening about every 3-5 minutes. I statically set eth6 to 100baseTX-FD with mii-tool, and now the errors appear every few hours for 10-20 minute stretches.
I searched Google and couldn't find any insight (FYI, I'm NOT using the CIPE patches).
Any ideas?
Oct 16 16:51:32 localhost kernel: NETDEV WATCHDOG: eth6: transmit timed out
Oct 16 16:51:32 localhost kernel: eth6: Transmit timed out, status 0x000000, resetting...
Oct 16 16:51:32 localhost kernel: eth6: DSPCFG accepted after 0 usec.
Oct 16 16:51:32 localhost kernel: eth6: Setting full-duplex based on negotiated link capability.
Oct 16 16:51:36 localhost kernel: NETDEV WATCHDOG: eth6: transmit timed out
Oct 16 16:51:36 localhost kernel: eth6: Transmit timed out, status 0x000000, resetting...
Oct 16 16:51:36 localhost kernel: eth6: DSPCFG accepted after 0 usec.
Oct 16 16:51:36 localhost kernel: eth6: Setting full-duplex based on negotiated link capability.
Oct 16 16:51:43 localhost kernel: eth6: Transmit timed out, status 0x000000, resetting...
Oct 16 16:51:43 localhost kernel: NETDEV WATCHDOG: eth6: transmit timed out
Oct 16 16:51:43 localhost kernel: BUG: warning at kernel/softirq.c:141/local_bh_enable()
Oct 16 16:51:43 localhost kernel: <c029a975> __kfree_skb+0xa5/0x120 <c0236790> drain_tx+0x20/0x40
Oct 16 16:51:43 localhost kernel: <c011c0fb> local_bh_enable+0x6b/0x70 <c0310bd1> destroy_conntrack+0x31/0xe0
Oct 16 16:51:43 localhost kernel: <c02367bf> reinit_ring+0xf/0x50 <c0237fdf> tx_timeout+0x4f/0xe0
Oct 16 16:51:43 localhost kernel: <c0105d67> timer_interrupt+0x67/0x70 <c02aa500> dev_watchdog+0x0/0xb0
Oct 16 16:51:43 localhost kernel: <c011bf52> __do_softirq+0x42/0x90 <c011bfc6> do_softirq+0x26/0x30
Oct 16 16:51:43 localhost kernel: <c02aa5a0> dev_watchdog+0xa0/0xb0 <c011f3f9> run_timer_softirq+0x129/0x170
Oct 16 16:51:43 localhost kernel: <c0101cab> default_idle+0x2b/0x60 <c0101d1a> cpu_idle+0x3a/0x50
Oct 16 16:51:43 localhost kernel: <c0104a1e> do_IRQ+0x1e/0x30 <c0102d8a> common_interrupt+0x1a/0x20
Oct 16 16:51:43 localhost kernel: <c0408676> start_kernel+0x1e6/0x2b0 <c0408220> unknown_bootoption+0x0/0x270
Oct 16 16:51:43 localhost kernel: BUG: warning at kernel/softirq.c:141/local_bh_enable()
Oct 16 16:51:43 localhost kernel: <c029a975> __kfree_skb+0xa5/0x120 <c0236790> drain_tx+0x20/0x40
Oct 16 16:51:43 localhost kernel: <c011c0fb> local_bh_enable+0x6b/0x70 <c0310c16> destroy_conntrack+0x76/0xe0
Oct 16 16:51:43 localhost kernel: <c02367bf> reinit_ring+0xf/0x50 <c0237fdf> tx_timeout+0x4f/0xe0
Oct 16 16:51:43 localhost kernel: <c02aa5a0> dev_watchdog+0xa0/0xb0 <c011f3f9> run_timer_softirq+0x129/0x170
Oct 16 16:51:43 localhost kernel: <c0105d67> timer_interrupt+0x67/0x70 <c02aa500> dev_watchdog+0x0/0xb0
Oct 16 16:51:43 localhost kernel: <c011bf52> __do_softirq+0x42/0x90 <c011bfc6> do_softirq+0x26/0x30
Oct 16 16:51:43 localhost kernel: <c0104a1e> do_IRQ+0x1e/0x30 <c0102d8a> common_interrupt+0x1a/0x20
Oct 16 16:51:43 localhost kernel: <c0101cab> default_idle+0x2b/0x60 <c0101d1a> cpu_idle+0x3a/0x50
Oct 16 16:51:43 localhost kernel: <c0408676> start_kernel+0x1e6/0x2b0 <c0408220> unknown_bootoption+0x0/0x270
Oct 16 16:51:43 localhost kernel: BUG: warning at kernel/softirq.c:141/local_bh_enable()
Oct 16 16:51:43 localhost kernel: <c011c0fb> local_bh_enable+0x6b/0x70 <c0310bd1> destroy_conntrack+0x31/0xe0
Oct 16 16:51:43 localhost kernel: <c029a975> __kfree_skb+0xa5/0x120 <c0236790> drain_tx+0x20/0x40
Oct 16 16:51:43 localhost kernel: <c02aa5a0> dev_watchdog+0xa0/0xb0 <c011f3f9> run_timer_softirq+0x129/0x170
Oct 16 16:51:43 localhost kernel: <c02367bf> reinit_ring+0xf/0x50 <c0237fdf> tx_timeout+0x4f/0xe0
Oct 16 16:51:43 localhost kernel: <c0105d67> timer_interrupt+0x67/0x70 <c02aa500> dev_watchdog+0x0/0xb0
Oct 16 16:51:43 localhost kernel: <c011bf52> __do_softirq+0x42/0x90 <c011bfc6> do_softirq+0x26/0x30
Oct 16 16:51:43 localhost kernel: <c0104a1e> do_IRQ+0x1e/0x30 <c0102d8a> common_interrupt+0x1a/0x20
Oct 16 16:51:43 localhost kernel: <c0101cab> default_idle+0x2b/0x60 <c0101d1a> cpu_idle+0x3a/0x50
Oct 16 16:51:43 localhost kernel: <c0408676> start_kernel+0x1e6/0x2b0 <c0408220> unknown_bootoption+0x0/0x270
Oct 16 16:51:43 localhost kernel: BUG: warning at kernel/softirq.c:141/local_bh_enable()
Oct 16 16:51:43 localhost kernel: <c011c0fb> local_bh_enable+0x6b/0x70 <c0310c16> destroy_conntrack+0x76/0xe0
Oct 16 16:51:43 localhost kernel: <c029a975> __kfree_skb+0xa5/0x120 <c0236790> drain_tx+0x20/0x40
Oct 16 16:51:43 localhost kernel: <c0105d67> timer_interrupt+0x67/0x70 <c02aa500> dev_watchdog+0x0/0xb0
Oct 16 16:51:43 localhost kernel: <c02aa5a0> dev_watchdog+0xa0/0xb0 <c011f3f9> run_timer_softirq+0x129/0x170
Oct 16 16:51:43 localhost kernel: <c02367bf> reinit_ring+0xf/0x50 <c0237fdf> tx_timeout+0x4f/0xe0
Oct 16 16:51:43 localhost kernel: <c0104a1e> do_IRQ+0x1e/0x30 <c0102d8a> common_interrupt+0x1a/0x20
Oct 16 16:51:43 localhost kernel: <c011bf52> __do_softirq+0x42/0x90 <c011bfc6> do_softirq+0x26/0x30
Oct 16 16:51:43 localhost kernel: <c0101cab> default_idle+0x2b/0x60 <c0101d1a> cpu_idle+0x3a/0x50
Oct 16 16:51:43 localhost kernel: <c0408676> start_kernel+0x1e6/0x2b0 <c0408220> unknown_bootoption+0x0/0x270
Oct 16 16:51:43 localhost kernel: eth6: DSPCFG accepted after 0 usec.
Oct 16 16:51:43 localhost kernel: eth6: Setting full-duplex based on negotiated link capability.
Oct 16 16:51:47 localhost kernel: NETDEV WATCHDOG: eth6: transmit timed out
Oct 16 16:51:47 localhost kernel: eth6: Transmit timed out, status 0x000000, resetting...
Oct 16 16:51:47 localhost kernel: eth6: DSPCFG accepted after 0 usec.
Oct 16 16:51:47 localhost kernel: eth6: Setting full-duplex based on negotiated link capability.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: BUG: warning at kernel/softirq.c:141/local_bh_enable()
2006-10-17 13:50 John Philips
@ 2006-10-17 13:56 ` Eric Dumazet
0 siblings, 0 replies; 11+ messages in thread
From: Eric Dumazet @ 2006-10-17 13:56 UTC (permalink / raw)
To: John Philips; +Cc: linux-kernel, linux-net
On Tuesday 17 October 2006 15:50, John Philips wrote:
> Hi,
>
> I recently upgraded some router/NAT devices from 2.4.25 to 2.6.17.8.
> They're using VIA C3 processors and NatSemi DP83815 NICs.
>
> Right after the upgrade I started noticing these error messages on one of
> the heavier-loaded boxes. This particular box routes and does NAT for
> around 400 users, peaking at 6Mb/sec of throughput.
>
> The errors were happening about every 3-5 minutes. I statically set eth6
> to 100baseTX-FD with mii-tool, and now the errors appear every few hours
> for 10-20 minute stretches.
>
> I searched Google and couldn't find any insight (FYI, I'm NOT using the
> CIPE patches).
>
> Any ideas?
Could you send us, once your machine is handling its typical load :
lspci -v
ethtool -S eth6
tc -s -d qdisc
cat /proc/slabinfo
cat /proc/meminfo
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: BUG: warning at kernel/softirq.c:141/local_bh_enable()
@ 2006-10-17 14:53 John Philips
2006-10-17 16:30 ` Eric Dumazet
0 siblings, 1 reply; 11+ messages in thread
From: John Philips @ 2006-10-17 14:53 UTC (permalink / raw)
To: Eric Dumazet; +Cc: linux-kernel, linux-net
> Could you send us, once your machine is handling its typical load :
>
> lspci -v
> ethtool -S eth6
> tc -s -d qdisc
> cat /proc/slabinfo
> cat /proc/meminfo
Eric,
Here's the output of the commands you mentioned. The box is handling a medium amount of load right now. I set eth6 back to auto-negotiation, and haven't seen the kernel BUG messages for the past 1/2 hour.
lspci -v:
0000:00:00.0 Host bridge: VIA Technologies, Inc. VT8601 [Apollo ProMedia] (rev 05)
Subsystem: VIA Technologies, Inc. VT8601 [Apollo ProMedia]
Flags: bus master, medium devsel, latency 8
Memory at e6000000 (32-bit, prefetchable) [size=4M]
Capabilities: [a0] AGP version 2.0
0000:00:01.0 PCI bridge: VIA Technologies, Inc. VT8601 [Apollo ProMedia AGP] (prog-if 00 [Normal decode])
Flags: bus master, 66MHz, medium devsel, latency 0
Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
Memory behind bridge: e0000000-e2ffffff
Prefetchable memory behind bridge: 20000000-200fffff
Capabilities: [80] Power Management version 2
0000:00:07.0 ISA bridge: VIA Technologies, Inc. VT82C686 [Apollo Super South] (rev 40)
Subsystem: VIA Technologies, Inc. VT82C686/A PCI to ISA Bridge
Flags: bus master, stepping, medium devsel, latency 0
Capabilities: [c0] Power Management version 2
0000:00:07.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 06) (prog-if 8a [Master SecP PriP])
Subsystem: VIA Technologies, Inc. VT82C586/B/VT82C686/A/B/VT8233/A/C/VT8235 PIPC Bus Master IDE
Flags: bus master, medium devsel, latency 32
I/O ports at d800 [size=16]
Capabilities: [c0] Power Management version 2
0000:00:07.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 1a) (prog-if 00 [UHCI])
Subsystem: VIA Technologies, Inc. (Wrong ID) USB Controller
Flags: bus master, medium devsel, latency 32, IRQ 12
I/O ports at d000 [size=32]
Capabilities: [80] Power Management version 2
0000:00:07.3 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 1a) (prog-if 00 [UHCI])
Subsystem: VIA Technologies, Inc. (Wrong ID) USB Controller
Flags: bus master, medium devsel, latency 32, IRQ 12
I/O ports at d400 [size=32]
Capabilities: [80] Power Management version 2
0000:00:07.4 Bridge: VIA Technologies, Inc. VT82C686 [Apollo Super ACPI] (rev 40)
Subsystem: VIA Technologies, Inc. VT82C686 [Apollo Super ACPI]
Flags: medium devsel, IRQ 9
Capabilities: [68] Power Management version 2
0000:00:11.0 PCI bridge: Texas Instruments PCI2250 PCI-to-PCI Bridge (rev 02) (prog-if 00 [Normal decode])
Flags: bus master, medium devsel, latency 32
Bus: primary=00, secondary=02, subordinate=02, sec-latency=32
I/O behind bridge: 0000c000-0000cfff
Memory behind bridge: e3000000-e4ffffff
Prefetchable memory behind bridge: 20100000-201fffff
Capabilities: [dc] Power Management version 1
0000:00:12.0 Ethernet controller: Intel Corporation 82557/8/9 [Ethernet Pro 100] (rev 08)
Subsystem: Intel Corporation EtherExpress PRO/100+ Management Adapter
Flags: bus master, medium devsel, latency 32, IRQ 12
Memory at e6700000 (32-bit, non-prefetchable) [size=4K]
I/O ports at dc00 [size=64]
Memory at e6400000 (32-bit, non-prefetchable) [size=1M]
Expansion ROM at 20200000 [disabled] [size=1M]
Capabilities: [dc] Power Management version 2
0000:00:13.0 Ethernet controller: Intel Corporation 82557/8/9 [Ethernet Pro 100] (rev 08)
Subsystem: Intel Corporation EtherExpress PRO/100+ Management Adapter
Flags: bus master, medium devsel, latency 32, IRQ 10
Memory at e6702000 (32-bit, non-prefetchable) [size=4K]
I/O ports at e000 [size=64]
Memory at e6500000 (32-bit, non-prefetchable) [size=1M]
Expansion ROM at 20300000 [disabled] [size=1M]
Capabilities: [dc] Power Management version 2
0000:00:14.0 Ethernet controller: Intel Corporation 82557/8/9 [Ethernet Pro 100] (rev 08)
Subsystem: Intel Corporation EtherExpress PRO/100+ Management Adapter
Flags: bus master, medium devsel, latency 32, IRQ 11
Memory at e6701000 (32-bit, non-prefetchable) [size=4K]
I/O ports at e400 [size=64]
Memory at e6600000 (32-bit, non-prefetchable) [size=1M]
Expansion ROM at 20400000 [disabled] [size=1M]
Capabilities: [dc] Power Management version 2
0000:01:00.0 VGA compatible controller: Trident Microsystems CyberBlade/i1 (rev 6a) (prog-if 00 [VGA])
Subsystem: Trident Microsystems CyberBlade/i1
Flags: bus master, 66MHz, medium devsel, latency 32, IRQ 5
Memory at e1800000 (32-bit, non-prefetchable) [size=8M]
Memory at e2000000 (32-bit, non-prefetchable) [size=128K]
Memory at e1000000 (32-bit, non-prefetchable) [size=8M]
Expansion ROM at 20000000 [disabled] [size=64K]
Capabilities: [80] AGP version 2.0
Capabilities: [90] Power Management version 1
0000:02:00.0 Ethernet controller: National Semiconductor Corporation DP83815 (MacPhyter) Ethernet Controller
Subsystem: National Semiconductor Corporation DP83815 (MacPhyter) Ethernet Controller
Flags: bus master, medium devsel, latency 32, IRQ 5
I/O ports at c000 [size=256]
Memory at e4000000 (32-bit, non-prefetchable) [size=4K]
Expansion ROM at 20100000 [disabled] [size=64K]
Capabilities: [40] Power Management version 2
0000:02:01.0 Ethernet controller: National Semiconductor Corporation DP83815 (MacPhyter) Ethernet Controller
Subsystem: National Semiconductor Corporation DP83815 (MacPhyter) Ethernet Controller
Flags: bus master, medium devsel, latency 32, IRQ 11
I/O ports at c400 [size=256]
Memory at e4001000 (32-bit, non-prefetchable) [size=4K]
Expansion ROM at 20110000 [disabled] [size=64K]
Capabilities: [40] Power Management version 2
0000:02:02.0 Ethernet controller: National Semiconductor Corporation DP83815 (MacPhyter) Ethernet Controller
Subsystem: National Semiconductor Corporation DP83815 (MacPhyter) Ethernet Controller
Flags: bus master, medium devsel, latency 32, IRQ 10
I/O ports at c800 [size=256]
Memory at e4002000 (32-bit, non-prefetchable) [size=4K]
Expansion ROM at 20120000 [disabled] [size=64K]
Capabilities: [40] Power Management version 2
0000:02:03.0 Ethernet controller: National Semiconductor Corporation DP83815 (MacPhyter) Ethernet Controller
Subsystem: National Semiconductor Corporation DP83815 (MacPhyter) Ethernet Controller
Flags: bus master, medium devsel, latency 32, IRQ 12
I/O ports at cc00 [size=256]
Memory at e4003000 (32-bit, non-prefetchable) [size=4K]
Expansion ROM at 20130000 [disabled] [size=64K]
Capabilities: [40] Power Management version 2
ethtool -S eth6:
no stats available
tc -s -d qdisc:
<< too many rules to list... there's a /22 subnet in use and a HTB & SFQ rule exist for each IP >>
cat /proc/slabinfo:
slabinfo - version: 2.1
# name <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail>
ip_fib_alias 37 113 32 113 1 : tunables 120 60 0 : slabdata 1 1 0
ip_fib_hash 31 113 32 113 1 : tunables 120 60 0 : slabdata 1 1 0
bridge_fdb_cache 0 0 64 59 1 : tunables 120 60 0 : slabdata 0 0 0
UNIX 22 22 352 11 1 : tunables 54 27 0 : slabdata 2 2 0
ipt_hashlimit 0 0 40 92 1 : tunables 120 60 0 : slabdata 0 0 0
ip_conntrack_expect 0 0 92 42 1 : tunables 120 60 0 : slabdata 0 0 0
ip_conntrack 3976 9008 236 16 1 : tunables 120 60 0 : slabdata 563 563 0
flow_cache 0 0 96 40 1 : tunables 120 60 0 : slabdata 0 0 0
cfq_ioc_pool 0 0 88 44 1 : tunables 120 60 0 : slabdata 0 0 0
cfq_pool 0 0 96 40 1 : tunables 120 60 0 : slabdata 0 0 0
crq_pool 0 0 44 84 1 : tunables 120 60 0 : slabdata 0 0 0
deadline_drq 0 0 48 78 1 : tunables 120 60 0 : slabdata 0 0 0
as_arq 20 63 60 63 1 : tunables 120 60 0 : slabdata 1 1 0
mqueue_inode_cache 1 8 480 8 1 : tunables 54 27 0 : slabdata 1 1 0
romfs_inode_cache 0 0 316 12 1 : tunables 54 27 0 : slabdata 0 0 0
ext2_inode_cache 0 0 416 9 1 : tunables 54 27 0 : slabdata 0 0 0
journal_handle 8 169 20 169 1 : tunables 120 60 0 : slabdata 1 1 0
journal_head 141 144 52 72 1 : tunables 120 60 0 : slabdata 2 2 0
revoke_table 2 254 12 254 1 : tunables 120 60 0 : slabdata 1 1 0
revoke_record 0 0 16 203 1 : tunables 120 60 0 : slabdata 0 0 0
ext3_inode_cache 13212 13212 432 9 1 : tunables 54 27 0 : slabdata 1468 1468 0
dnotify_cache 0 0 20 169 1 : tunables 120 60 0 : slabdata 0 0 0
eventpoll_pwq 0 0 36 101 1 : tunables 120 60 0 : slabdata 0 0 0
eventpoll_epi 0 0 96 40 1 : tunables 120 60 0 : slabdata 0 0 0
inotify_event_cache 0 0 28 127 1 : tunables 120 60 0 : slabdata 0 0 0
inotify_watch_cache 0 0 36 101 1 : tunables 120 60 0 : slabdata 0 0 0
kioctx 0 0 160 24 1 : tunables 120 60 0 : slabdata 0 0 0
kiocb 0 0 128 30 1 : tunables 120 60 0 : slabdata 0 0 0
fasync_cache 0 0 16 203 1 : tunables 120 60 0 : slabdata 0 0 0
shmem_inode_cache 4 10 400 10 1 : tunables 54 27 0 : slabdata 1 1 0
posix_timers_cache 0 0 88 44 1 : tunables 120 60 0 : slabdata 0 0 0
uid_cache 3 59 64 59 1 : tunables 120 60 0 : slabdata 1 1 0
ip_mrt_cache 0 0 96 40 1 : tunables 120 60 0 : slabdata 0 0 0
tcp_bind_bucket 15 203 16 203 1 : tunables 120 60 0 : slabdata 1 1 0
inet_peer_cache 48968 49855 64 59 1 : tunables 120 60 0 : slabdata 845 845 0
secpath_cache 0 0 32 113 1 : tunables 120 60 0 : slabdata 0 0 0
xfrm_dst_cache 0 0 288 13 1 : tunables 54 27 0 : slabdata 0 0 0
ip_dst_cache 11175 11175 256 15 1 : tunables 120 60 0 : slabdata 745 745 0
arp_cache 356 390 128 30 1 : tunables 120 60 0 : slabdata 13 13 0
RAW 9 9 448 9 1 : tunables 54 27 0 : slabdata 1 1 0
UDP 6 9 448 9 1 : tunables 54 27 0 : slabdata 1 1 0
tw_sock_TCP 22 40 96 40 1 : tunables 120 60 0 : slabdata 1 1 0
request_sock_TCP 8 59 64 59 1 : tunables 120 60 0 : slabdata 1 1 0
TCP 9 14 1056 7 2 : tunables 24 12 0 : slabdata 2 2 0
blkdev_ioc 17 127 28 127 1 : tunables 120 60 0 : slabdata 1 1 0
blkdev_queue 25 28 920 4 1 : tunables 54 27 0 : slabdata 7 7 0
blkdev_requests 20 23 168 23 1 : tunables 120 60 0 : slabdata 1 1 0
biovec-(256) 7 8 3072 2 2 : tunables 24 12 0 : slabdata 4 4 0
biovec-128 7 10 1536 5 2 : tunables 24 12 0 : slabdata 2 2 0
biovec-64 7 10 768 5 1 : tunables 54 27 0 : slabdata 2 2 0
biovec-16 7 20 192 20 1 : tunables 120 60 0 : slabdata 1 1 0
biovec-4 7 59 64 59 1 : tunables 120 60 0 : slabdata 1 1 0
biovec-1 83 203 16 203 1 : tunables 120 60 0 : slabdata 1 1 0
bio 354 354 64 59 1 : tunables 120 60 0 : slabdata 6 6 0
sock_inode_cache 55 55 352 11 1 : tunables 54 27 0 : slabdata 5 5 0
skbuff_fclone_cache 11 11 352 11 1 : tunables 54 27 0 : slabdata 1 1 0
skbuff_head_cache 500 820 192 20 1 : tunables 120 60 0 : slabdata 41 41 0
file_lock_cache 1 42 92 42 1 : tunables 120 60 0 : slabdata 1 1 0
proc_inode_cache 288 288 324 12 1 : tunables 54 27 0 : slabdata 24 24 0
sigqueue 8 27 144 27 1 : tunables 120 60 0 : slabdata 1 1 0
radix_tree_node 1386 1386 276 14 1 : tunables 54 27 0 : slabdata 99 99 0
bdev_cache 4 9 416 9 1 : tunables 54 27 0 : slabdata 1 1 0
sysfs_dir_cache 3345 3360 44 84 1 : tunables 120 60 0 : slabdata 40 40 0
mnt_cache 17 30 128 30 1 : tunables 120 60 0 : slabdata 1 1 0
inode_cache 1001 1001 308 13 1 : tunables 54 27 0 : slabdata 77 77 0
dentry_cache 15748 15748 124 31 1 : tunables 120 60 0 : slabdata 508 508 0
filp 338 528 160 24 1 : tunables 120 60 0 : slabdata 22 22 0
names_cache 2 2 4096 1 1 : tunables 24 12 0 : slabdata 2 2 0
idr_layer_cache 94 116 136 29 1 : tunables 120 60 0 : slabdata 4 4 0
buffer_head 22524 22542 48 78 1 : tunables 120 60 0 : slabdata 289 289 0
mm_struct 40 63 416 9 1 : tunables 54 27 0 : slabdata 7 7 0
vm_area_struct 741 880 88 44 1 : tunables 120 60 0 : slabdata 20 20 0
fs_cache 39 113 32 113 1 : tunables 120 60 0 : slabdata 1 1 0
files_cache 40 80 192 20 1 : tunables 120 60 0 : slabdata 4 4 0
signal_cache 53 66 352 11 1 : tunables 54 27 0 : slabdata 6 6 0
sighand_cache 45 45 1312 3 1 : tunables 24 12 0 : slabdata 15 15 0
task_struct 49 57 1280 3 1 : tunables 24 12 0 : slabdata 19 19 0
anon_vma 398 1017 8 339 1 : tunables 120 60 0 : slabdata 3 3 0
pgd 31 31 4096 1 1 : tunables 24 12 0 : slabdata 31 31 0
pid 57 202 36 101 1 : tunables 120 60 0 : slabdata 2 2 0
size-131072(DMA) 0 0 131072 1 32 : tunables 8 4 0 : slabdata 0 0 0
size-131072 0 0 131072 1 32 : tunables 8 4 0 : slabdata 0 0 0
size-65536(DMA) 0 0 65536 1 16 : tunables 8 4 0 : slabdata 0 0 0
size-65536 3 3 65536 1 16 : tunables 8 4 0 : slabdata 3 3 0
size-32768(DMA) 0 0 32768 1 8 : tunables 8 4 0 : slabdata 0 0 0
size-32768 1 1 32768 1 8 : tunables 8 4 0 : slabdata 1 1 0
size-16384(DMA) 0 0 16384 1 4 : tunables 8 4 0 : slabdata 0 0 0
size-16384 0 0 16384 1 4 : tunables 8 4 0 : slabdata 0 0 0
size-8192(DMA) 0 0 8192 1 2 : tunables 8 4 0 : slabdata 0 0 0
size-8192 56 56 8192 1 2 : tunables 8 4 0 : slabdata 56 56 0
size-4096(DMA) 0 0 4096 1 1 : tunables 24 12 0 : slabdata 0 0 0
size-4096 4094 4094 4096 1 1 : tunables 24 12 0 : slabdata 4094 4094 0
size-2048(DMA) 0 0 2048 2 1 : tunables 24 12 0 : slabdata 0 0 0
size-2048 506 536 2048 2 1 : tunables 24 12 0 : slabdata 268 268 0
size-1024(DMA) 0 0 1024 4 1 : tunables 54 27 0 : slabdata 0 0 0
size-1024 75 124 1024 4 1 : tunables 54 27 0 : slabdata 31 31 0
size-512(DMA) 0 0 512 8 1 : tunables 54 27 0 : slabdata 0 0 0
size-512 4279 4344 512 8 1 : tunables 54 27 0 : slabdata 543 543 0
size-256(DMA) 0 0 256 15 1 : tunables 120 60 0 : slabdata 0 0 0
size-256 141 255 256 15 1 : tunables 120 60 0 : slabdata 17 17 0
size-192(DMA) 0 0 192 20 1 : tunables 120 60 0 : slabdata 0 0 0
size-192 710 720 192 20 1 : tunables 120 60 0 : slabdata 36 36 0
size-128(DMA) 0 0 128 30 1 : tunables 120 60 0 : slabdata 0 0 0
size-128 360 360 128 30 1 : tunables 120 60 0 : slabdata 12 12 0
size-96(DMA) 0 0 96 40 1 : tunables 120 60 0 : slabdata 0 0 0
size-96 447 480 96 40 1 : tunables 120 60 0 : slabdata 12 12 0
size-64(DMA) 0 0 64 59 1 : tunables 120 60 0 : slabdata 0 0 0
size-32(DMA) 0 0 32 113 1 : tunables 120 60 0 : slabdata 0 0 0
size-64 1633 3127 64 59 1 : tunables 120 60 0 : slabdata 53 53 0
size-32 5553 5650 32 113 1 : tunables 120 60 0 : slabdata 50 50 0
kmem_cache 110 120 96 40 1 : tunables 120 60 0 : slabdata 3 3 0
cat /proc/meminfo:
MemTotal: 513972 kB
MemFree: 406748 kB
Buffers: 11312 kB
Cached: 44072 kB
SwapCached: 0 kB
Active: 44992 kB
Inactive: 19904 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 513972 kB
LowFree: 406748 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 304 kB
Writeback: 0 kB
Mapped: 15712 kB
Slab: 40772 kB
CommitLimit: 256984 kB
Committed_AS: 19652 kB
PageTables: 320 kB
VmallocTotal: 516072 kB
VmallocUsed: 436 kB
VmallocChunk: 515516 kB
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: BUG: warning at kernel/softirq.c:141/local_bh_enable()
2006-10-17 14:53 John Philips
@ 2006-10-17 16:30 ` Eric Dumazet
0 siblings, 0 replies; 11+ messages in thread
From: Eric Dumazet @ 2006-10-17 16:30 UTC (permalink / raw)
To: John Philips; +Cc: linux-kernel, linux-net
On Tuesday 17 October 2006 16:53, John Philips wrote:
> > Could you send us, once your machine is handling its typical load :
> >
> > lspci -v
> > ethtool -S eth6
> > tc -s -d qdisc
> > cat /proc/slabinfo
> > cat /proc/meminfo
>
> Eric,
>
> Here's the output of the commands you mentioned. The box is handling a
> medium amount of load right now. I set eth6 back to auto-negotiation, and
> haven't seen the kernel BUG messages for the past 1/2 hour.
OK, could you please send now :
ifconfig eth6
cat /proc/interrupts
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: BUG: warning at kernel/softirq.c:141/local_bh_enable()
@ 2006-10-17 16:43 John Philips
2006-10-17 16:53 ` Eric Dumazet
0 siblings, 1 reply; 11+ messages in thread
From: John Philips @ 2006-10-17 16:43 UTC (permalink / raw)
To: Eric Dumazet; +Cc: linux-kernel, linux-net
>OK, could you please send now :
>
>ifconfig eth6
>cat /proc/interrupts
Eric,
Here you go:
ifconfig eth6:
eth6 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
inet addr:X.X.X.X Bcast:X.X.X.X Mask:X.X.X.X
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:19015877 errors:0 dropped:880 overruns:82 frame:0
TX packets:18771972 errors:1970 dropped:17259 overruns:25 carrier:25
collisions:0 txqueuelen:1000
RX bytes:2956503786 (2.7 GiB) TX bytes:2149556909 (2.0 GiB)
Interrupt:12 Base address:0x8000
cat /proc/interrupts:
CPU0
0: 71570907 XT-PIC timer
2: 0 XT-PIC cascade
4: 465 XT-PIC serial
8: 4 XT-PIC rtc
10: 17076423 XT-PIC eth1
11: 3602236 XT-PIC eth2
12: 52112382 XT-PIC eth0, eth6
14: 955580 XT-PIC ide0
NMI: 0
LOC: 0
ERR: 0
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: BUG: warning at kernel/softirq.c:141/local_bh_enable()
2006-10-17 16:43 BUG: warning at kernel/softirq.c:141/local_bh_enable() John Philips
@ 2006-10-17 16:53 ` Eric Dumazet
2006-10-17 19:18 ` John Philips
0 siblings, 1 reply; 11+ messages in thread
From: Eric Dumazet @ 2006-10-17 16:53 UTC (permalink / raw)
To: John Philips; +Cc: linux-kernel, linux-net
On Tuesday 17 October 2006 18:43, John Philips wrote:
> >OK, could you please send now :
> >
> >ifconfig eth6
> >cat /proc/interrupts
>
> Eric,
>
> Here you go:
>
> ifconfig eth6:
> eth6 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
> inet addr:X.X.X.X Bcast:X.X.X.X Mask:X.X.X.X
> UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
> RX packets:19015877 errors:0 dropped:880 overruns:82 frame:0
> TX packets:18771972 errors:1970 dropped:17259 overruns:25
> carrier:25 collisions:0 txqueuelen:1000
> RX bytes:2956503786 (2.7 GiB) TX bytes:2149556909 (2.0 GiB)
> Interrupt:12 Base address:0x8000
>
>
> cat /proc/interrupts:
> CPU0
> 0: 71570907 XT-PIC timer
> 2: 0 XT-PIC cascade
> 4: 465 XT-PIC serial
> 8: 4 XT-PIC rtc
> 10: 17076423 XT-PIC eth1
> 11: 3602236 XT-PIC eth2
> 12: 52112382 XT-PIC eth0, eth6
> 14: 955580 XT-PIC ide0
> NMI: 0
> LOC: 0
> ERR: 0
Hum, given your slow cpu, you might revert tx queue length to 2.4.XX level
(100 instead of 1000)
ifconfig eth6 txqueuelen 100
Are you sure you cannot post here :
tc -s -d qdisc show dev eth6
You might want to make inet_peer_cache purge faster :
echo 1 >/proc/sys/net/ipv4/inet_peer_gc_mintime
echo 2 >/proc/sys/net/ipv4/inet_peer_gc_maxtime
Eric
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: BUG: warning at kernel/softirq.c:141/local_bh_enable()
2006-10-17 16:53 ` Eric Dumazet
@ 2006-10-17 19:18 ` John Philips
2006-10-17 19:28 ` Eric Dumazet
0 siblings, 1 reply; 11+ messages in thread
From: John Philips @ 2006-10-17 19:18 UTC (permalink / raw)
To: Eric Dumazet; +Cc: linux-kernel, linux-net
> Hum, given your slow cpu, you might revert tx queue
> length to 2.4.XX level
> (100 instead of 1000)
I tried that, it didn't help any.
> Are you sure you cannot post here :
>
> tc -s -d qdisc show dev eth6
As I said, there are rules in place for every single
IP in a /22 subnet. It would be over 12000 lines. I
tried turning off the traffic shaping, it didn't help.
> You might want to make inet_peer_cache purge faster
> :
>
> echo 1 >/proc/sys/net/ipv4/inet_peer_gc_mintime
> echo 2 >/proc/sys/net/ipv4/inet_peer_gc_maxtime
I tried that as well, unfortunately it didn't help.
It's worth noting that this behavior happens at
seemingly random times for random amounts of time. It
also causes the interface to auto-negotiate it's
settings again. During these periods, ping times to a
switch plugged directly into eth6 are 4000+ms. When I
statically set the interface to 100baseT/full duplex
with mii-tool, ping times to the switch immediately
return to normal. Unfortunately this fix only lasts a
few minutes, because the interface hangs up and
returns to auto-negotiation.
Also, I know this isn't a problem with my hardware
since it started happening immediately after I
upgraded the kernel from 2.4.25.
Thanks.
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: BUG: warning at kernel/softirq.c:141/local_bh_enable()
2006-10-17 19:18 ` John Philips
@ 2006-10-17 19:28 ` Eric Dumazet
0 siblings, 0 replies; 11+ messages in thread
From: Eric Dumazet @ 2006-10-17 19:28 UTC (permalink / raw)
To: John Philips; +Cc: linux-kernel, linux-net
John Philips a écrit :
>> Hum, given your slow cpu, you might revert tx queue
>> length to 2.4.XX level
>> (100 instead of 1000)
>
> I tried that, it didn't help any.
>
>> Are you sure you cannot post here :
>>
>> tc -s -d qdisc show dev eth6
>
> As I said, there are rules in place for every single
> IP in a /22 subnet. It would be over 12000 lines. I
> tried turning off the traffic shaping, it didn't help.
>
>> You might want to make inet_peer_cache purge faster
>> :
>>
>> echo 1 >/proc/sys/net/ipv4/inet_peer_gc_mintime
>> echo 2 >/proc/sys/net/ipv4/inet_peer_gc_maxtime
>
> I tried that as well, unfortunately it didn't help.
This was just to reduce size of the table (and time of the lookups), not to
solve the nic problem at all :)
>
> It's worth noting that this behavior happens at
> seemingly random times for random amounts of time. It
> also causes the interface to auto-negotiate it's
> settings again. During these periods, ping times to a
> switch plugged directly into eth6 are 4000+ms. When I
> statically set the interface to 100baseT/full duplex
> with mii-tool, ping times to the switch immediately
> return to normal. Unfortunately this fix only lasts a
> few minutes, because the interface hangs up and
> returns to auto-negotiation.
>
> Also, I know this isn't a problem with my hardware
> since it started happening immediately after I
> upgraded the kernel from 2.4.25.
Yes, I supposed that your hardware was running OK with previous kernels.
Which NIC driver is handling eth6 ?
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: BUG: warning at kernel/softirq.c:141/local_bh_enable()
[not found] <20061017201014.51060.qmail@web57802.mail.re3.yahoo.com>
@ 2006-10-17 20:54 ` Eric Dumazet
2006-10-18 15:33 ` John Philips
2006-10-18 18:19 ` John Philips
0 siblings, 2 replies; 11+ messages in thread
From: Eric Dumazet @ 2006-10-17 20:54 UTC (permalink / raw)
To: John Philips; +Cc: linux-kernel, linux-net
John Philips a écrit :
>> Which NIC driver is handling eth6 ?
>
> Eric,
>
> eth6 is a NatSemi DP83815 NIC
Well... lot of changes in drivers/net/natsemi.c between 2.4 and 2.6
Previous versions had a max_interrupt_work = 20;
RX_RING_SIZE is 32 for this NIC
But NAPI standard weight is 64, maybe you should try to lower it ? (so that an
interrupt dont try to queue/dequeue too many packets at once)
/proc/sys/net/core/dev_weight
/proc/sys/net/core/netdev_budget
Eric
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: BUG: warning at kernel/softirq.c:141/local_bh_enable()
2006-10-17 20:54 ` Eric Dumazet
@ 2006-10-18 15:33 ` John Philips
2006-10-18 18:19 ` John Philips
1 sibling, 0 replies; 11+ messages in thread
From: John Philips @ 2006-10-18 15:33 UTC (permalink / raw)
To: Eric Dumazet; +Cc: linux-kernel, linux-net
> > eth6 is a NatSemi DP83815 NIC
>
> Well... lot of changes in drivers/net/natsemi.c
> between 2.4 and 2.6
>
> Previous versions had a max_interrupt_work = 20;
> RX_RING_SIZE is 32 for this NIC
>
> But NAPI standard weight is 64, maybe you should try
> to lower it ? (so that an
> interrupt dont try to queue/dequeue too many packets
> at once)
>
> /proc/sys/net/core/dev_weight
> /proc/sys/net/core/netdev_budget
Eric,
Thanks for the suggestions, but I don't really
understand what you're saying.
Currently dev_weight is 64 and netdev_budget is 300.
What do you recommend I set them to?
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: BUG: warning at kernel/softirq.c:141/local_bh_enable()
2006-10-17 20:54 ` Eric Dumazet
2006-10-18 15:33 ` John Philips
@ 2006-10-18 18:19 ` John Philips
1 sibling, 0 replies; 11+ messages in thread
From: John Philips @ 2006-10-18 18:19 UTC (permalink / raw)
To: Eric Dumazet; +Cc: linux-kernel, linux-net
[-- Attachment #1: Type: text/plain, Size: 493 bytes --]
Eric,
Today I upgraded a few routers running 2.6.11.6 to the
same 2.6.17.8 kernel and experienced the same issues.
It only happens on the boxes with the NatSemi card.
Attached you will find a diff between the natsemi.c
driver from 2.6.11.6 and 2.6.17.8. Perhaps you'll see
where the problem exists (I don't understand C code).
Thanks
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
[-- Attachment #2: 3596274229-natsemi.c_2.6.11.6-2.6.11.17.diff --]
[-- Type: application/octet-stream, Size: 7890 bytes --]
6d5
< Portions copyright 2004 Harald Welte <laforge@gnumonks.org>
138a138,139
> * support for an external PHY
> * NAPI
162d162
< #include <linux/prefetch.h>
185a186,187
> /* Maximum events (Rx packets, etc.) to handle at each interrupt. */
> static int max_interrupt_work = 20;
190c192
< static const int multicast_filter_limit = 100;
---
> static int multicast_filter_limit = 100;
229c231
< #define NATSEMI_DEF_EEPROM_SIZE 24 /* 12 16-bit values */
---
> #define NATSEMI_EEPROM_SIZE 24 /* 12 16-bit values */
241c243
< static const char version[] __devinitdata =
---
> static char version[] __devinitdata =
251a254
> module_param(max_interrupt_work, int, 0);
256a260,261
> MODULE_PARM_DESC(max_interrupt_work,
> "DP8381x maximum events handled per interrupt");
372c377
< static const struct {
---
> static struct {
689,690d693
< /* Interrupt status */
< u32 intr_status;
717,718d719
< /* EEPROM data */
< int eeprom_size;
750,751c751
< static int natsemi_poll(struct net_device *dev, int *budget);
< static void netdev_rx(struct net_device *dev, int *work_done, int work_to_do);
---
> static void netdev_rx(struct net_device *dev);
779,790d778
< static inline void natsemi_irq_enable(struct net_device *dev)
< {
< writel(1, ns_ioaddr(dev) + IntrEnable);
< readl(ns_ioaddr(dev) + IntrEnable);
< }
<
< static inline void natsemi_irq_disable(struct net_device *dev)
< {
< writel(0, ns_ioaddr(dev) + IntrEnable);
< readl(ns_ioaddr(dev) + IntrEnable);
< }
<
894,895d881
< np->intr_status = 0;
< np->eeprom_size = NATSEMI_DEF_EEPROM_SIZE;
949,951d934
< dev->poll = natsemi_poll;
< dev->weight = 64;
<
1504,1528d1486
< static void reset_rx(struct net_device *dev)
< {
< int i;
< struct netdev_private *np = netdev_priv(dev);
< void __iomem *ioaddr = ns_ioaddr(dev);
<
< np->intr_status &= ~RxResetDone;
<
< writel(RxReset, ioaddr + ChipCmd);
<
< for (i=0;i<NATSEMI_HW_TIMEOUT;i++) {
< np->intr_status |= readl(ioaddr + IntrStatus);
< if (np->intr_status & RxResetDone)
< break;
< udelay(15);
< }
< if (i==NATSEMI_HW_TIMEOUT) {
< printk(KERN_WARNING "%s: RX reset did not complete in %d usec.\n",
< dev->name, i*15);
< } else if (netif_msg_hw(np)) {
< printk(KERN_WARNING "%s: RX reset took %d usec.\n",
< dev->name, i*15);
< }
< }
<
1971c1929
< skb->data, buflen, PCI_DMA_FROMDEVICE);
---
> skb->tail, buflen, PCI_DMA_FROMDEVICE);
2203,2204c2161,2162
< /* The interrupt handler doesn't actually handle interrupts itself, it
< * schedules a NAPI poll if there is anything to do. */
---
> /* The interrupt handler does all of the Rx thread work and cleans up
> after the Tx thread. */
2209a2168,2169
> int boguscnt = max_interrupt_work;
> unsigned int handled = 0;
2213,2226c2173,2175
<
< /* Reading automatically acknowledges. */
< np->intr_status = readl(ioaddr + IntrStatus);
<
< if (netif_msg_intr(np))
< printk(KERN_DEBUG
< "%s: Interrupt, status %#08x, mask %#08x.\n",
< dev->name, np->intr_status,
< readl(ioaddr + IntrMask));
<
< if (!np->intr_status)
< return IRQ_NONE;
<
< prefetch(&np->rx_skbuff[np->cur_rx % RX_RING_SIZE]);
---
> do {
> /* Reading automatically acknowledges all int sources. */
> u32 intr_status = readl(ioaddr + IntrStatus);
2228,2234c2177,2181
< if (netif_rx_schedule_prep(dev)) {
< /* Disable interrupts and register for poll */
< natsemi_irq_disable(dev);
< __netif_rx_schedule(dev);
< }
< return IRQ_HANDLED;
< }
---
> if (netif_msg_intr(np))
> printk(KERN_DEBUG
> "%s: Interrupt, status %#08x, mask %#08x.\n",
> dev->name, intr_status,
> readl(ioaddr + IntrMask));
2236,2242c2183,2185
< /* This is the NAPI poll routine. As well as the standard RX handling
< * it also handles all other interrupts that the chip might raise.
< */
< static int natsemi_poll(struct net_device *dev, int *budget)
< {
< struct netdev_private *np = netdev_priv(dev);
< void __iomem * ioaddr = ns_ioaddr(dev);
---
> if (intr_status == 0)
> break;
> handled = 1;
2244,2245c2187,2191
< int work_to_do = min(*budget, dev->quota);
< int work_done = 0;
---
> if (intr_status &
> (IntrRxDone | IntrRxIntr | RxStatusFIFOOver |
> IntrRxErr | IntrRxOverrun)) {
> netdev_rx(dev);
> }
2247,2249c2193,2194
< do {
< if (np->intr_status &
< (IntrTxDone | IntrTxIntr | IntrTxIdle | IntrTxErr)) {
---
> if (intr_status &
> (IntrTxDone | IntrTxIntr | IntrTxIdle | IntrTxErr)) {
2256,2269c2201,2202
< if (np->intr_status & IntrAbnormalSummary)
< netdev_error(dev, np->intr_status);
<
< if (np->intr_status &
< (IntrRxDone | IntrRxIntr | RxStatusFIFOOver |
< IntrRxErr | IntrRxOverrun)) {
< netdev_rx(dev, &work_done, work_to_do);
< }
<
< *budget -= work_done;
< dev->quota -= work_done;
<
< if (work_done >= work_to_do)
< return 1;
---
> if (intr_status & IntrAbnormalSummary)
> netdev_error(dev, intr_status);
2271,2274c2204,2212
< np->intr_status = readl(ioaddr + IntrStatus);
< } while (np->intr_status);
<
< netif_rx_complete(dev);
---
> if (--boguscnt < 0) {
> if (netif_msg_intr(np))
> printk(KERN_WARNING
> "%s: Too much work at interrupt, "
> "status=%#08x.\n",
> dev->name, intr_status);
> break;
> }
> } while (1);
2276,2281c2214,2215
< /* Reenable interrupts providing nothing is trying to shut
< * the chip down. */
< spin_lock(&np->lock);
< if (!np->hands_off && netif_running(dev))
< natsemi_irq_enable(dev);
< spin_unlock(&np->lock);
---
> if (netif_msg_intr(np))
> printk(KERN_DEBUG "%s: exiting interrupt.\n", dev->name);
2283c2217
< return 0;
---
> return IRQ_RETVAL(handled);
2288c2222
< static void netdev_rx(struct net_device *dev, int *work_done, int work_to_do)
---
> static void netdev_rx(struct net_device *dev)
2306,2311d2239
<
< if (*work_done >= work_to_do)
< break;
<
< (*work_done)++;
<
2323,2339d2250
<
< /* The RX state machine has probably
< * locked up beneath us. Follow the
< * reset procedure documented in
< * AN-1287. */
<
< spin_lock_irq(&np->lock);
< reset_rx(dev);
< reinit_rx(dev);
< writel(np->ring_dma, ioaddr + RxRingPtr);
< check_link(dev);
< spin_unlock_irq(&np->lock);
<
< /* We'll enable RX on exit from this
< * function. */
< break;
<
2372c2283
< np->rx_skbuff[entry]->data, pkt_len, 0);
---
> np->rx_skbuff[entry]->tail, pkt_len, 0);
2385c2296
< netif_receive_skb(skb);
---
> netif_rx(skb);
2525,2527c2436,2438
< writel(HASH_TABLE + i, ioaddr + RxFilterAddr);
< writel((mc_filter[i + 1] << 8) + mc_filter[i],
< ioaddr + RxFilterData);
---
> writew(HASH_TABLE + i, ioaddr + RxFilterAddr);
> writew((mc_filter[i+1]<<8) + mc_filter[i],
> ioaddr + RxFilterData);
2588,2589c2499
< struct netdev_private *np = netdev_priv(dev);
< return np->eeprom_size;
---
> return NATSEMI_EEPROM_SIZE;
2676c2586
< u8 *eebuf;
---
> u8 eebuf[NATSEMI_EEPROM_SIZE];
2679,2682d2588
< eebuf = kmalloc(np->eeprom_size, GFP_KERNEL);
< if (!eebuf)
< return -ENOMEM;
<
2689d2594
< kfree(eebuf);
3045d2949
< struct netdev_private *np = netdev_priv(dev);
3048c2952
< for (i = 0; i < np->eeprom_size/2; i++) {
---
> for (i = 0; i < NATSEMI_EEPROM_SIZE/2; i++) {
3173c3077,3079
< natsemi_irq_disable(dev);
---
> /* Disable interrupts, and flush posted writes */
> writel(0, ioaddr + IntrEnable);
> readl(ioaddr + IntrEnable);
3255,3257d3160
< * * natsemi_poll: checks before reenabling interrupts. suspend
< * sets hands_off, disables interrupts and then waits with
< * netif_poll_disable().
3262c3165
< static int natsemi_suspend (struct pci_dev *pdev, pm_message_t state)
---
> static int natsemi_suspend (struct pci_dev *pdev, u32 state)
3283,3284d3185
< netif_poll_disable(dev);
<
3337d3237
< netif_poll_enable(dev);
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2006-10-18 18:19 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-10-17 16:43 BUG: warning at kernel/softirq.c:141/local_bh_enable() John Philips
2006-10-17 16:53 ` Eric Dumazet
2006-10-17 19:18 ` John Philips
2006-10-17 19:28 ` Eric Dumazet
[not found] <20061017201014.51060.qmail@web57802.mail.re3.yahoo.com>
2006-10-17 20:54 ` Eric Dumazet
2006-10-18 15:33 ` John Philips
2006-10-18 18:19 ` John Philips
-- strict thread matches above, loose matches on Subject: below --
2006-10-17 14:53 John Philips
2006-10-17 16:30 ` Eric Dumazet
2006-10-17 13:50 John Philips
2006-10-17 13:56 ` Eric Dumazet
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox