Netdev List
 help / color / mirror / Atom feed
* [PATCH 2/2] sky2: fix Wake On Lan interaction with BIOS
From: Stephen Hemminger @ 2008-01-24  3:16 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: netdev
In-Reply-To: <20080123191151.1423a045@deepthought>

This patch disables config mode access after clearing PCI settings.
Some BIOS's seem to not do WOL if config bit still set.

Fixes: http://bugzilla.kernel.org/show_bug.cgi?id=9721

Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>

---
Please get this into 2.6.24.

--- a/drivers/net/sky2.c	2008-01-23 16:31:13.000000000 -0800
+++ b/drivers/net/sky2.c	2008-01-23 16:31:16.000000000 -0800
@@ -621,6 +621,7 @@ static void sky2_phy_power(struct sky2_h
 	static const u32 phy_power[] = { PCI_Y2_PHY1_POWD, PCI_Y2_PHY2_POWD };
 	static const u32 coma_mode[] = { PCI_Y2_PHY1_COMA, PCI_Y2_PHY2_COMA };
 
+	sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_ON);
 	reg1 = sky2_pci_read32(hw, PCI_DEV_REG1);
 	/* Turn on/off phy power saving */
 	if (onoff)
@@ -632,7 +633,8 @@ static void sky2_phy_power(struct sky2_h
 		reg1 |= coma_mode[port];
 
 	sky2_pci_write32(hw, PCI_DEV_REG1, reg1);
-	reg1 = sky2_pci_read32(hw, PCI_DEV_REG1);
+	sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF);
+	sky2_pci_read32(hw, PCI_DEV_REG1);
 
 	udelay(100);
 }
@@ -2427,6 +2429,7 @@ static void sky2_hw_intr(struct sky2_hw 
 	if (status & (Y2_IS_MST_ERR | Y2_IS_IRQ_STAT)) {
 		u16 pci_err;
 
+		sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_ON);
 		pci_err = sky2_pci_read16(hw, PCI_STATUS);
 		if (net_ratelimit())
 			dev_err(&pdev->dev, "PCI hardware error (0x%x)\n",
@@ -2434,12 +2437,14 @@ static void sky2_hw_intr(struct sky2_hw 
 
 		sky2_pci_write16(hw, PCI_STATUS,
 				      pci_err | PCI_STATUS_ERROR_BITS);
+		sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF);
 	}
 
 	if (status & Y2_IS_PCI_EXP) {
 		/* PCI-Express uncorrectable Error occurred */
 		u32 err;
 
+		sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_ON);
 		err = sky2_read32(hw, Y2_CFG_AER + PCI_ERR_UNCOR_STATUS);
 		sky2_write32(hw, Y2_CFG_AER + PCI_ERR_UNCOR_STATUS,
 			     0xfffffffful);
@@ -2447,6 +2452,7 @@ static void sky2_hw_intr(struct sky2_hw 
 			dev_err(&pdev->dev, "PCI Express error (0x%x)\n", err);
 
 		sky2_read32(hw, Y2_CFG_AER + PCI_ERR_UNCOR_STATUS);
+		sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF);
 	}
 
 	if (status & Y2_HWE_L1_MASK)
@@ -2812,6 +2818,7 @@ static void sky2_reset(struct sky2_hw *h
 	}
 
 	sky2_power_on(hw);
+	sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF);
 
 	for (i = 0; i < hw->ports; i++) {
 		sky2_write8(hw, SK_REG(i, GMAC_LINK_CTRL), GMLC_RST_SET);

^ permalink raw reply

* bluetooth : lockdep warning on rfcomm
From: Dave Young @ 2008-01-24  3:02 UTC (permalink / raw)
  To: LKML; +Cc: Netdev, Marcel Holtmann, David Miller, bluez-devel

=============================================
[ INFO: possible recursive locking detected ]
2.6.24-rc8-mm1 #8
---------------------------------------------
bluepush/3213 is trying to acquire lock:
 (sk_lock-AF_BLUETOOTH){--..}, at: [<f8978c80>]
l2cap_sock_bind+0x40/0x100 [l2cap]

but task is already holding lock:
 (sk_lock-AF_BLUETOOTH){--..}, at: [<f894a31e>]
rfcomm_sock_connect+0x3e/0xe0 [rfcomm]

other info that might help us debug this:
2 locks held by bluepush/3213:
 #0:  (sk_lock-AF_BLUETOOTH){--..}, at: [<f894a31e>]
rfcomm_sock_connect+0x3e/0xe0 [rfcomm]
 #1:  (rfcomm_mutex){--..}, at: [<f8947556>] rfcomm_dlc_open+0x26/0x60 [rfcomm]

stack backtrace:
Pid: 3213, comm: bluepush Not tainted 2.6.24-rc8-mm1 #8
 [<c0132128>] ? printk+0x18/0x20
 [<c0154437>] print_deadlock_bug+0xc7/0xe0
 [<c01544bc>] check_deadlock+0x6c/0x80
 [<c01548fc>] validate_chain+0x14c/0x320
 [<c0156221>] __lock_acquire+0x1c1/0x730
 [<c0156d89>] lock_acquire+0x79/0xb0
 [<f8978c80>] ? l2cap_sock_bind+0x40/0x100 [l2cap]
 [<c03c05f5>] lock_sock_nested+0x55/0x70
 [<f8978c80>] ? l2cap_sock_bind+0x40/0x100 [l2cap]
 [<f8978c80>] l2cap_sock_bind+0x40/0x100 [l2cap]
 [<c03bdb4a>] kernel_bind+0xa/0x10
 [<f8947afc>] rfcomm_session_create+0x4c/0x110 [rfcomm]
 [<f8947509>] __rfcomm_dlc_open+0x129/0x150 [rfcomm]
 [<f8947568>] rfcomm_dlc_open+0x38/0x60 [rfcomm]
 [<f894a396>] rfcomm_sock_connect+0xb6/0xe0 [rfcomm]
 [<c03bcd39>] sys_connect+0x99/0xd0
 [<c010f509>] ? cache_add_dev+0x39/0x1a0
 [<c015323d>] ? put_lock_stats+0xd/0x30
 [<c01532c0>] ? lock_release_holdtime+0x60/0x80
 [<c018e86c>] ? fget+0x7c/0x100
 [<c0156b97>] ? __lock_release+0x47/0x70
 [<c018e86c>] ? fget+0x7c/0x100
 [<c02611b7>] ? copy_from_user+0x37/0x70
 [<c03bd855>] sys_socketcall+0xa5/0x230
 [<c0155659>] ? trace_hardirqs_on+0xb9/0x130
 [<c010501b>] ? restore_nocheck+0x12/0x15

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/

^ permalink raw reply

* Re: 2.6.24-rc8-mm1 : net tcp_input.c warnings
From: Dave Young @ 2008-01-24  2:42 UTC (permalink / raw)
  To: Ilpo Järvinen; +Cc: LKML, Netdev, Andrew Morton
In-Reply-To: <Pine.LNX.4.64.0801231256360.31652@kivilampi-30.cs.helsinki.fi>

On Jan 23, 2008 7:01 PM, Ilpo Järvinen <ilpo.jarvinen@helsinki.fi> wrote:
> On Wed, 23 Jan 2008, Ilpo Järvinen wrote:
>
> > On Wed, 23 Jan 2008, Dave Young wrote:
> >
> > > On Jan 23, 2008 3:41 PM, Ilpo Järvinen <ilpo.jarvinen@helsinki.fi> wrote:
> > > >
> > > > On Tue, 22 Jan 2008, David Miller wrote:
> > > >
> > > > > From: "Dave Young" <hidave.darkstar@gmail.com>
> > > > > Date: Wed, 23 Jan 2008 09:44:30 +0800
> > > > >
> > > > > > On Jan 22, 2008 6:47 PM, Ilpo Järvinen <ilpo.jarvinen@helsinki.fi> wrote:
> > > > > > > [PATCH] [TCP]: debug S+L
> > > > > >
> > > > > > Thanks, If there's new findings I will let you know.
> > > > >
> > > > > Thanks for helping with this bug Dave.
> > > >
> > > > I noticed btw that there thing might (is likely to) spuriously trigger at
> > > > WARN_ON(sacked != tp->sacked_out); because those won't be equal when SACK
> > > > is not enabled. If that does happen too often, I send a fixed patch for
> > > > it, yet, the fact that I print print tp->rx_opt.sack_ok allows
> > > > identification of those cases already as it's zero when SACK is not
> > > > enabled.
> > > >
> > > > Just ask if you need the updated debug patch.
> > >
> > > Thanks,  please send, I would like to get it.
> >
> > There you go. I fixed non-SACK case by adding tcp_is_sack checks there and
> > also added two verifys to tcp_ack to see if there's corruption outside of
> > TCP.
>
> There's some discussion about a problem that is very likely the same as in
> here (sorry for not remembering to cc you in there due to rapid progress):
>
>    http://marc.info/?t=120107174200003&r=1&w=2

Thanks.

New warning trigged with your debug patch:

ACPI: PCI Interrupt 0000:00:1b.0[A] -> GSI 16 (level, low) -> IRQ 16
PCI: Setting latency timer of device 0000:00:1b.0 to 64
e100: Intel(R) PRO/100 Network Driver, 3.5.23-k4-NAPI
e100: Copyright(c) 1999-2006 Intel Corporation
ACPI: PCI Interrupt 0000:03:08.0[A] -> GSI 20 (level, low) -> IRQ 20
e100: eth1: e100_probe: addr 0xefaff000, irq 20, MAC addr 00:13:72:e7:4d:66
eth0:  setting full-duplex.
------------[ cut here ]------------
WARNING: at net/ipv4/tcp_ipv4.c:197 tcp_verify_wq+0x1b6/0x1c0()
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event
snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss eeprom e100 psmouse
snd_hda_intel snd_pcm snd_timer btusb bluetooth serio_raw snd 3c59x sg
evdev thermal soundcore rtc_cmos snd_page_alloc rtc_core rtc_lib
i2c_i801 processor button intel_agp dcdbas pcspkr agpgart
Pid: 0, comm: swapper Not tainted 2.6.24-rc8-mm1 #8
 [<c0132100>] ? have_callable_console+0x20/0x30
 [<c0131844>] warn_on_slowpath+0x54/0x80
 [<c0150030>] ? timer_list_show_tickdevices+0xf0/0x110
 [<c010af95>] ? native_sched_clock+0x85/0xe0
 [<c0153251>] ? put_lock_stats+0x21/0x30
 [<c01532c0>] ? lock_release_holdtime+0x60/0x80
 [<c0186af4>] ? check_bytes_and_report+0x24/0xc0
 [<c0186af4>] ? check_bytes_and_report+0x24/0xc0
 [<c0186bf1>] ? check_pad_bytes+0x61/0x80
 [<c0400096>] tcp_verify_wq+0x1b6/0x1c0
 [<c03f7509>] ? tcp_clean_rtx_queue+0x2d9/0x5b0
 [<c03f5540>] tcp_add_reno_sack+0x30/0x50
 [<c03f6d72>] tcp_fastretrans_alert+0x3d2/0x700
 [<c03f7e63>] tcp_ack+0x1b3/0x3a0
 [<c03fa21b>] tcp_rcv_established+0x3eb/0x710
 [<c0401c05>] tcp_v4_do_rcv+0xe5/0x100
 [<c04021fb>] tcp_v4_rcv+0x5db/0x660
 [<c0401fa7>] ? tcp_v4_rcv+0x387/0x660
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c03e5f44>] ip_local_deliver_finish+0x84/0x1d0
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c0156b97>] ? __lock_release+0x47/0x70
 [<c03e6147>] ip_local_deliver+0xb7/0xc0
 [<c03e6202>] ip_rcv_finish+0xb2/0x3c0
 [<c03c01d8>] ? sock_def_readable+0x48/0xa0
 [<c03be061>] ? sock_queue_rcv_skb+0xb1/0x1a0
 [<c03be0a7>] ? sock_queue_rcv_skb+0xf7/0x1a0
 [<c03e669f>] ip_rcv+0x18f/0x290
 [<c042fb10>] ? packet_rcv_spkt+0xd0/0x130
 [<c03c8da6>] netif_receive_skb+0x2b6/0x330
 [<c03c8c17>] ? netif_receive_skb+0x127/0x330
 [<c03c8ea3>] ? process_backlog+0x83/0x100
 [<c03c8eae>] process_backlog+0x8e/0x100
 [<c03c90bc>] net_rx_action+0x13c/0x230
 [<c03c8fd9>] ? net_rx_action+0x59/0x230
 [<c0136f3e>] ? __do_softirq+0x6e/0x120
 [<c0136f63>] __do_softirq+0x93/0x120
 [<c013706a>] do_softirq+0x7a/0x80
 [<c0137135>] irq_exit+0x65/0x90
 [<c01078b1>] do_IRQ+0x41/0x80
 [<c0155659>] ? trace_hardirqs_on+0xb9/0x130
 [<c01059ca>] common_interrupt+0x2e/0x34
 [<c0103390>] ? mwait_idle_with_hints+0x40/0x50
 [<c01033a0>] ? mwait_idle+0x0/0x20
 [<c01033b2>] mwait_idle+0x12/0x20
 [<c0103141>] cpu_idle+0x61/0x110
 [<c04339fd>] rest_init+0x5d/0x60
 [<c05a47fa>] start_kernel+0x1fa/0x260
 [<c05a4190>] ? unknown_bootoption+0x0/0x130
 =======================
---[ end trace 14b601818e6903ac ]---
P: 5 L: 0 vs 0 S: 0 vs 1 w: 2044790889-2044796616 (0)
TCP wq(s)      <
TCP wq(h) +++h+<
l0 s1 f0 p5 seq: su2044790889 hs2044795029 sn2044796616
------------[ cut here ]------------
WARNING: at net/ipv4/tcp_ipv4.c:197 tcp_verify_wq+0x1b6/0x1c0()
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event
snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss eeprom e100 psmouse
snd_hda_intel snd_pcm snd_timer btusb bluetooth serio_raw snd 3c59x sg
evdev thermal soundcore rtc_cmos snd_page_alloc rtc_core rtc_lib
i2c_i801 processor button intel_agp dcdbas pcspkr agpgart
Pid: 0, comm: swapper Not tainted 2.6.24-rc8-mm1 #8
 [<c0132100>] ? have_callable_console+0x20/0x30
 [<c0131844>] warn_on_slowpath+0x54/0x80
 [<c0250030>] ? generic_make_request+0x1c0/0x2e0
 [<c0132128>] ? printk+0x18/0x20
 [<c03ffe54>] ? tcp_print_queue+0x1a4/0x230
 [<c0132438>] ? vprintk+0x308/0x320
 [<c0400096>] tcp_verify_wq+0x1b6/0x1c0
 [<c03ffff6>] ? tcp_verify_wq+0x116/0x1c0
 [<c03f674e>] tcp_try_to_open+0x2e/0x160
 [<c03f6e9e>] tcp_fastretrans_alert+0x4fe/0x700
 [<c03f7e63>] tcp_ack+0x1b3/0x3a0
 [<c03fa21b>] tcp_rcv_established+0x3eb/0x710
 [<c0401c05>] tcp_v4_do_rcv+0xe5/0x100
 [<c04021fb>] tcp_v4_rcv+0x5db/0x660
 [<c0401fa7>] ? tcp_v4_rcv+0x387/0x660
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c03e5f44>] ip_local_deliver_finish+0x84/0x1d0
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c0156b97>] ? __lock_release+0x47/0x70
 [<c03e6147>] ip_local_deliver+0xb7/0xc0
 [<c03e6202>] ip_rcv_finish+0xb2/0x3c0
 [<c03c01d8>] ? sock_def_readable+0x48/0xa0
 [<c03be061>] ? sock_queue_rcv_skb+0xb1/0x1a0
 [<c03be0a7>] ? sock_queue_rcv_skb+0xf7/0x1a0
 [<c03e669f>] ip_rcv+0x18f/0x290
 [<c042fb10>] ? packet_rcv_spkt+0xd0/0x130
 [<c03c8da6>] netif_receive_skb+0x2b6/0x330
 [<c03c8c17>] ? netif_receive_skb+0x127/0x330
 [<c03c8ea3>] ? process_backlog+0x83/0x100
 [<c03c8eae>] process_backlog+0x8e/0x100
 [<c03c90bc>] net_rx_action+0x13c/0x230
 [<c03c8fd9>] ? net_rx_action+0x59/0x230
 [<c0136f3e>] ? __do_softirq+0x6e/0x120
 [<c0136f63>] __do_softirq+0x93/0x120
 [<c013706a>] do_softirq+0x7a/0x80
 [<c0137135>] irq_exit+0x65/0x90
 [<c01078b1>] do_IRQ+0x41/0x80
 [<c0155659>] ? trace_hardirqs_on+0xb9/0x130
 [<c01059ca>] common_interrupt+0x2e/0x34
 [<c0103390>] ? mwait_idle_with_hints+0x40/0x50
 [<c01033a0>] ? mwait_idle+0x0/0x20
 [<c01033b2>] mwait_idle+0x12/0x20
 [<c0103141>] cpu_idle+0x61/0x110
 [<c04339fd>] rest_init+0x5d/0x60
 [<c05a47fa>] start_kernel+0x1fa/0x260
 [<c05a4190>] ? unknown_bootoption+0x0/0x130
 =======================
---[ end trace 14b601818e6903ac ]---
P: 5 L: 0 vs 0 S: 0 vs 1 w: 2044790889-2044796616 (0)
TCP wq(s)      <
TCP wq(h) +++h+<
l0 s1 f0 p5 seq: su2044790889 hs2044795029 sn2044796616
------------[ cut here ]------------
WARNING: at net/ipv4/tcp_ipv4.c:197 tcp_verify_wq+0x1b6/0x1c0()
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event
snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss eeprom e100 psmouse
snd_hda_intel snd_pcm snd_timer btusb bluetooth serio_raw snd 3c59x sg
evdev thermal soundcore rtc_cmos snd_page_alloc rtc_core rtc_lib
i2c_i801 processor button intel_agp dcdbas pcspkr agpgart
Pid: 0, comm: swapper Not tainted 2.6.24-rc8-mm1 #8
 [<c0132100>] ? have_callable_console+0x20/0x30
 [<c0131844>] warn_on_slowpath+0x54/0x80
 [<c0132438>] ? vprintk+0x308/0x320
 [<c0132438>] ? vprintk+0x308/0x320
 [<c0186af4>] ? check_bytes_and_report+0x24/0xc0
 [<c0186bf1>] ? check_pad_bytes+0x61/0x80
 [<c0186dbd>] ? check_object+0xad/0x1e0
 [<c0400096>] tcp_verify_wq+0x1b6/0x1c0
 [<c015561c>] ? trace_hardirqs_on+0x7c/0x130
 [<c03c1578>] ? kfree_skbmem+0x98/0xc0
 [<c03fcf03>] tcp_write_xmit+0x63/0x290
 [<c03c1578>] ? kfree_skbmem+0x98/0xc0
 [<c03fd147>] __tcp_push_pending_frames+0x17/0x80
 [<c03fa23e>] tcp_rcv_established+0x40e/0x710
 [<c0401c05>] tcp_v4_do_rcv+0xe5/0x100
 [<c04021fb>] tcp_v4_rcv+0x5db/0x660
 [<c0401fa7>] ? tcp_v4_rcv+0x387/0x660
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c03e5f44>] ip_local_deliver_finish+0x84/0x1d0
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c0156b97>] ? __lock_release+0x47/0x70
 [<c03e6147>] ip_local_deliver+0xb7/0xc0
 [<c03e6202>] ip_rcv_finish+0xb2/0x3c0
 [<c03c01d8>] ? sock_def_readable+0x48/0xa0
 [<c03be061>] ? sock_queue_rcv_skb+0xb1/0x1a0
 [<c03be0a7>] ? sock_queue_rcv_skb+0xf7/0x1a0
 [<c03e669f>] ip_rcv+0x18f/0x290
 [<c042fb10>] ? packet_rcv_spkt+0xd0/0x130
 [<c03c8da6>] netif_receive_skb+0x2b6/0x330
 [<c03c8c17>] ? netif_receive_skb+0x127/0x330
 [<c03c8ea3>] ? process_backlog+0x83/0x100
 [<c03c8eae>] process_backlog+0x8e/0x100
 [<c03c90bc>] net_rx_action+0x13c/0x230
 [<c03c8fd9>] ? net_rx_action+0x59/0x230
 [<c0136f3e>] ? __do_softirq+0x6e/0x120
 [<c0136f63>] __do_softirq+0x93/0x120
 [<c013706a>] do_softirq+0x7a/0x80
 [<c0137135>] irq_exit+0x65/0x90
 [<c01078b1>] do_IRQ+0x41/0x80
 [<c0155659>] ? trace_hardirqs_on+0xb9/0x130
 [<c01059ca>] common_interrupt+0x2e/0x34
 [<c0103390>] ? mwait_idle_with_hints+0x40/0x50
 [<c01033a0>] ? mwait_idle+0x0/0x20
 [<c01033b2>] mwait_idle+0x12/0x20
 [<c0103141>] cpu_idle+0x61/0x110
 [<c04339fd>] rest_init+0x5d/0x60
 [<c05a47fa>] start_kernel+0x1fa/0x260
 [<c05a4190>] ? unknown_bootoption+0x0/0x130
 =======================
---[ end trace 14b601818e6903ac ]---
P: 5 L: 0 vs 0 S: 0 vs 1 w: 2044790889-2044796616 (0)
TCP wq(s)      <
TCP wq(h) +++h+<
l0 s1 f0 p5 seq: su2044790889 hs2044795029 sn2044796616
------------[ cut here ]------------
WARNING: at net/ipv4/tcp_ipv4.c:197 tcp_verify_wq+0x1b6/0x1c0()
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event
snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss eeprom e100 psmouse
snd_hda_intel snd_pcm snd_timer btusb bluetooth serio_raw snd 3c59x sg
evdev thermal soundcore rtc_cmos snd_page_alloc rtc_core rtc_lib
i2c_i801 processor button intel_agp dcdbas pcspkr agpgart
Pid: 0, comm: swapper Not tainted 2.6.24-rc8-mm1 #8
 [<c0132100>] ? have_callable_console+0x20/0x30
 [<c0131844>] warn_on_slowpath+0x54/0x80
 [<c0132128>] ? printk+0x18/0x20
 [<c01317da>] ? print_oops_end_marker+0x2a/0x30
 [<c0131849>] ? warn_on_slowpath+0x59/0x80
 [<c025f9e4>] ? vsnprintf+0x2d4/0x4f0
 [<c0132128>] ? printk+0x18/0x20
 [<c03ffe54>] ? tcp_print_queue+0x1a4/0x230
 [<c0132438>] ? vprintk+0x308/0x320
 [<c0400096>] tcp_verify_wq+0x1b6/0x1c0
 [<c0186bf1>] ? check_pad_bytes+0x61/0x80
 [<c03f7509>] tcp_clean_rtx_queue+0x2d9/0x5b0
 [<c0154982>] ? validate_chain+0x1d2/0x320
 [<c03f7dd2>] tcp_ack+0x122/0x3a0
 [<c03fa21b>] tcp_rcv_established+0x3eb/0x710
 [<c0401c05>] tcp_v4_do_rcv+0xe5/0x100
 [<c04021fb>] tcp_v4_rcv+0x5db/0x660
 [<c0401fa7>] ? tcp_v4_rcv+0x387/0x660
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c03e5f44>] ip_local_deliver_finish+0x84/0x1d0
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c0156b97>] ? __lock_release+0x47/0x70
 [<c03e6147>] ip_local_deliver+0xb7/0xc0
 [<c03e6202>] ip_rcv_finish+0xb2/0x3c0
 [<c03c01d8>] ? sock_def_readable+0x48/0xa0
 [<c03be061>] ? sock_queue_rcv_skb+0xb1/0x1a0
 [<c03be0a7>] ? sock_queue_rcv_skb+0xf7/0x1a0
 [<c03e669f>] ip_rcv+0x18f/0x290
 [<c042fb10>] ? packet_rcv_spkt+0xd0/0x130
 [<c03c8da6>] netif_receive_skb+0x2b6/0x330
 [<c03c8c17>] ? netif_receive_skb+0x127/0x330
 [<c03c8ea3>] ? process_backlog+0x83/0x100
 [<c03c8eae>] process_backlog+0x8e/0x100
 [<c03c90bc>] net_rx_action+0x13c/0x230
 [<c03c8fd9>] ? net_rx_action+0x59/0x230
 [<c0136f3e>] ? __do_softirq+0x6e/0x120
 [<c0136f63>] __do_softirq+0x93/0x120
 [<c013706a>] do_softirq+0x7a/0x80
 [<c0137135>] irq_exit+0x65/0x90
 [<c01078b1>] do_IRQ+0x41/0x80
 [<c0155659>] ? trace_hardirqs_on+0xb9/0x130
 [<c01059ca>] common_interrupt+0x2e/0x34
 [<c0103390>] ? mwait_idle_with_hints+0x40/0x50
 [<c01033a0>] ? mwait_idle+0x0/0x20
 [<c01033b2>] mwait_idle+0x12/0x20
 [<c0103141>] cpu_idle+0x61/0x110
 [<c04339fd>] rest_init+0x5d/0x60
 [<c05a47fa>] start_kernel+0x1fa/0x260
 [<c05a4190>] ? unknown_bootoption+0x0/0x130
 =======================
---[ end trace 14b601818e6903ac ]---
P: 5 L: 0 vs 0 S: 0 vs 1 w: 2044790889-2044796616 (0)
TCP wq(s)      <
TCP wq(h) +++h+<
l0 s1 f0 p5 seq: su2044790889 hs2044795029 sn2044796616
------------[ cut here ]------------
WARNING: at net/ipv4/tcp_ipv4.c:197 tcp_verify_wq+0x1b6/0x1c0()
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event
snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss eeprom e100 psmouse
snd_hda_intel snd_pcm snd_timer btusb bluetooth serio_raw snd 3c59x sg
evdev thermal soundcore rtc_cmos snd_page_alloc rtc_core rtc_lib
i2c_i801 processor button intel_agp dcdbas pcspkr agpgart
Pid: 0, comm: swapper Not tainted 2.6.24-rc8-mm1 #8
 [<c0132100>] ? have_callable_console+0x20/0x30
 [<c0131844>] warn_on_slowpath+0x54/0x80
 [<c0132438>] ? vprintk+0x308/0x320
 [<c025f9e4>] ? vsnprintf+0x2d4/0x4f0
 [<c03ffe54>] ? tcp_print_queue+0x1a4/0x230
 [<c0132438>] ? vprintk+0x308/0x320
 [<c03ffff6>] ? tcp_verify_wq+0x116/0x1c0
 [<c0400096>] tcp_verify_wq+0x1b6/0x1c0
 [<c03f7509>] ? tcp_clean_rtx_queue+0x2d9/0x5b0
 [<c0154982>] ? validate_chain+0x1d2/0x320
 [<c03f6a93>] tcp_fastretrans_alert+0xf3/0x700
 [<c03f7e63>] tcp_ack+0x1b3/0x3a0
 [<c03fa21b>] tcp_rcv_established+0x3eb/0x710
 [<c0401c05>] tcp_v4_do_rcv+0xe5/0x100
 [<c04021fb>] tcp_v4_rcv+0x5db/0x660
 [<c0401fa7>] ? tcp_v4_rcv+0x387/0x660
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c03e5f44>] ip_local_deliver_finish+0x84/0x1d0
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c0156b97>] ? __lock_release+0x47/0x70
 [<c03e6147>] ip_local_deliver+0xb7/0xc0
 [<c03e6202>] ip_rcv_finish+0xb2/0x3c0
 [<c03c01d8>] ? sock_def_readable+0x48/0xa0
 [<c03be061>] ? sock_queue_rcv_skb+0xb1/0x1a0
 [<c03be0a7>] ? sock_queue_rcv_skb+0xf7/0x1a0
 [<c03e669f>] ip_rcv+0x18f/0x290
 [<c042fb10>] ? packet_rcv_spkt+0xd0/0x130
 [<c03c8da6>] netif_receive_skb+0x2b6/0x330
 [<c03c8c17>] ? netif_receive_skb+0x127/0x330
 [<c03c8ea3>] ? process_backlog+0x83/0x100
 [<c03c8eae>] process_backlog+0x8e/0x100
 [<c03c90bc>] net_rx_action+0x13c/0x230
 [<c03c8fd9>] ? net_rx_action+0x59/0x230
 [<c0136f3e>] ? __do_softirq+0x6e/0x120
 [<c0136f63>] __do_softirq+0x93/0x120
 [<c013706a>] do_softirq+0x7a/0x80
 [<c0137135>] irq_exit+0x65/0x90
 [<c01078b1>] do_IRQ+0x41/0x80
 [<c0155659>] ? trace_hardirqs_on+0xb9/0x130
 [<c01059ca>] common_interrupt+0x2e/0x34
 [<c0103390>] ? mwait_idle_with_hints+0x40/0x50
 [<c01033a0>] ? mwait_idle+0x0/0x20
 [<c01033b2>] mwait_idle+0x12/0x20
 [<c0103141>] cpu_idle+0x61/0x110
 [<c04339fd>] rest_init+0x5d/0x60
 [<c05a47fa>] start_kernel+0x1fa/0x260
 [<c05a4190>] ? unknown_bootoption+0x0/0x130
 =======================
---[ end trace 14b601818e6903ac ]---
P: 5 L: 0 vs 0 S: 0 vs 1 w: 2044790889-2044796616 (0)
TCP wq(s)      <
TCP wq(h) +++h+<
l0 s1 f0 p5 seq: su2044790889 hs2044795029 sn2044796616
------------[ cut here ]------------
WARNING: at net/ipv4/tcp_ipv4.c:197 tcp_verify_wq+0x1b6/0x1c0()
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event
snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss eeprom e100 psmouse
snd_hda_intel snd_pcm snd_timer btusb bluetooth serio_raw snd 3c59x sg
evdev thermal soundcore rtc_cmos snd_page_alloc rtc_core rtc_lib
i2c_i801 processor button intel_agp dcdbas pcspkr agpgart
Pid: 0, comm: swapper Not tainted 2.6.24-rc8-mm1 #8
 [<c0132100>] ? have_callable_console+0x20/0x30
 [<c0131844>] warn_on_slowpath+0x54/0x80
 [<c0250030>] ? generic_make_request+0x1c0/0x2e0
 [<c0132128>] ? printk+0x18/0x20
 [<c03ffe54>] ? tcp_print_queue+0x1a4/0x230
 [<c0132438>] ? vprintk+0x308/0x320
 [<c0132438>] ? vprintk+0x308/0x320
 [<c03ffff6>] ? tcp_verify_wq+0x116/0x1c0
 [<c0400096>] tcp_verify_wq+0x1b6/0x1c0
 [<c03ffff6>] ? tcp_verify_wq+0x116/0x1c0
 [<c03f5540>] tcp_add_reno_sack+0x30/0x50
 [<c03f6d72>] tcp_fastretrans_alert+0x3d2/0x700
 [<c03f7e63>] tcp_ack+0x1b3/0x3a0
 [<c03fa21b>] tcp_rcv_established+0x3eb/0x710
 [<c0401c05>] tcp_v4_do_rcv+0xe5/0x100
 [<c04021fb>] tcp_v4_rcv+0x5db/0x660
 [<c0401fa7>] ? tcp_v4_rcv+0x387/0x660
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c03e5f44>] ip_local_deliver_finish+0x84/0x1d0
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c0156b97>] ? __lock_release+0x47/0x70
 [<c03e6147>] ip_local_deliver+0xb7/0xc0
 [<c03e6202>] ip_rcv_finish+0xb2/0x3c0
 [<c03c01d8>] ? sock_def_readable+0x48/0xa0
 [<c03be061>] ? sock_queue_rcv_skb+0xb1/0x1a0
 [<c03be0a7>] ? sock_queue_rcv_skb+0xf7/0x1a0
 [<c03e669f>] ip_rcv+0x18f/0x290
 [<c042fb10>] ? packet_rcv_spkt+0xd0/0x130
 [<c03c8da6>] netif_receive_skb+0x2b6/0x330
 [<c03c8c17>] ? netif_receive_skb+0x127/0x330
 [<c03c8ea3>] ? process_backlog+0x83/0x100
 [<c03c8eae>] process_backlog+0x8e/0x100
 [<c03c90bc>] net_rx_action+0x13c/0x230
 [<c03c8fd9>] ? net_rx_action+0x59/0x230
 [<c0136f3e>] ? __do_softirq+0x6e/0x120
 [<c0136f63>] __do_softirq+0x93/0x120
 [<c013706a>] do_softirq+0x7a/0x80
 [<c0137135>] irq_exit+0x65/0x90
 [<c01078b1>] do_IRQ+0x41/0x80
 [<c0155659>] ? trace_hardirqs_on+0xb9/0x130
 [<c01059ca>] common_interrupt+0x2e/0x34
 [<c0103390>] ? mwait_idle_with_hints+0x40/0x50
 [<c01033a0>] ? mwait_idle+0x0/0x20
 [<c01033b2>] mwait_idle+0x12/0x20
 [<c0103141>] cpu_idle+0x61/0x110
 [<c04339fd>] rest_init+0x5d/0x60
 [<c05a47fa>] start_kernel+0x1fa/0x260
 [<c05a4190>] ? unknown_bootoption+0x0/0x130
 =======================
---[ end trace 14b601818e6903ac ]---
P: 5 L: 0 vs 0 S: 0 vs 2 w: 2044790889-2044796616 (0)
TCP wq(s)      <
TCP wq(h) +++h+<
l0 s2 f0 p5 seq: su2044790889 hs2044795029 sn2044796616
------------[ cut here ]------------
WARNING: at net/ipv4/tcp_ipv4.c:197 tcp_verify_wq+0x1b6/0x1c0()
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event
snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss eeprom e100 psmouse
snd_hda_intel snd_pcm snd_timer btusb bluetooth serio_raw snd 3c59x sg
evdev thermal soundcore rtc_cmos snd_page_alloc rtc_core rtc_lib
i2c_i801 processor button intel_agp dcdbas pcspkr agpgart
Pid: 0, comm: swapper Not tainted 2.6.24-rc8-mm1 #8
 [<c0132100>] ? have_callable_console+0x20/0x30
 [<c0131844>] warn_on_slowpath+0x54/0x80
 [<c0250030>] ? generic_make_request+0x1c0/0x2e0
 [<c0132128>] ? printk+0x18/0x20
 [<c03ffe54>] ? tcp_print_queue+0x1a4/0x230
 [<c0132438>] ? vprintk+0x308/0x320
 [<c0132438>] ? vprintk+0x308/0x320
 [<c0132438>] ? vprintk+0x308/0x320
 [<c03ffff6>] ? tcp_verify_wq+0x116/0x1c0
 [<c0400096>] tcp_verify_wq+0x1b6/0x1c0
 [<c03ffff6>] ? tcp_verify_wq+0x116/0x1c0
 [<c03f674e>] tcp_try_to_open+0x2e/0x160
 [<c03f6e9e>] tcp_fastretrans_alert+0x4fe/0x700
 [<c03f7e63>] tcp_ack+0x1b3/0x3a0
 [<c03fa21b>] tcp_rcv_established+0x3eb/0x710
 [<c0401c05>] tcp_v4_do_rcv+0xe5/0x100
 [<c04021fb>] tcp_v4_rcv+0x5db/0x660
 [<c0401fa7>] ? tcp_v4_rcv+0x387/0x660
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c03e5f44>] ip_local_deliver_finish+0x84/0x1d0
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c0156b97>] ? __lock_release+0x47/0x70
 [<c03e6147>] ip_local_deliver+0xb7/0xc0
 [<c03e6202>] ip_rcv_finish+0xb2/0x3c0
 [<c03c01d8>] ? sock_def_readable+0x48/0xa0
 [<c03be061>] ? sock_queue_rcv_skb+0xb1/0x1a0
 [<c03be0a7>] ? sock_queue_rcv_skb+0xf7/0x1a0
 [<c03e669f>] ip_rcv+0x18f/0x290
 [<c042fb10>] ? packet_rcv_spkt+0xd0/0x130
 [<c03c8da6>] netif_receive_skb+0x2b6/0x330
 [<c03c8c17>] ? netif_receive_skb+0x127/0x330
 [<c03c8ea3>] ? process_backlog+0x83/0x100
 [<c03c8eae>] process_backlog+0x8e/0x100
 [<c03c90bc>] net_rx_action+0x13c/0x230
 [<c03c8fd9>] ? net_rx_action+0x59/0x230
 [<c0136f3e>] ? __do_softirq+0x6e/0x120
 [<c0136f63>] __do_softirq+0x93/0x120
 [<c013706a>] do_softirq+0x7a/0x80
 [<c0137135>] irq_exit+0x65/0x90
 [<c01078b1>] do_IRQ+0x41/0x80
 [<c0155659>] ? trace_hardirqs_on+0xb9/0x130
 [<c01059ca>] common_interrupt+0x2e/0x34
 [<c0103390>] ? mwait_idle_with_hints+0x40/0x50
 [<c01033a0>] ? mwait_idle+0x0/0x20
 [<c01033b2>] mwait_idle+0x12/0x20
 [<c0103141>] cpu_idle+0x61/0x110
 [<c04339fd>] rest_init+0x5d/0x60
 [<c05a47fa>] start_kernel+0x1fa/0x260
 [<c05a4190>] ? unknown_bootoption+0x0/0x130
 =======================
---[ end trace 14b601818e6903ac ]---
P: 5 L: 0 vs 0 S: 0 vs 2 w: 2044790889-2044796616 (0)
TCP wq(s)      <
TCP wq(h) +++h+<
l0 s2 f0 p5 seq: su2044790889 hs2044795029 sn2044796616
------------[ cut here ]------------
WARNING: at net/ipv4/tcp_ipv4.c:197 tcp_verify_wq+0x1b6/0x1c0()
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event
snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss eeprom e100 psmouse
snd_hda_intel snd_pcm snd_timer btusb bluetooth serio_raw snd 3c59x sg
evdev thermal soundcore rtc_cmos snd_page_alloc rtc_core rtc_lib
i2c_i801 processor button intel_agp dcdbas pcspkr agpgart
Pid: 0, comm: swapper Not tainted 2.6.24-rc8-mm1 #8
 [<c0132100>] ? have_callable_console+0x20/0x30
 [<c0131844>] warn_on_slowpath+0x54/0x80
 [<c0132438>] ? vprintk+0x308/0x320
 [<c0132438>] ? vprintk+0x308/0x320
 [<c0132438>] ? vprintk+0x308/0x320
 [<c0186af4>] ? check_bytes_and_report+0x24/0xc0
 [<c0132438>] ? vprintk+0x308/0x320
 [<c0186bf1>] ? check_pad_bytes+0x61/0x80
 [<c0186dbd>] ? check_object+0xad/0x1e0
 [<c0400096>] tcp_verify_wq+0x1b6/0x1c0
 [<c015561c>] ? trace_hardirqs_on+0x7c/0x130
 [<c03c1578>] ? kfree_skbmem+0x98/0xc0
 [<c03fcf03>] tcp_write_xmit+0x63/0x290
 [<c03c1578>] ? kfree_skbmem+0x98/0xc0
 [<c03fd147>] __tcp_push_pending_frames+0x17/0x80
 [<c03fa23e>] tcp_rcv_established+0x40e/0x710
 [<c0401c05>] tcp_v4_do_rcv+0xe5/0x100
 [<c04021fb>] tcp_v4_rcv+0x5db/0x660
 [<c0401fa7>] ? tcp_v4_rcv+0x387/0x660
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c03e5f44>] ip_local_deliver_finish+0x84/0x1d0
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c0156b97>] ? __lock_release+0x47/0x70
 [<c03e6147>] ip_local_deliver+0xb7/0xc0
 [<c03e6202>] ip_rcv_finish+0xb2/0x3c0
 [<c03c01d8>] ? sock_def_readable+0x48/0xa0
 [<c03be061>] ? sock_queue_rcv_skb+0xb1/0x1a0
 [<c03be0a7>] ? sock_queue_rcv_skb+0xf7/0x1a0
 [<c03e669f>] ip_rcv+0x18f/0x290
 [<c042fb10>] ? packet_rcv_spkt+0xd0/0x130
 [<c03c8da6>] netif_receive_skb+0x2b6/0x330
 [<c03c8c17>] ? netif_receive_skb+0x127/0x330
 [<c03c8ea3>] ? process_backlog+0x83/0x100
 [<c03c8eae>] process_backlog+0x8e/0x100
 [<c03c90bc>] net_rx_action+0x13c/0x230
 [<c03c8fd9>] ? net_rx_action+0x59/0x230
 [<c0136f3e>] ? __do_softirq+0x6e/0x120
 [<c0136f63>] __do_softirq+0x93/0x120
 [<c013706a>] do_softirq+0x7a/0x80
 [<c0137135>] irq_exit+0x65/0x90
 [<c01078b1>] do_IRQ+0x41/0x80
 [<c0155659>] ? trace_hardirqs_on+0xb9/0x130
 [<c01059ca>] common_interrupt+0x2e/0x34
 [<c0103390>] ? mwait_idle_with_hints+0x40/0x50
 [<c01033a0>] ? mwait_idle+0x0/0x20
 [<c01033b2>] mwait_idle+0x12/0x20
 [<c0103141>] cpu_idle+0x61/0x110
 [<c04339fd>] rest_init+0x5d/0x60
 [<c05a47fa>] start_kernel+0x1fa/0x260
 [<c05a4190>] ? unknown_bootoption+0x0/0x130
 =======================
---[ end trace 14b601818e6903ac ]---
P: 5 L: 0 vs 0 S: 0 vs 2 w: 2044790889-2044796616 (0)
TCP wq(s)      <
TCP wq(h) +++h+<
l0 s2 f0 p5 seq: su2044790889 hs2044795029 sn2044796616
------------[ cut here ]------------
WARNING: at net/ipv4/tcp_ipv4.c:197 tcp_verify_wq+0x1b6/0x1c0()
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event
snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss eeprom e100 psmouse
snd_hda_intel snd_pcm snd_timer btusb bluetooth serio_raw snd 3c59x sg
evdev thermal soundcore rtc_cmos snd_page_alloc rtc_core rtc_lib
i2c_i801 processor button intel_agp dcdbas pcspkr agpgart
Pid: 0, comm: swapper Not tainted 2.6.24-rc8-mm1 #8
 [<c0132100>] ? have_callable_console+0x20/0x30
 [<c0131844>] warn_on_slowpath+0x54/0x80
 [<c0132128>] ? printk+0x18/0x20
 [<c01317da>] ? print_oops_end_marker+0x2a/0x30
 [<c0131849>] ? warn_on_slowpath+0x59/0x80
 [<c025f9e4>] ? vsnprintf+0x2d4/0x4f0
 [<c0132128>] ? printk+0x18/0x20
 [<c03ffe54>] ? tcp_print_queue+0x1a4/0x230
 [<c0132438>] ? vprintk+0x308/0x320
 [<c0400096>] tcp_verify_wq+0x1b6/0x1c0
 [<c0186bf1>] ? check_pad_bytes+0x61/0x80
 [<c03f7509>] tcp_clean_rtx_queue+0x2d9/0x5b0
 [<c0154982>] ? validate_chain+0x1d2/0x320
 [<c03f7dd2>] tcp_ack+0x122/0x3a0
 [<c03fa21b>] tcp_rcv_established+0x3eb/0x710
 [<c0401c05>] tcp_v4_do_rcv+0xe5/0x100
 [<c04021fb>] tcp_v4_rcv+0x5db/0x660
 [<c0401fa7>] ? tcp_v4_rcv+0x387/0x660
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c03e5f44>] ip_local_deliver_finish+0x84/0x1d0
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c0156b97>] ? __lock_release+0x47/0x70
 [<c03e6147>] ip_local_deliver+0xb7/0xc0
 [<c03e6202>] ip_rcv_finish+0xb2/0x3c0
 [<c03c01d8>] ? sock_def_readable+0x48/0xa0
 [<c03be061>] ? sock_queue_rcv_skb+0xb1/0x1a0
 [<c03be0a7>] ? sock_queue_rcv_skb+0xf7/0x1a0
 [<c03e669f>] ip_rcv+0x18f/0x290
 [<c042fb10>] ? packet_rcv_spkt+0xd0/0x130
 [<c03c8da6>] netif_receive_skb+0x2b6/0x330
 [<c03c8c17>] ? netif_receive_skb+0x127/0x330
 [<c03c8ea3>] ? process_backlog+0x83/0x100
 [<c03c8eae>] process_backlog+0x8e/0x100
 [<c03c90bc>] net_rx_action+0x13c/0x230
 [<c03c8fd9>] ? net_rx_action+0x59/0x230
 [<c0136f63>] __do_softirq+0x93/0x120
 [<c013706a>] do_softirq+0x7a/0x80
 [<c0137135>] irq_exit+0x65/0x90
 [<c01078b1>] do_IRQ+0x41/0x80
 [<c0155659>] ? trace_hardirqs_on+0xb9/0x130
 [<c01059ca>] common_interrupt+0x2e/0x34
 [<c0103390>] ? mwait_idle_with_hints+0x40/0x50
 [<c01033a0>] ? mwait_idle+0x0/0x20
 [<c01033b2>] mwait_idle+0x12/0x20
 [<c0103141>] cpu_idle+0x61/0x110
 [<c04339fd>] rest_init+0x5d/0x60
 [<c05a47fa>] start_kernel+0x1fa/0x260
 [<c05a4190>] ? unknown_bootoption+0x0/0x130
 =======================
---[ end trace 14b601818e6903ac ]---
P: 5 L: 0 vs 0 S: 0 vs 2 w: 2044790889-2044796616 (0)
TCP wq(s)      <
TCP wq(h) +++h+<
l0 s2 f0 p5 seq: su2044790889 hs2044795029 sn2044796616
------------[ cut here ]------------
WARNING: at net/ipv4/tcp_ipv4.c:197 tcp_verify_wq+0x1b6/0x1c0()
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event
snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss eeprom e100 psmouse
snd_hda_intel snd_pcm snd_timer btusb bluetooth serio_raw snd 3c59x sg
evdev thermal soundcore rtc_cmos snd_page_alloc rtc_core rtc_lib
i2c_i801 processor button intel_agp dcdbas pcspkr agpgart
Pid: 0, comm: swapper Not tainted 2.6.24-rc8-mm1 #8
 [<c0132100>] ? have_callable_console+0x20/0x30
 [<c0131844>] warn_on_slowpath+0x54/0x80
 [<c0132438>] ? vprintk+0x308/0x320
 [<c025f9e4>] ? vsnprintf+0x2d4/0x4f0
 [<c03ffe54>] ? tcp_print_queue+0x1a4/0x230
 [<c0132438>] ? vprintk+0x308/0x320
 [<c03ffff6>] ? tcp_verify_wq+0x116/0x1c0
 [<c0400096>] tcp_verify_wq+0x1b6/0x1c0
 [<c03f7509>] ? tcp_clean_rtx_queue+0x2d9/0x5b0
 [<c0154982>] ? validate_chain+0x1d2/0x320
 [<c03f6a93>] tcp_fastretrans_alert+0xf3/0x700
 [<c03f7e63>] tcp_ack+0x1b3/0x3a0
 [<c03fa21b>] tcp_rcv_established+0x3eb/0x710
 [<c0401c05>] tcp_v4_do_rcv+0xe5/0x100
 [<c04021fb>] tcp_v4_rcv+0x5db/0x660
 [<c0401fa7>] ? tcp_v4_rcv+0x387/0x660
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c03e5f44>] ip_local_deliver_finish+0x84/0x1d0
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c0156b97>] ? __lock_release+0x47/0x70
 [<c03e6147>] ip_local_deliver+0xb7/0xc0
 [<c03e6202>] ip_rcv_finish+0xb2/0x3c0
 [<c03c01d8>] ? sock_def_readable+0x48/0xa0
 [<c03be061>] ? sock_queue_rcv_skb+0xb1/0x1a0
 [<c03be0a7>] ? sock_queue_rcv_skb+0xf7/0x1a0
 [<c03e669f>] ip_rcv+0x18f/0x290
 [<c042fb10>] ? packet_rcv_spkt+0xd0/0x130
 [<c03c8da6>] netif_receive_skb+0x2b6/0x330
 [<c03c8c17>] ? netif_receive_skb+0x127/0x330
 [<c03c8ea3>] ? process_backlog+0x83/0x100
 [<c03c8eae>] process_backlog+0x8e/0x100
 [<c03c90bc>] net_rx_action+0x13c/0x230
 [<c03c8fd9>] ? net_rx_action+0x59/0x230
 [<c0136f63>] __do_softirq+0x93/0x120
 [<c013706a>] do_softirq+0x7a/0x80
 [<c0137135>] irq_exit+0x65/0x90
 [<c01078b1>] do_IRQ+0x41/0x80
 [<c0155659>] ? trace_hardirqs_on+0xb9/0x130
 [<c01059ca>] common_interrupt+0x2e/0x34
 [<c0103390>] ? mwait_idle_with_hints+0x40/0x50
 [<c01033a0>] ? mwait_idle+0x0/0x20
 [<c01033b2>] mwait_idle+0x12/0x20
 [<c0103141>] cpu_idle+0x61/0x110
 [<c04339fd>] rest_init+0x5d/0x60
 [<c05a47fa>] start_kernel+0x1fa/0x260
 [<c05a4190>] ? unknown_bootoption+0x0/0x130
 =======================
---[ end trace 14b601818e6903ac ]---
P: 5 L: 0 vs 0 S: 0 vs 2 w: 2044790889-2044796616 (0)
TCP wq(s)      <
TCP wq(h) +++h+<
l0 s2 f0 p5 seq: su2044790889 hs2044795029 sn2044796616
------------[ cut here ]------------
WARNING: at net/ipv4/tcp_ipv4.c:197 tcp_verify_wq+0x1b6/0x1c0()
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event
snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss eeprom e100 psmouse
snd_hda_intel snd_pcm snd_timer btusb bluetooth serio_raw snd 3c59x sg
evdev thermal soundcore rtc_cmos snd_page_alloc rtc_core rtc_lib
i2c_i801 processor button intel_agp dcdbas pcspkr agpgart
Pid: 0, comm: swapper Not tainted 2.6.24-rc8-mm1 #8
 [<c0132100>] ? have_callable_console+0x20/0x30
 [<c0131844>] warn_on_slowpath+0x54/0x80
 [<c0250030>] ? generic_make_request+0x1c0/0x2e0
 [<c0132128>] ? printk+0x18/0x20
 [<c03ffe54>] ? tcp_print_queue+0x1a4/0x230
 [<c0132438>] ? vprintk+0x308/0x320
 [<c0132438>] ? vprintk+0x308/0x320
 [<c03ffff6>] ? tcp_verify_wq+0x116/0x1c0
 [<c0400096>] tcp_verify_wq+0x1b6/0x1c0
 [<c03ffff6>] ? tcp_verify_wq+0x116/0x1c0
 [<c03f5540>] tcp_add_reno_sack+0x30/0x50
 [<c03f6d72>] tcp_fastretrans_alert+0x3d2/0x700
 [<c03f7e63>] tcp_ack+0x1b3/0x3a0
 [<c03fa21b>] tcp_rcv_established+0x3eb/0x710
 [<c0401c05>] tcp_v4_do_rcv+0xe5/0x100
 [<c04021fb>] tcp_v4_rcv+0x5db/0x660
 [<c0401fa7>] ? tcp_v4_rcv+0x387/0x660
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c03e5f44>] ip_local_deliver_finish+0x84/0x1d0
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c0156b97>] ? __lock_release+0x47/0x70
 [<c03e6147>] ip_local_deliver+0xb7/0xc0
 [<c03e6202>] ip_rcv_finish+0xb2/0x3c0
 [<c03c01d8>] ? sock_def_readable+0x48/0xa0
 [<c03be061>] ? sock_queue_rcv_skb+0xb1/0x1a0
 [<c03be0a7>] ? sock_queue_rcv_skb+0xf7/0x1a0
 [<c03e669f>] ip_rcv+0x18f/0x290
 [<c042fb10>] ? packet_rcv_spkt+0xd0/0x130
 [<c03c8da6>] netif_receive_skb+0x2b6/0x330
 [<c03c8c17>] ? netif_receive_skb+0x127/0x330
 [<c03c8ea3>] ? process_backlog+0x83/0x100
 [<c03c8eae>] process_backlog+0x8e/0x100
 [<c03c90bc>] net_rx_action+0x13c/0x230
 [<c03c8fd9>] ? net_rx_action+0x59/0x230
 [<c0136f63>] __do_softirq+0x93/0x120
 [<c013706a>] do_softirq+0x7a/0x80
 [<c0137135>] irq_exit+0x65/0x90
 [<c01078b1>] do_IRQ+0x41/0x80
 [<c0155659>] ? trace_hardirqs_on+0xb9/0x130
 [<c01059ca>] common_interrupt+0x2e/0x34
 [<c0103390>] ? mwait_idle_with_hints+0x40/0x50
 [<c01033a0>] ? mwait_idle+0x0/0x20
 [<c01033b2>] mwait_idle+0x12/0x20
 [<c0103141>] cpu_idle+0x61/0x110
 [<c04339fd>] rest_init+0x5d/0x60
 [<c05a47fa>] start_kernel+0x1fa/0x260
 [<c05a4190>] ? unknown_bootoption+0x0/0x130
 =======================
---[ end trace 14b601818e6903ac ]---
P: 5 L: 0 vs 0 S: 0 vs 3 w: 2044790889-2044796616 (0)
TCP wq(s)      <
TCP wq(h) +++h+<
l0 s3 f0 p5 seq: su2044790889 hs2044795029 sn2044796616
------------[ cut here ]------------
WARNING: at net/ipv4/tcp_input.c:2169 tcp_mark_head_lost+0x122/0x150()
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event
snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss eeprom e100 psmouse
snd_hda_intel snd_pcm snd_timer btusb bluetooth serio_raw snd 3c59x sg
evdev thermal soundcore rtc_cmos snd_page_alloc rtc_core rtc_lib
i2c_i801 processor button intel_agp dcdbas pcspkr agpgart
Pid: 0, comm: swapper Not tainted 2.6.24-rc8-mm1 #8
 [<c0132100>] ? have_callable_console+0x20/0x30
 [<c0131844>] warn_on_slowpath+0x54/0x80
 [<c03ffe54>] ? tcp_print_queue+0x1a4/0x230
 [<c0132438>] ? vprintk+0x308/0x320
 [<c0132438>] ? vprintk+0x308/0x320
 [<c0132438>] ? vprintk+0x308/0x320
 [<c03ffff6>] ? tcp_verify_wq+0x116/0x1c0
 [<c03f6052>] tcp_mark_head_lost+0x122/0x150
 [<c03f60ca>] tcp_update_scoreboard+0x4a/0x190
 [<c03f6e7a>] tcp_fastretrans_alert+0x4da/0x700
 [<c03f7e63>] tcp_ack+0x1b3/0x3a0
 [<c03fa21b>] tcp_rcv_established+0x3eb/0x710
 [<c0401c05>] tcp_v4_do_rcv+0xe5/0x100
 [<c04021fb>] tcp_v4_rcv+0x5db/0x660
 [<c0401fa7>] ? tcp_v4_rcv+0x387/0x660
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c03e5f44>] ip_local_deliver_finish+0x84/0x1d0
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c0156b97>] ? __lock_release+0x47/0x70
 [<c03e6147>] ip_local_deliver+0xb7/0xc0
 [<c03e6202>] ip_rcv_finish+0xb2/0x3c0
 [<c03c01d8>] ? sock_def_readable+0x48/0xa0
 [<c03be061>] ? sock_queue_rcv_skb+0xb1/0x1a0
 [<c03be0a7>] ? sock_queue_rcv_skb+0xf7/0x1a0
 [<c03e669f>] ip_rcv+0x18f/0x290
 [<c042fb10>] ? packet_rcv_spkt+0xd0/0x130
 [<c03c8da6>] netif_receive_skb+0x2b6/0x330
 [<c03c8c17>] ? netif_receive_skb+0x127/0x330
 [<c03c8ea3>] ? process_backlog+0x83/0x100
 [<c03c8eae>] process_backlog+0x8e/0x100
 [<c03c90bc>] net_rx_action+0x13c/0x230
 [<c03c8fd9>] ? net_rx_action+0x59/0x230
 [<c0136f63>] __do_softirq+0x93/0x120
 [<c013706a>] do_softirq+0x7a/0x80
 [<c0137135>] irq_exit+0x65/0x90
 [<c01078b1>] do_IRQ+0x41/0x80
 [<c0155659>] ? trace_hardirqs_on+0xb9/0x130
 [<c01059ca>] common_interrupt+0x2e/0x34
 [<c0103390>] ? mwait_idle_with_hints+0x40/0x50
 [<c01033a0>] ? mwait_idle+0x0/0x20
 [<c01033b2>] mwait_idle+0x12/0x20
 [<c0103141>] cpu_idle+0x61/0x110
 [<c04339fd>] rest_init+0x5d/0x60
 [<c05a47fa>] start_kernel+0x1fa/0x260
 [<c05a4190>] ? unknown_bootoption+0x0/0x130
 =======================
---[ end trace 14b601818e6903ac ]---
------------[ cut here ]------------
WARNING: at net/ipv4/tcp_ipv4.c:197 tcp_verify_wq+0x1b6/0x1c0()
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event
snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss eeprom e100 psmouse
snd_hda_intel snd_pcm snd_timer btusb bluetooth serio_raw snd 3c59x sg
evdev thermal soundcore rtc_cmos snd_page_alloc rtc_core rtc_lib
i2c_i801 processor button intel_agp dcdbas pcspkr agpgart
Pid: 0, comm: swapper Not tainted 2.6.24-rc8-mm1 #8
 [<c0132100>] ? have_callable_console+0x20/0x30
 [<c0131844>] warn_on_slowpath+0x54/0x80
 [<c01317da>] ? print_oops_end_marker+0x2a/0x30
 [<c0131849>] ? warn_on_slowpath+0x59/0x80
 [<c03ffe54>] ? tcp_print_queue+0x1a4/0x230
 [<c0132438>] ? vprintk+0x308/0x320
 [<c0132438>] ? vprintk+0x308/0x320
 [<c0400096>] tcp_verify_wq+0x1b6/0x1c0
 [<c03ffff6>] ? tcp_verify_wq+0x116/0x1c0
 [<c03f5ffc>] tcp_mark_head_lost+0xcc/0x150
 [<c03f60ca>] tcp_update_scoreboard+0x4a/0x190
 [<c03f6e7a>] tcp_fastretrans_alert+0x4da/0x700
 [<c03f7e63>] tcp_ack+0x1b3/0x3a0
 [<c03fa21b>] tcp_rcv_established+0x3eb/0x710
 [<c0401c05>] tcp_v4_do_rcv+0xe5/0x100
 [<c04021fb>] tcp_v4_rcv+0x5db/0x660
 [<c0401fa7>] ? tcp_v4_rcv+0x387/0x660
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c03e5f44>] ip_local_deliver_finish+0x84/0x1d0
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c0156b97>] ? __lock_release+0x47/0x70
 [<c03e6147>] ip_local_deliver+0xb7/0xc0
 [<c03e6202>] ip_rcv_finish+0xb2/0x3c0
 [<c03c01d8>] ? sock_def_readable+0x48/0xa0
 [<c03be061>] ? sock_queue_rcv_skb+0xb1/0x1a0
 [<c03be0a7>] ? sock_queue_rcv_skb+0xf7/0x1a0
 [<c03e669f>] ip_rcv+0x18f/0x290
 [<c042fb10>] ? packet_rcv_spkt+0xd0/0x130
 [<c03c8da6>] netif_receive_skb+0x2b6/0x330
 [<c03c8c17>] ? netif_receive_skb+0x127/0x330
 [<c03c8ea3>] ? process_backlog+0x83/0x100
 [<c03c8eae>] process_backlog+0x8e/0x100
 [<c03c90bc>] net_rx_action+0x13c/0x230
 [<c03c8fd9>] ? net_rx_action+0x59/0x230
 [<c0136f63>] __do_softirq+0x93/0x120
 [<c013706a>] do_softirq+0x7a/0x80
 [<c0137135>] irq_exit+0x65/0x90
 [<c01078b1>] do_IRQ+0x41/0x80
 [<c0155659>] ? trace_hardirqs_on+0xb9/0x130
 [<c01059ca>] common_interrupt+0x2e/0x34
 [<c0103390>] ? mwait_idle_with_hints+0x40/0x50
 [<c01033a0>] ? mwait_idle+0x0/0x20
 [<c01033b2>] mwait_idle+0x12/0x20
 [<c0103141>] cpu_idle+0x61/0x110
 [<c04339fd>] rest_init+0x5d/0x60
 [<c05a47fa>] start_kernel+0x1fa/0x260
 [<c05a4190>] ? unknown_bootoption+0x0/0x130
 =======================
---[ end trace 14b601818e6903ac ]---
P: 5 L: 5 vs 5 S: 0 vs 3 w: 2044790889-2044796616 (0)
TCP wq(s) LLLLl<
TCP wq(h) +++h+<
l5 s3 f0 p5 seq: su2044790889 hs2044795029 sn2044796616
------------[ cut here ]------------
WARNING: at net/ipv4/tcp_output.c:1977 tcp_xmit_retransmit_queue+0x388/0x420()
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event
snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss eeprom e100 psmouse
snd_hda_intel snd_pcm snd_timer btusb bluetooth serio_raw snd 3c59x sg
evdev thermal soundcore rtc_cmos snd_page_alloc rtc_core rtc_lib
i2c_i801 processor button intel_agp dcdbas pcspkr agpgart
Pid: 0, comm: swapper Not tainted 2.6.24-rc8-mm1 #8
 [<c0132100>] ? have_callable_console+0x20/0x30
 [<c0131844>] warn_on_slowpath+0x54/0x80
 [<c0132438>] ? vprintk+0x308/0x320
 [<c03ffff6>] ? tcp_verify_wq+0x116/0x1c0
 [<c03f5ffc>] ? tcp_mark_head_lost+0xcc/0x150
 [<c03fdf38>] tcp_xmit_retransmit_queue+0x388/0x420
 [<c03f6c27>] tcp_fastretrans_alert+0x287/0x700
 [<c03f7e63>] tcp_ack+0x1b3/0x3a0
 [<c03fa21b>] tcp_rcv_established+0x3eb/0x710
 [<c0401c05>] tcp_v4_do_rcv+0xe5/0x100
 [<c04021fb>] tcp_v4_rcv+0x5db/0x660
 [<c0401fa7>] ? tcp_v4_rcv+0x387/0x660
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c03e5f44>] ip_local_deliver_finish+0x84/0x1d0
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c0156b97>] ? __lock_release+0x47/0x70
 [<c03e6147>] ip_local_deliver+0xb7/0xc0
 [<c03e6202>] ip_rcv_finish+0xb2/0x3c0
 [<c03c01d8>] ? sock_def_readable+0x48/0xa0
 [<c03be061>] ? sock_queue_rcv_skb+0xb1/0x1a0
 [<c03be0a7>] ? sock_queue_rcv_skb+0xf7/0x1a0
 [<c03e669f>] ip_rcv+0x18f/0x290
 [<c042fb10>] ? packet_rcv_spkt+0xd0/0x130
 [<c03c8da6>] netif_receive_skb+0x2b6/0x330
 [<c03c8c17>] ? netif_receive_skb+0x127/0x330
 [<c03c8ea3>] ? process_backlog+0x83/0x100
 [<c03c8eae>] process_backlog+0x8e/0x100
 [<c03c90bc>] net_rx_action+0x13c/0x230
 [<c03c8fd9>] ? net_rx_action+0x59/0x230
 [<c0136f63>] __do_softirq+0x93/0x120
 [<c013706a>] do_softirq+0x7a/0x80
 [<c0137135>] irq_exit+0x65/0x90
 [<c01078b1>] do_IRQ+0x41/0x80
 [<c0155659>] ? trace_hardirqs_on+0xb9/0x130
 [<c01059ca>] common_interrupt+0x2e/0x34
 [<c0103390>] ? mwait_idle_with_hints+0x40/0x50
 [<c01033a0>] ? mwait_idle+0x0/0x20
 [<c01033b2>] mwait_idle+0x12/0x20
 [<c0103141>] cpu_idle+0x61/0x110
 [<c04339fd>] rest_init+0x5d/0x60
 [<c05a47fa>] start_kernel+0x1fa/0x260
 [<c05a4190>] ? unknown_bootoption+0x0/0x130
 =======================
---[ end trace 14b601818e6903ac ]---
------------[ cut here ]------------
WARNING: at net/ipv4/tcp_ipv4.c:197 tcp_verify_wq+0x1b6/0x1c0()
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event
snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss eeprom e100 psmouse
snd_hda_intel snd_pcm snd_timer btusb bluetooth serio_raw snd 3c59x sg
evdev thermal soundcore rtc_cmos snd_page_alloc rtc_core rtc_lib
i2c_i801 processor button intel_agp dcdbas pcspkr agpgart
Pid: 0, comm: swapper Not tainted 2.6.24-rc8-mm1 #8
 [<c0132100>] ? have_callable_console+0x20/0x30
 [<c0131844>] warn_on_slowpath+0x54/0x80
 [<c01317da>] ? print_oops_end_marker+0x2a/0x30
 [<c0131849>] ? warn_on_slowpath+0x59/0x80
 [<c0132438>] ? vprintk+0x308/0x320
 [<c03ffff6>] ? tcp_verify_wq+0x116/0x1c0
 [<c0400096>] tcp_verify_wq+0x1b6/0x1c0
 [<c03f5ffc>] ? tcp_mark_head_lost+0xcc/0x150
 [<c03fdea4>] tcp_xmit_retransmit_queue+0x2f4/0x420
 [<c03f6c27>] tcp_fastretrans_alert+0x287/0x700
 [<c03f7e63>] tcp_ack+0x1b3/0x3a0
 [<c03fa21b>] tcp_rcv_established+0x3eb/0x710
 [<c0401c05>] tcp_v4_do_rcv+0xe5/0x100
 [<c04021fb>] tcp_v4_rcv+0x5db/0x660
 [<c0401fa7>] ? tcp_v4_rcv+0x387/0x660
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c03e5f44>] ip_local_deliver_finish+0x84/0x1d0
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c0156b97>] ? __lock_release+0x47/0x70
 [<c03e6147>] ip_local_deliver+0xb7/0xc0
 [<c03e6202>] ip_rcv_finish+0xb2/0x3c0
 [<c03c01d8>] ? sock_def_readable+0x48/0xa0
 [<c03be061>] ? sock_queue_rcv_skb+0xb1/0x1a0
 [<c03be0a7>] ? sock_queue_rcv_skb+0xf7/0x1a0
 [<c03e669f>] ip_rcv+0x18f/0x290
 [<c042fb10>] ? packet_rcv_spkt+0xd0/0x130
 [<c03c8da6>] netif_receive_skb+0x2b6/0x330
 [<c03c8c17>] ? netif_receive_skb+0x127/0x330
 [<c03c8ea3>] ? process_backlog+0x83/0x100
 [<c03c8eae>] process_backlog+0x8e/0x100
 [<c03c90bc>] net_rx_action+0x13c/0x230
 [<c03c8fd9>] ? net_rx_action+0x59/0x230
 [<c0136f63>] __do_softirq+0x93/0x120
 [<c013706a>] do_softirq+0x7a/0x80
 [<c0137135>] irq_exit+0x65/0x90
 [<c01078b1>] do_IRQ+0x41/0x80
 [<c0155659>] ? trace_hardirqs_on+0xb9/0x130
 [<c01059ca>] common_interrupt+0x2e/0x34
 [<c0103390>] ? mwait_idle_with_hints+0x40/0x50
 [<c01033a0>] ? mwait_idle+0x0/0x20
 [<c01033b2>] mwait_idle+0x12/0x20
 [<c0103141>] cpu_idle+0x61/0x110
 [<c04339fd>] rest_init+0x5d/0x60
 [<c05a47fa>] start_kernel+0x1fa/0x260
 [<c05a4190>] ? unknown_bootoption+0x0/0x130
 =======================
---[ end trace 14b601818e6903ac ]---
P: 5 L: 5 vs 5 S: 0 vs 3 w: 2044790889-2044796616 (0)
TCP wq(s) LLLLl<
TCP wq(h) +++h+<
l5 s3 f0 p5 seq: su2044790889 hs2044795029 sn2044796616
------------[ cut here ]------------
WARNING: at net/ipv4/tcp_output.c:1467 tcp_write_xmit+0x288/0x290()
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event
snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss eeprom e100 psmouse
snd_hda_intel snd_pcm snd_timer btusb bluetooth serio_raw snd 3c59x sg
evdev thermal soundcore rtc_cmos snd_page_alloc rtc_core rtc_lib
i2c_i801 processor button intel_agp dcdbas pcspkr agpgart
Pid: 0, comm: swapper Not tainted 2.6.24-rc8-mm1 #8
 [<c0132100>] ? have_callable_console+0x20/0x30
 [<c0131844>] warn_on_slowpath+0x54/0x80
 [<c0186af4>] ? check_bytes_and_report+0x24/0xc0
 [<c03ffff6>] ? tcp_verify_wq+0x116/0x1c0
 [<c0186bf1>] ? check_pad_bytes+0x61/0x80
 [<c0186dbd>] ? check_object+0xad/0x1e0
 [<c0155539>] ? mark_held_locks+0x39/0x80
 [<c01880ac>] ? __slab_free+0xac/0x150
 [<c015561c>] ? trace_hardirqs_on+0x7c/0x130
 [<c03c1578>] ? kfree_skbmem+0x98/0xc0
 [<c03fd128>] tcp_write_xmit+0x288/0x290
 [<c03c1578>] ? kfree_skbmem+0x98/0xc0
 [<c03fd147>] __tcp_push_pending_frames+0x17/0x80
 [<c03fa23e>] tcp_rcv_established+0x40e/0x710
 [<c0401c05>] tcp_v4_do_rcv+0xe5/0x100
 [<c04021fb>] tcp_v4_rcv+0x5db/0x660
 [<c0401fa7>] ? tcp_v4_rcv+0x387/0x660
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c03e5f44>] ip_local_deliver_finish+0x84/0x1d0
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c0156b97>] ? __lock_release+0x47/0x70
 [<c03e6147>] ip_local_deliver+0xb7/0xc0
 [<c03e6202>] ip_rcv_finish+0xb2/0x3c0
 [<c03c01d8>] ? sock_def_readable+0x48/0xa0
 [<c03be061>] ? sock_queue_rcv_skb+0xb1/0x1a0
 [<c03be0a7>] ? sock_queue_rcv_skb+0xf7/0x1a0
 [<c03e669f>] ip_rcv+0x18f/0x290
 [<c042fb10>] ? packet_rcv_spkt+0xd0/0x130
 [<c03c8da6>] netif_receive_skb+0x2b6/0x330
 [<c03c8c17>] ? netif_receive_skb+0x127/0x330
 [<c03c8ea3>] ? process_backlog+0x83/0x100
 [<c03c8eae>] process_backlog+0x8e/0x100
 [<c03c90bc>] net_rx_action+0x13c/0x230
 [<c03c8fd9>] ? net_rx_action+0x59/0x230
 [<c0136f63>] __do_softirq+0x93/0x120
 [<c013706a>] do_softirq+0x7a/0x80
 [<c0137135>] irq_exit+0x65/0x90
 [<c01078b1>] do_IRQ+0x41/0x80
 [<c0155659>] ? trace_hardirqs_on+0xb9/0x130
 [<c01059ca>] common_interrupt+0x2e/0x34
 [<c0103390>] ? mwait_idle_with_hints+0x40/0x50
 [<c01033a0>] ? mwait_idle+0x0/0x20
 [<c01033b2>] mwait_idle+0x12/0x20
 [<c0103141>] cpu_idle+0x61/0x110
 [<c04339fd>] rest_init+0x5d/0x60
 [<c05a47fa>] start_kernel+0x1fa/0x260
 [<c05a4190>] ? unknown_bootoption+0x0/0x130
 =======================
---[ end trace 14b601818e6903ac ]---
------------[ cut here ]------------
WARNING: at net/ipv4/tcp_ipv4.c:197 tcp_verify_wq+0x1b6/0x1c0()
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event
snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss eeprom e100 psmouse
snd_hda_intel snd_pcm snd_timer btusb bluetooth serio_raw snd 3c59x sg
evdev thermal soundcore rtc_cmos snd_page_alloc rtc_core rtc_lib
i2c_i801 processor button intel_agp dcdbas pcspkr agpgart
Pid: 0, comm: swapper Not tainted 2.6.24-rc8-mm1 #8
 [<c0132100>] ? have_callable_console+0x20/0x30
 [<c0131844>] warn_on_slowpath+0x54/0x80
 [<c01317da>] ? print_oops_end_marker+0x2a/0x30
 [<c0131849>] ? warn_on_slowpath+0x59/0x80
 [<c0186af4>] ? check_bytes_and_report+0x24/0xc0
 [<c03ffff6>] ? tcp_verify_wq+0x116/0x1c0
 [<c0186bf1>] ? check_pad_bytes+0x61/0x80
 [<c0186dbd>] ? check_object+0xad/0x1e0
 [<c0400096>] tcp_verify_wq+0x1b6/0x1c0
 [<c015561c>] ? trace_hardirqs_on+0x7c/0x130
 [<c03c1578>] ? kfree_skbmem+0x98/0xc0
 [<c03fcf03>] tcp_write_xmit+0x63/0x290
 [<c03c1578>] ? kfree_skbmem+0x98/0xc0
 [<c03fd147>] __tcp_push_pending_frames+0x17/0x80
 [<c03fa23e>] tcp_rcv_established+0x40e/0x710
 [<c0401c05>] tcp_v4_do_rcv+0xe5/0x100
 [<c04021fb>] tcp_v4_rcv+0x5db/0x660
 [<c0401fa7>] ? tcp_v4_rcv+0x387/0x660
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c03e5f44>] ip_local_deliver_finish+0x84/0x1d0
 [<c03e5eed>] ? ip_local_deliver_finish+0x2d/0x1d0
 [<c0156b97>] ? __lock_release+0x47/0x70
 [<c03e6147>] ip_local_deliver+0xb7/0xc0
 [<c03e6202>] ip_rcv_finish+0xb2/0x3c0
 [<c03c01d8>] ? sock_def_readable+0x48/0xa0
 [<c03be061>] ? sock_queue_rcv_skb+0xb1/0x1a0
 [<c03be0a7>] ? sock_queue_rcv_skb+0xf7/0x1a0
 [<c03e669f>] ip_rcv+0x18f/0x290
 [<c042fb10>] ? packet_rcv_spkt+0xd0/0x130
 [<c03c8da6>] netif_receive_skb+0x2b6/0x330
 [<c03c8c17>] ? netif_receive_skb+0x127/0x330
 [<c03c8ea3>] ? process_backlog+0x83/0x100
 [<c03c8eae>] process_backlog+0x8e/0x100
 [<c03c90bc>] net_rx_action+0x13c/0x230
 [<c03c8fd9>] ? net_rx_action+0x59/0x230
 [<c0136f63>] __do_softirq+0x93/0x120
 [<c013706a>] do_softirq+0x7a/0x80
 [<c0137135>] irq_exit+0x65/0x90
 [<c01078b1>] do_IRQ+0x41/0x80
 [<c0155659>] ? trace_hardirqs_on+0xb9/0x130
 [<c01059ca>] common_interrupt+0x2e/0x34
 [<c0103390>] ? mwait_idle_with_hints+0x40/0x50
 [<c01033a0>] ? mwait_idle+0x0/0x20
 [<c01033b2>] mwait_idle+0x12/0x20
 [<c0103141>] cpu_idle+0x61/0x110
 [<c04339fd>] rest_init+0x5d/0x60
 [<c05a47fa>] start_kernel+0x1fa/0x260
 [<c05a4190>] ? unknown_bootoption+0x0/0x130
 =======================
---[ end trace 14b601818e6903ac ]---
P: 5 L: 5 vs 5 S: 0 vs 3 w: 2044790889-2044796616 (0)
TCP wq(s) LLLLl<
TCP wq(h) +++h+<
l5 s3 f0 p5 seq: su2044790889 hs2044795029 sn2044796616
------------[ cut here ]------------
WARNING: at net/ipv4/tcp_input.c:1767 tcp_enter_frto+0x28c/0x2a0()
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event
snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss eeprom e100 psmouse
snd_hda_intel snd_pcm snd_timer btusb bluetooth serio_raw snd 3c59x sg
evdev thermal soundcore rtc_cmos snd_page_alloc rtc_core rtc_lib
i2c_i801 processor button intel_agp dcdbas pcspkr agpgart
Pid: 0, comm: swapper Not tainted 2.6.24-rc8-mm1 #8
 [<c0132100>] ? have_callable_console+0x20/0x30
 [<c0131844>] warn_on_slowpath+0x54/0x80
 [<c0154982>] ? validate_chain+0x1d2/0x320
 [<c0154982>] ? validate_chain+0x1d2/0x320
 [<c0156244>] ? __lock_acquire+0x1e4/0x730
 [<c010af95>] ? native_sched_clock+0x85/0xe0
 [<c03f58dc>] tcp_enter_frto+0x28c/0x2a0
 [<c03ff612>] tcp_retransmit_timer+0x102/0x400
 [<c043675b>] ? _spin_lock+0x4b/0x80
 [<c03ff924>] ? tcp_write_timer+0x14/0x110
 [<c03ffa03>] tcp_write_timer+0xf3/0x110
 [<c013b95b>] run_timer_softirq+0xbb/0x190
 [<c03ff910>] ? tcp_write_timer+0x0/0x110
 [<c0136f63>] __do_softirq+0x93/0x120
 [<c013706a>] do_softirq+0x7a/0x80
 [<c0137135>] irq_exit+0x65/0x90
 [<c011a91d>] smp_apic_timer_interrupt+0x2d/0x40
 [<c0105aab>] apic_timer_interrupt+0x33/0x38
 [<c0103390>] ? mwait_idle_with_hints+0x40/0x50
 [<c01033a0>] ? mwait_idle+0x0/0x20
 [<c01033b2>] mwait_idle+0x12/0x20
 [<c0103141>] cpu_idle+0x61/0x110
 [<c04339fd>] rest_init+0x5d/0x60
 [<c05a47fa>] start_kernel+0x1fa/0x260
 [<c05a4190>] ? unknown_bootoption+0x0/0x130
 =======================
---[ end trace 14b601818e6903ac ]---
------------[ cut here ]------------
WARNING: at net/ipv4/tcp_ipv4.c:197 tcp_verify_wq+0x1b6/0x1c0()
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event
snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss eeprom e100 psmouse
snd_hda_intel snd_pcm snd_timer btusb bluetooth serio_raw snd 3c59x sg
evdev thermal soundcore rtc_cmos snd_page_alloc rtc_core rtc_lib
i2c_i801 processor button intel_agp dcdbas pcspkr agpgart
Pid: 0, comm: swapper Not tainted 2.6.24-rc8-mm1 #8
 [<c0132100>] ? have_callable_console+0x20/0x30
 [<c0131844>] warn_on_slowpath+0x54/0x80
 [<c01317da>] ? print_oops_end_marker+0x2a/0x30
 [<c0131849>] ? warn_on_slowpath+0x59/0x80
 [<c0154982>] ? validate_chain+0x1d2/0x320
 [<c0154982>] ? validate_chain+0x1d2/0x320
 [<c0400096>] tcp_verify_wq+0x1b6/0x1c0
 [<c010af95>] ? native_sched_clock+0x85/0xe0
 [<c03f5748>] tcp_enter_frto+0xf8/0x2a0
 [<c03ff612>] tcp_retransmit_timer+0x102/0x400
 [<c043675b>] ? _spin_lock+0x4b/0x80
 [<c03ff924>] ? tcp_write_timer+0x14/0x110
 [<c03ffa03>] tcp_write_timer+0xf3/0x110
 [<c013b95b>] run_timer_softirq+0xbb/0x190
 [<c03ff910>] ? tcp_write_timer+0x0/0x110
 [<c0136f63>] __do_softirq+0x93/0x120
 [<c013706a>] do_softirq+0x7a/0x80
 [<c0137135>] irq_exit+0x65/0x90
 [<c011a91d>] smp_apic_timer_interrupt+0x2d/0x40
 [<c0105aab>] apic_timer_interrupt+0x33/0x38
 [<c0103390>] ? mwait_idle_with_hints+0x40/0x50
 [<c01033a0>] ? mwait_idle+0x0/0x20
 [<c01033b2>] mwait_idle+0x12/0x20
 [<c0103141>] cpu_idle+0x61/0x110
 [<c04339fd>] rest_init+0x5d/0x60
 [<c05a47fa>] start_kernel+0x1fa/0x260
 [<c05a4190>] ? unknown_bootoption+0x0/0x130
 =======================
---[ end trace 14b601818e6903ac ]---
P: 5 L: 5 vs 5 S: 0 vs 3 w: 2044790889-2044796616 (0)
TCP wq(s) LLLLl<
TCP wq(h) +++h+<
l5 s3 f0 p5 seq: su2044790889 hs2044795029 sn2044796616
------------[ cut here ]------------
WARNING: at net/ipv4/tcp_output.c:1467 tcp_write_xmit+0x288/0x290()
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event
snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss eeprom e100 psmouse
snd_hda_intel snd_pcm snd_timer btusb bluetooth serio_raw snd 3c59x sg
evdev thermal soundcore rtc_cmos snd_page_alloc rtc_core rtc_lib
i2c_i801 processor button intel_agp dcdbas pcspkr agpgart
Pid: 2987, comm: ssmtp Not tainted 2.6.24-rc8-mm1 #8
 [<c0132100>] ? have_callable_console+0x20/0x30
 [<c0131844>] warn_on_slowpath+0x54/0x80
 [<c0154982>] ? validate_chain+0x1d2/0x320
 [<c0154982>] ? validate_chain+0x1d2/0x320
 [<c0156244>] ? __lock_acquire+0x1e4/0x730
 [<c0155567>] ? mark_held_locks+0x67/0x80
 [<c03fd128>] tcp_write_xmit+0x288/0x290
 [<c03fd147>] __tcp_push_pending_frames+0x17/0x80
 [<c03f1130>] tcp_sendmsg+0x760/0xb40
 [<c01532c0>] ? lock_release_holdtime+0x60/0x80
 [<c03bb85c>] sock_sendmsg+0xdc/0x110
 [<c0154982>] ? validate_chain+0x1d2/0x320
 [<c0154982>] ? validate_chain+0x1d2/0x320
 [<c0147420>] ? autoremove_wake_function+0x0/0x50
 [<c0156244>] ? __lock_acquire+0x1e4/0x730
 [<c010af95>] ? native_sched_clock+0x85/0xe0
 [<c03bb5ff>] ? sockfd_lookup_light+0x2f/0x70
 [<c03bcfe1>] sys_sendto+0xd1/0x120
 [<c010af95>] ? native_sched_clock+0x85/0xe0
 [<c015323d>] ? put_lock_stats+0xd/0x30
 [<c01532c0>] ? lock_release_holdtime+0x60/0x80
 [<c01413f1>] ? sys_times+0x81/0xe0
 [<c03bd062>] sys_send+0x32/0x40
 [<c03bd8e6>] sys_socketcall+0x136/0x230
 [<c010501b>] ? restore_nocheck+0x12/0x15
 [<c0104fba>] syscall_call+0x7/0xb
 =======================
---[ end trace 14b601818e6903ac ]---
------------[ cut here ]------------
WARNING: at net/ipv4/tcp_ipv4.c:197 tcp_verify_wq+0x1b6/0x1c0()
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event
snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss eeprom e100 psmouse
snd_hda_intel snd_pcm snd_timer btusb bluetooth serio_raw snd 3c59x sg
evdev thermal soundcore rtc_cmos snd_page_alloc rtc_core rtc_lib
i2c_i801 processor button intel_agp dcdbas pcspkr agpgart
Pid: 2987, comm: ssmtp Not tainted 2.6.24-rc8-mm1 #8
 [<c0132100>] ? have_callable_console+0x20/0x30
 [<c0131844>] warn_on_slowpath+0x54/0x80
 [<c01317da>] ? print_oops_end_marker+0x2a/0x30
 [<c0131849>] ? warn_on_slowpath+0x59/0x80
 [<c0154982>] ? validate_chain+0x1d2/0x320
 [<c0154982>] ? validate_chain+0x1d2/0x320
 [<c0156244>] ? __lock_acquire+0x1e4/0x730
 [<c0400096>] tcp_verify_wq+0x1b6/0x1c0
 [<c03fcf03>] tcp_write_xmit+0x63/0x290
 [<c03fd147>] __tcp_push_pending_frames+0x17/0x80
 [<c03f1130>] tcp_sendmsg+0x760/0xb40
 [<c01532c0>] ? lock_release_holdtime+0x60/0x80
 [<c03bb85c>] sock_sendmsg+0xdc/0x110
 [<c0154982>] ? validate_chain+0x1d2/0x320
 [<c0154982>] ? validate_chain+0x1d2/0x320
 [<c0147420>] ? autoremove_wake_function+0x0/0x50
 [<c0156244>] ? __lock_acquire+0x1e4/0x730
 [<c010af95>] ? native_sched_clock+0x85/0xe0
 [<c03bb5ff>] ? sockfd_lookup_light+0x2f/0x70
 [<c03bcfe1>] sys_sendto+0xd1/0x120
 [<c010af95>] ? native_sched_clock+0x85/0xe0
 [<c015323d>] ? put_lock_stats+0xd/0x30
 [<c01532c0>] ? lock_release_holdtime+0x60/0x80
 [<c01413f1>] ? sys_times+0x81/0xe0
 [<c03bd062>] sys_send+0x32/0x40
 [<c03bd8e6>] sys_socketcall+0x136/0x230
 [<c010501b>] ? restore_nocheck+0x12/0x15
 [<c0104fba>] syscall_call+0x7/0xb
 =======================
---[ end trace 14b601818e6903ac ]---
P: 5 L: 5 vs 5 S: 0 vs 3 w: 2044790889-2044796616 (0)
TCP wq(s) LLLLl<
TCP wq(h) +++h+<
l5 s3 f0 p5 seq: su2044790889 hs2044795029 sn2044796616
------------[ cut here ]------------
WARNING: at net/ipv4/tcp_input.c:2855 tcp_clean_rtx_queue+0x552/0x5b0()
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event
snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss eeprom e100 psmouse
snd_hda_intel snd_pcm snd_timer btusb bluetooth serio_raw snd 3c59x sg
evdev thermal soundcore rtc_cmos snd_page_alloc rtc_core rtc_lib
i2c_i801 processor button intel_agp dcdbas pcspkr agpgart
Pid: 2987, comm: ssmtp Not tainted 2.6.24-rc8-mm1 #8
 [<c0132100>] ? have_callable_console+0x20/0x30
 [<c0131844>] warn_on_slowpath+0x54/0x80
 [<c0186dbd>] ? check_object+0xad/0x1e0
 [<c0155539>] ? mark_held_locks+0x39/0x80
 [<c01880ac>] ? __slab_free+0xac/0x150
 [<c015561c>] ? trace_hardirqs_on+0x7c/0x130
 [<c03c1534>] ? kfree_skbmem+0x54/0xc0
 [<c01881e7>] ? kmem_cache_free+0x97/0xe0
 [<c03c1534>] ? kfree_skbmem+0x54/0xc0
 [<c03c1534>] ? kfree_skbmem+0x54/0xc0
 [<c03c1534>] ? kfree_skbmem+0x54/0xc0
 [<c03f7782>] tcp_clean_rtx_queue+0x552/0x5b0
 [<c03f7dd2>] tcp_ack+0x122/0x3a0
 [<c03fa21b>] tcp_rcv_established+0x3eb/0x710
 [<c0147420>] ? autoremove_wake_function+0x0/0x50
 [<c0401c05>] tcp_v4_do_rcv+0xe5/0x100
 [<c03f17e3>] tcp_prequeue_process+0x73/0xa0
 [<c03f1dae>] tcp_recvmsg+0x42e/0x830
 [<c03c0873>] sock_common_recvmsg+0x43/0x60
 [<c03bbacf>] sock_recvmsg+0xef/0x120
 [<c0154982>] ? validate_chain+0x1d2/0x320
 [<c0154982>] ? validate_chain+0x1d2/0x320
 [<c0147420>] ? autoremove_wake_function+0x0/0x50
 [<c03bb5ff>] ? sockfd_lookup_light+0x2f/0x70
 [<c03bd0f7>] sys_recvfrom+0x87/0xf0
 [<c015323d>] ? put_lock_stats+0xd/0x30
 [<c01532c0>] ? lock_release_holdtime+0x60/0x80
 [<c010af95>] ? native_sched_clock+0x85/0xe0
 [<c015323d>] ? put_lock_stats+0xd/0x30
 [<c01532c0>] ? lock_release_holdtime+0x60/0x80
 [<c013601f>] ? do_setitimer+0x1ef/0x2e0
 [<c0156b97>] ? __lock_release+0x47/0x70
 [<c03bd192>] sys_recv+0x32/0x40
 [<c03bd905>] sys_socketcall+0x155/0x230
 [<c010501b>] ? restore_nocheck+0x12/0x15
 [<c0104fba>] syscall_call+0x7/0xb
 =======================
---[ end trace 14b601818e6903ac ]---
------------[ cut here ]------------
WARNING: at net/ipv4/tcp_ipv4.c:197 tcp_verify_wq+0x1b6/0x1c0()
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event
snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss eeprom e100 psmouse
snd_hda_intel snd_pcm snd_timer btusb bluetooth serio_raw snd 3c59x sg
evdev thermal soundcore rtc_cmos snd_page_alloc rtc_core rtc_lib
i2c_i801 processor button intel_agp dcdbas pcspkr agpgart
Pid: 2987, comm: ssmtp Not tainted 2.6.24-rc8-mm1 #8
 [<c0132100>] ? have_callable_console+0x20/0x30
 [<c0131844>] warn_on_slowpath+0x54/0x80
 [<c01317da>] ? print_oops_end_marker+0x2a/0x30
 [<c0131849>] ? warn_on_slowpath+0x59/0x80
 [<c0186dbd>] ? check_object+0xad/0x1e0
 [<c0155539>] ? mark_held_locks+0x39/0x80
 [<c01880ac>] ? __slab_free+0xac/0x150
 [<c015561c>] ? trace_hardirqs_on+0x7c/0x130
 [<c03c1534>] ? kfree_skbmem+0x54/0xc0
 [<c0400096>] tcp_verify_wq+0x1b6/0x1c0
 [<c01881e7>] ? kmem_cache_free+0x97/0xe0
 [<c03c1534>] ? kfree_skbmem+0x54/0xc0
 [<c03c1534>] ? kfree_skbmem+0x54/0xc0
 [<c03f7509>] tcp_clean_rtx_queue+0x2d9/0x5b0
 [<c03f7dd2>] tcp_ack+0x122/0x3a0
 [<c03fa21b>] tcp_rcv_established+0x3eb/0x710
 [<c0147420>] ? autoremove_wake_function+0x0/0x50
 [<c0401c05>] tcp_v4_do_rcv+0xe5/0x100
 [<c03f17e3>] tcp_prequeue_process+0x73/0xa0
 [<c03f1dae>] tcp_recvmsg+0x42e/0x830
 [<c03c0873>] sock_common_recvmsg+0x43/0x60
 [<c03bbacf>] sock_recvmsg+0xef/0x120
 [<c0154982>] ? validate_chain+0x1d2/0x320
 [<c0154982>] ? validate_chain+0x1d2/0x320
 [<c0147420>] ? autoremove_wake_function+0x0/0x50
 [<c03bb5ff>] ? sockfd_lookup_light+0x2f/0x70
 [<c03bd0f7>] sys_recvfrom+0x87/0xf0
 [<c015323d>] ? put_lock_stats+0xd/0x30
 [<c01532c0>] ? lock_release_holdtime+0x60/0x80
 [<c010af95>] ? native_sched_clock+0x85/0xe0
 [<c015323d>] ? put_lock_stats+0xd/0x30
 [<c01532c0>] ? lock_release_holdtime+0x60/0x80
 [<c013601f>] ? do_setitimer+0x1ef/0x2e0
 [<c0156b97>] ? __lock_release+0x47/0x70
 [<c03bd192>] sys_recv+0x32/0x40
 [<c03bd905>] sys_socketcall+0x155/0x230
 [<c010501b>] ? restore_nocheck+0x12/0x15
 [<c0104fba>] syscall_call+0x7/0xb
 =======================
---[ end trace 14b601818e6903ac ]---
P: 4 L: 4 vs 4 S: 0 vs 3 w: 2044792269-2044796616 (0)
TCP wq(s) LLLl<
TCP wq(h) ++h+<
l4 s3 f0 p4 seq: su2044792269 hs2044795029 sn2044796616

^ permalink raw reply

* Re: [PATCH 0/6] PS3: gelic: gelic updates for 2.6.25
From: John W. Linville @ 2008-01-24  2:36 UTC (permalink / raw)
  To: Geoff Levand
  Cc: Geert.Uytterhoeven, Paul Mackerras, Linux/PPC Development, netdev
In-Reply-To: <4796B0AC.5060205@am.sony.com>

On Tue, Jan 22, 2008 at 07:12:44PM -0800, Geoff Levand wrote:
> On 01/22/2008 04:58 PM, John W. Linville wrote:

> > I thought Geert's had been applied, but I guess I was looking at
> > it wrong.  Is there a powerpc tree that has them?
> 
> Not yet, they are now only in ps3-linux.git.  I sent them out to
> Paul last Friday the 18th for inclusion in 2.6.25.  Here is a link
> to the message:
> 
>   http://ozlabs.org/pipermail/linuxppc-dev/2008-January/050213.html
> 
> > Perhaps 1-6 above
> > and the wireless patch should just be applied to that tree (if there
> > is one) and all merged together?
> 
> I think Paul will accept them if they have the Sign-off-by's of
> the proper network maintainers.

Feel free to add:

	Signed-off-by: John W. Linville <linville@tuxdriver.com>

(Or Acked-by if you would prefer) to the wireless bits.  FWIW, the
wired bits seemed OK to me as well, but I didn't look too closely...

Thanks,

John
-- 
John W. Linville
linville@tuxdriver.com

^ permalink raw reply

* Re: [PATCH] [POWERPC] Add fixed-phy support for fs_enet
From: Kumar Gala @ 2008-01-24  1:51 UTC (permalink / raw)
  To: Jochen Friedrich
  Cc: Kernel, Linux, linuxppc-dev, Paul Mackerras, netdev, Scott Wood,
	Garzik, Jeff
In-Reply-To: <4767E677.7010200@scram.de>

On Tue, 18 Dec 2007, Jochen Friedrich wrote:

> This patch adds support to use the fixed-link property
> of an ethernet node to fs_enet for the
> CONFIG_PPC_CPM_NEW_BINDING case.
>
> Signed-off-by: Jochen Friedrich <jochen@scram.de>
> Acked-by: Jeff Garzik <jeff@garzik.org>
> Acked-by: Vitali Bordug <vitb@kernel.crashing.org>
> ---
>  drivers/net/fs_enet/fs_enet-main.c |    9 ++++++++-
>  1 files changed, 8 insertions(+), 1 deletions(-)
>

applied.

- k

^ permalink raw reply

* Re: [PATCH] bluetooth : move children of connection device to NULL before connection down
From: Dave Young @ 2008-01-24  1:26 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Marcel Holtmann, davem, netdev, linux-kernel, bluez-devel,
	cornelia.huck, gombasg, htejun, viro, kay.sievers, greg
In-Reply-To: <20080124011926.GA2950@darkstar.te-china.tietoenator.com>

On Thu, Jan 24, 2008 at 09:19:26AM +0800, Dave Young wrote:
> On Wed, Jan 23, 2008 at 02:06:29PM -0800, Andrew Morton wrote:
> > > On Tue, 22 Jan 2008 07:18:16 +0100 Marcel Holtmann <marcel@holtmann.org> wrote:
> > > Hi Dave,
> > > 
> > > > > Add people missed in cc-list.
> > > > 
> > > > Thanks Dave for your continued efforts on Bluetooth bugs like this.
> > > > 
> > > > Marcel, are you going to review/ACK/integrate/push-upstream/whatever
> > > > any of these Bluetooth patches?
> > > > 
> > > > It hasn't been getting much love from you as of late, you are one of
> > > > the listed maintainers, and I don't want to lose any of Dave's
> > > > valuable bug fixing work.
> > > 
> > > I will be fully back in business next week. Just got stuck in a project
> > > that needed 200% of my time to get it going.
> > >
> > 
> > These patches in -mm:
> > 
> > bluetooth-hidp_process_hid_control-remove-unnecessary-parameter-dealing.patch
> > bluetooth-uninlining.patch
> > drivers-bluetooth-bpa10xc-fix-memleak.patch
> > drivers-bluetooth-btsdioc-fix-double-free.patch
> > bluetooth-blacklist-another-broadcom-bcm2035-device.patch
> > bluetooth-rfcomm-tty_close-before-destruct.patch
> > hci_ldisc-fix-null-pointer-deref.patch
> > 
> > could benefit from some attention please.
> 
> Hi, andrew
> 
> For the patch bluetooth-rfcomm-tty_close-before-destruct.patch I have to rethinkabout it.
> 
> 1. The subject is not correct, should be rfcomm-tty-destroy-before-tty_close.
> 2. Don't know what I was thinking that time, could you replace it with the following better one? Sorry for that.
> 
> ---
> rfcomm dev could be deleted in tty_hangup, so we must not call rfcomm_dev_del again to prevent from destroying rfcomm dev before tty close.
> 
> Signed-off-by: Dave Young <hidave.darkstar@gmail.com> 
> 
> ---
>  net/bluetooth/rfcomm/tty.c |    2 ++
>  1 file changed, 2 insertions(+)
> 
> diff -upr a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c
> --- a/net/bluetooth/rfcomm/tty.c	2008-01-24 09:03:59.000000000 +0800
> +++ b/net/bluetooth/rfcomm/tty.c	2008-01-24 09:03:59.000000000 +0800
> @@ -429,6 +429,8 @@ static int rfcomm_release_dev(void __use
>  	if (dev->tty)
>  		tty_vhangup(dev->tty);
>  
> +	if (!test_bit(RFCOMM_RELEASE_ONHUP, &dev->flags))
> +		rfcomm_dev_del(dev);
>  	rfcomm_dev_del(dev);
	~~~~~~~~~~~~~~~~~
>  	rfcomm_dev_put(dev);
>  	return 0;

Please ignore the previous silly one, now resubmit :
----------

rfcomm dev could be deleted in tty_hangup, so we must not call rfcomm_dev_del again to prevent from destroying rfcomm dev before tty close.

Signed-off-by: Dave Young <hidave.darkstar@gmail.com> 

---
 net/bluetooth/rfcomm/tty.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff -upr a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c
--- a/net/bluetooth/rfcomm/tty.c	2008-01-24 09:21:56.000000000 +0800
+++ b/net/bluetooth/rfcomm/tty.c	2008-01-24 09:21:56.000000000 +0800
@@ -429,7 +429,8 @@ static int rfcomm_release_dev(void __use
 	if (dev->tty)
 		tty_vhangup(dev->tty);
 
-	rfcomm_dev_del(dev);
+	if (!test_bit(RFCOMM_RELEASE_ONHUP, &dev->flags))
+		rfcomm_dev_del(dev);
 	rfcomm_dev_put(dev);
 	return 0;
 }

^ permalink raw reply

* Re: [PATCH] bluetooth : move children of connection device to NULL before connection down
From: Dave Young @ 2008-01-24  1:19 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Marcel Holtmann, davem, netdev, linux-kernel, bluez-devel,
	cornelia.huck, gombasg, htejun, viro, kay.sievers, greg
In-Reply-To: <20080123140629.c24d4d68.akpm@linux-foundation.org>

On Wed, Jan 23, 2008 at 02:06:29PM -0800, Andrew Morton wrote:
> > On Tue, 22 Jan 2008 07:18:16 +0100 Marcel Holtmann <marcel@holtmann.org> wrote:
> > Hi Dave,
> > 
> > > > Add people missed in cc-list.
> > > 
> > > Thanks Dave for your continued efforts on Bluetooth bugs like this.
> > > 
> > > Marcel, are you going to review/ACK/integrate/push-upstream/whatever
> > > any of these Bluetooth patches?
> > > 
> > > It hasn't been getting much love from you as of late, you are one of
> > > the listed maintainers, and I don't want to lose any of Dave's
> > > valuable bug fixing work.
> > 
> > I will be fully back in business next week. Just got stuck in a project
> > that needed 200% of my time to get it going.
> >
> 
> These patches in -mm:
> 
> bluetooth-hidp_process_hid_control-remove-unnecessary-parameter-dealing.patch
> bluetooth-uninlining.patch
> drivers-bluetooth-bpa10xc-fix-memleak.patch
> drivers-bluetooth-btsdioc-fix-double-free.patch
> bluetooth-blacklist-another-broadcom-bcm2035-device.patch
> bluetooth-rfcomm-tty_close-before-destruct.patch
> hci_ldisc-fix-null-pointer-deref.patch
> 
> could benefit from some attention please.

Hi, andrew

For the patch bluetooth-rfcomm-tty_close-before-destruct.patch I have to rethinkabout it.

1. The subject is not correct, should be rfcomm-tty-destroy-before-tty_close.
2. Don't know what I was thinking that time, could you replace it with the following better one? Sorry for that.

---
rfcomm dev could be deleted in tty_hangup, so we must not call rfcomm_dev_del again to prevent from destroying rfcomm dev before tty close.

Signed-off-by: Dave Young <hidave.darkstar@gmail.com> 

---
 net/bluetooth/rfcomm/tty.c |    2 ++
 1 file changed, 2 insertions(+)

diff -upr a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c
--- a/net/bluetooth/rfcomm/tty.c	2008-01-24 09:03:59.000000000 +0800
+++ b/net/bluetooth/rfcomm/tty.c	2008-01-24 09:03:59.000000000 +0800
@@ -429,6 +429,8 @@ static int rfcomm_release_dev(void __use
 	if (dev->tty)
 		tty_vhangup(dev->tty);
 
+	if (!test_bit(RFCOMM_RELEASE_ONHUP, &dev->flags))
+		rfcomm_dev_del(dev);
 	rfcomm_dev_del(dev);
 	rfcomm_dev_put(dev);
 	return 0;

^ permalink raw reply

* Re: [IPV4 0/9] TRIE performance patches
From: Stephen Hemminger @ 2008-01-23 23:49 UTC (permalink / raw)
  To: Robert Olsson; +Cc: David Miller, netdev
In-Reply-To: <18327.18935.137799.285515@robur.slu.se>

On Wed, 23 Jan 2008 15:06:47 +0100
Robert Olsson <Robert.Olsson@data.slu.se> wrote:

> 
> Stephen Hemminger writes:
> 
>  > Time to handle a full BGP load (163K of routes).
>  > 
>  > Before:		Load		Dump		Flush
>  >
>  > kmem_cache	3.8		13.0		7.2
>  > iter		3.9		12.3		6.9
>  > unordered	3.1		11.9		4.9
>  > find_node	3.1		 0.3		1.2
> 
>  I certainly like the speed but what will we brake when
>  we don't return in longest prefix order?
> 
> labb:/# ip r
> default via 10.10.10.1 dev eth0 
> 5.0.0.0/8 via 192.168.2.2 dev eth3 
> 10.10.10.0/24 dev eth0  proto kernel  scope link  src 10.10.10.2 
> 10.10.11.0/24 dev eth1  proto kernel  scope link  src 10.10.11.1 
> 11.0.0.0/8 via 10.10.11.2 dev eth1 
> 192.168.1.0/24 dev eth2  proto kernel  scope link  src 192.168.1.2 
> 192.168.2.0/24 dev eth3  proto kernel  scope link  src 192.168.2.1 
> 
> labb:/# ip route list match 10.10.10.1
> default via 10.10.10.1 dev eth0 
> 10.10.10.0/24 dev eth0  proto kernel  scope link  src 10.10.10.2 
> labb:/# 
> 
> Maybe the unordered dump can be ordered cheaply...

Dumping by prefix is possible, but unless 32x slower. Dumping in
address order is just as logical. Like I said, I'm investigating what
quagga handles.
-- 
Stephen Hemminger <stephen.hemminger@vyatta.com>

^ permalink raw reply

* [PATCH] ppp: sparse warning fixes
From: Stephen Hemminger @ 2008-01-23 23:40 UTC (permalink / raw)
  To: Paul Mackerras; +Cc: linux-ppp, netdev

Fix a bunch of warnings in PPP and related drivers. Mostly because
sparse doesn't like it when the the function is only marked private
in the forward declaration.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>


---
 drivers/net/ppp_deflate.c |    4 ++--
 drivers/net/ppp_generic.c |    2 +-
 drivers/net/ppp_synctty.c |    2 +-
 drivers/net/pppoe.c       |    2 ++
 drivers/net/slhc.c        |    4 ++--
 5 files changed, 8 insertions(+), 6 deletions(-)

--- a/drivers/net/ppp_deflate.c	2008-01-23 15:35:22.000000000 -0800
+++ b/drivers/net/ppp_deflate.c	2008-01-23 15:35:40.000000000 -0800
@@ -206,7 +206,7 @@ static void z_comp_reset(void *arg)
  *	Returns the length of the compressed packet, or 0 if the
  *	packet is incompressible.
  */
-int z_compress(void *arg, unsigned char *rptr, unsigned char *obuf,
+static int z_compress(void *arg, unsigned char *rptr, unsigned char *obuf,
 	       int isize, int osize)
 {
 	struct ppp_deflate_state *state = (struct ppp_deflate_state *) arg;
@@ -435,7 +435,7 @@ static void z_decomp_reset(void *arg)
  * bug, so we return DECOMP_FATALERROR for them in order to turn off
  * compression, even though they are detected by inspecting the input.
  */
-int z_decompress(void *arg, unsigned char *ibuf, int isize,
+static int z_decompress(void *arg, unsigned char *ibuf, int isize,
 		 unsigned char *obuf, int osize)
 {
 	struct ppp_deflate_state *state = (struct ppp_deflate_state *) arg;
--- a/drivers/net/ppp_generic.c	2008-01-23 15:34:40.000000000 -0800
+++ b/drivers/net/ppp_generic.c	2008-01-23 15:34:45.000000000 -0800
@@ -1871,7 +1871,7 @@ ppp_mp_insert(struct ppp *ppp, struct sk
  * complete packet, or we get to the sequence number for a fragment
  * which hasn't arrived but might still do so.
  */
-struct sk_buff *
+static struct sk_buff *
 ppp_mp_reconstruct(struct ppp *ppp)
 {
 	u32 seq = ppp->nextseq;
--- a/drivers/net/ppp_synctty.c	2008-01-23 15:35:04.000000000 -0800
+++ b/drivers/net/ppp_synctty.c	2008-01-23 15:35:08.000000000 -0800
@@ -560,7 +560,7 @@ static void ppp_sync_process(unsigned lo
  * Procedures for encapsulation and framing.
  */
 
-struct sk_buff*
+static struct sk_buff*
 ppp_sync_txmunge(struct syncppp *ap, struct sk_buff *skb)
 {
 	int proto;
--- a/drivers/net/pppoe.c	2008-01-23 15:35:52.000000000 -0800
+++ b/drivers/net/pppoe.c	2008-01-23 15:36:16.000000000 -0800
@@ -989,6 +989,7 @@ out:
 }
 
 static void *pppoe_seq_start(struct seq_file *seq, loff_t *pos)
+	__acquires(pppoe_hash_lock)
 {
 	loff_t l = *pos;
 
@@ -1022,6 +1023,7 @@ out:
 }
 
 static void pppoe_seq_stop(struct seq_file *seq, void *v)
+	__releases(pppoe_hash_lock)
 {
 	read_unlock_bh(&pppoe_hash_lock);
 }
--- a/drivers/net/slhc.c	2008-01-23 15:36:45.000000000 -0800
+++ b/drivers/net/slhc.c	2008-01-23 15:37:22.000000000 -0800
@@ -174,7 +174,7 @@ put16(unsigned char *cp, unsigned short 
 
 
 /* Encode a number */
-unsigned char *
+static unsigned char *
 encode(unsigned char *cp, unsigned short n)
 {
 	if(n >= 256 || n == 0){
@@ -199,7 +199,7 @@ pull16(unsigned char **cpp)
 }
 
 /* Decode a number */
-long
+static long
 decode(unsigned char **cpp)
 {
 	register int x;

^ permalink raw reply

* [IPV4 3/5] fib_trie: dump doesnt use RCU
From: Stephen Hemminger @ 2008-01-23 22:48 UTC (permalink / raw)
  To: David Miller; +Cc: netdev
In-Reply-To: <20080123224844.610730277@linux-foundation.org>

[-- Attachment #1: fib-dump-rtnl.patch --]
[-- Type: text/plain, Size: 3261 bytes --]

Since fib dump (via netlink) holds the RTNL mutex, it is unnecessary
to use RCU, and it is impossible to get truncated (-EBUSY) result.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>


--- a/net/ipv4/fib_trie.c	2008-01-23 13:55:12.000000000 -0800
+++ b/net/ipv4/fib_trie.c	2008-01-23 14:00:35.000000000 -0800
@@ -1684,7 +1684,7 @@ static int trie_flush_leaf(struct trie *
  * Scan for the next right leaf starting at node p->child[idx]
  * Since we have back pointer, no recursion necessary.
  */
-static struct leaf *leaf_walk_rcu(struct tnode *p, struct node *c)
+static struct leaf *leaf_walk(struct tnode *p, struct node *c)
 {
 	do {
 		t_key idx;
@@ -1695,7 +1695,7 @@ static struct leaf *leaf_walk_rcu(struct
 			idx = 0;
 
 		while (idx < 1u << p->bits) {
-			c = tnode_get_child_rcu(p, idx++);
+			c = tnode_get_child(p, idx++);
 			if (!c)
 				continue;
 
@@ -1711,14 +1711,14 @@ static struct leaf *leaf_walk_rcu(struct
 
 		/* Node empty, walk back up to parent */
 		c = (struct node *) p;
-	} while ( (p = node_parent_rcu(c)) != NULL);
+	} while ( (p = node_parent(c)) != NULL);
 
 	return NULL; /* Root of trie */
 }
 
 static struct leaf *trie_firstleaf(struct trie *t)
 {
-	struct tnode *n = (struct tnode *) rcu_dereference(t->trie);
+	struct tnode *n = (struct tnode *) t->trie;
 
 	if (!n)
 		return NULL;
@@ -1726,7 +1726,7 @@ static struct leaf *trie_firstleaf(struc
 	if (IS_LEAF(n))          /* trie is just a leaf */
 		return (struct leaf *) n;
 
-	return leaf_walk_rcu(n, NULL);
+	return leaf_walk(n, NULL);
 }
 
 static struct leaf *trie_nextleaf(struct leaf *l)
@@ -1737,7 +1737,7 @@ static struct leaf *trie_nextleaf(struct
 	if (!p)
 		return NULL;	/* trie with just one leaf */
 
-	return leaf_walk_rcu(p, c);
+	return leaf_walk(p, c);
 }
 
 /*
@@ -1848,9 +1848,7 @@ static int fn_trie_dump_fa(t_key key, in
 	s_i = cb->args[4];
 	i = 0;
 
-	/* rcu_read_lock is hold by caller */
-
-	list_for_each_entry_rcu(fa, fah, fa_list) {
+	list_for_each_entry(fa, fah, fa_list) {
 		if (i < s_i) {
 			i++;
 			continue;
@@ -1885,8 +1883,7 @@ static int fn_trie_dump_leaf(struct leaf
 	s_i = cb->args[3];
 	i = 0;
 
-	/* rcu_read_lock is hold by caller */
-	hlist_for_each_entry_rcu(li, node, &l->list, hlist) {
+	hlist_for_each_entry(li, node, &l->list, hlist) {
 		if (i < s_i) {
 			i++;
 			continue;
@@ -1916,35 +1913,25 @@ static int fn_trie_dump(struct fib_table
 	struct trie *t = (struct trie *) tb->tb_data;
 	t_key key = cb->args[2];
 
-	rcu_read_lock();
+	ASSERT_RTNL();
+
 	/* Dump starting at last key.
 	 * Note: 0.0.0.0/0 (ie default) is first key.
 	 */
 	if (!key)
 		l = trie_firstleaf(t);
-	else {
+	else
 		l = fib_find_node(t, key);
-		if (!l) {
-			/* The table changed during the dump, rather than
-			 * giving partial data, just make application retry.
-			 */
-			rcu_read_unlock();
-			return -EBUSY;
-		}
-	}
 
 	while (l) {
 		cb->args[2] = l->key;
-		if (fn_trie_dump_leaf(l, tb, skb, cb) < 0) {
-			rcu_read_unlock();
+		if (fn_trie_dump_leaf(l, tb, skb, cb) < 0)
 			return -1;
-		}
 
 		l = trie_nextleaf(l);
 		memset(&cb->args[3], 0,
 		       sizeof(cb->args) - 3*sizeof(cb->args[0]));
 	}
-	rcu_read_unlock();
 
 	return skb->len;
 }

-- 
Stephen Hemminger <stephen.hemminger@vyatta.com>


^ permalink raw reply

* [IPV4 4/5] fib_trie: version 0.410
From: Stephen Hemminger @ 2008-01-23 22:48 UTC (permalink / raw)
  To: David Miller; +Cc: netdev
In-Reply-To: <20080123224844.610730277@linux-foundation.org>

[-- Attachment #1: fib-trie-minor.patch --]
[-- Type: text/plain, Size: 450 bytes --]

Increase version to reflect recent changes.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>


--- a/net/ipv4/fib_trie.c	2008-01-22 17:50:58.000000000 -0800
+++ b/net/ipv4/fib_trie.c	2008-01-22 17:51:02.000000000 -0800
@@ -50,7 +50,7 @@
  *		Patrick McHardy <kaber@trash.net>
  */
 
-#define VERSION "0.408"
+#define VERSION "0.410"
 
 #include <asm/uaccess.h>
 #include <asm/system.h>

-- 
Stephen Hemminger <stephen.hemminger@vyatta.com>


^ permalink raw reply

* [IPV4 5/5] fib_semantics: sparse warnings
From: Stephen Hemminger @ 2008-01-23 22:48 UTC (permalink / raw)
  To: David Miller; +Cc: netdev
In-Reply-To: <20080123224844.610730277@linux-foundation.org>

[-- Attachment #1: fib-semantic-sparse.patch --]
[-- Type: text/plain, Size: 1824 bytes --]

The magic macro change_nexthops introduces a variable nh which overlaps
previous declaration of nh.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>


--- a/net/ipv4/fib_semantics.c	2008-01-23 11:03:55.000000000 -0800
+++ b/net/ipv4/fib_semantics.c	2008-01-23 11:05:12.000000000 -0800
@@ -1059,14 +1059,14 @@ int fib_sync_down(__be32 local, struct n
 		unsigned int hash = fib_devindex_hashfn(dev->ifindex);
 		struct hlist_head *head = &fib_info_devhash[hash];
 		struct hlist_node *node;
-		struct fib_nh *nh;
+		struct fib_nh *nh1;
 
-		hlist_for_each_entry(nh, node, head, nh_hash) {
-			struct fib_info *fi = nh->nh_parent;
+		hlist_for_each_entry(nh1, node, head, nh_hash) {
+			struct fib_info *fi = nh1->nh_parent;
 			int dead;
 
 			BUG_ON(!fi->fib_nhs);
-			if (nh->nh_dev != dev || fi == prev_fi)
+			if (nh1->nh_dev != dev || fi == prev_fi)
 				continue;
 			prev_fi = fi;
 			dead = 0;
@@ -1091,6 +1091,7 @@ int fib_sync_down(__be32 local, struct n
 				}
 #endif
 			} endfor_nexthops(fi)
+
 			if (dead == fi->fib_nhs) {
 				fi->fib_flags |= RTNH_F_DEAD;
 				ret++;
@@ -1114,7 +1115,7 @@ int fib_sync_up(struct net_device *dev)
 	unsigned int hash;
 	struct hlist_head *head;
 	struct hlist_node *node;
-	struct fib_nh *nh;
+	struct fib_nh *nh1;
 	int ret;
 
 	if (!(dev->flags&IFF_UP))
@@ -1125,12 +1126,12 @@ int fib_sync_up(struct net_device *dev)
 	head = &fib_info_devhash[hash];
 	ret = 0;
 
-	hlist_for_each_entry(nh, node, head, nh_hash) {
-		struct fib_info *fi = nh->nh_parent;
+	hlist_for_each_entry(nh1, node, head, nh_hash) {
+		struct fib_info *fi = nh1->nh_parent;
 		int alive;
 
 		BUG_ON(!fi->fib_nhs);
-		if (nh->nh_dev != dev || fi == prev_fi)
+		if (nh1->nh_dev != dev || fi == prev_fi)
 			continue;
 
 		prev_fi = fi;

-- 
Stephen Hemminger <stephen.hemminger@vyatta.com>


^ permalink raw reply

* [IPV4 1/5] fib_trie: more whitespace cleanup
From: Stephen Hemminger @ 2008-01-23 22:48 UTC (permalink / raw)
  To: David Miller; +Cc: netdev
In-Reply-To: <20080123224844.610730277@linux-foundation.org>

[-- Attachment #1: trie-whitespace.patch --]
[-- Type: text/plain, Size: 1454 bytes --]

Remove extra blank lines.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>


--- a/net/ipv4/fib_trie.c	2008-01-22 17:46:28.000000000 -0800
+++ b/net/ipv4/fib_trie.c	2008-01-22 17:50:44.000000000 -0800
@@ -447,7 +447,6 @@ static void tnode_put_child_reorg(struct
 
 	BUG_ON(i >= 1<<tn->bits);
 
-
 	/* update emptyChildren */
 	if (n == NULL && chi != NULL)
 		tn->empty_children++;
@@ -1303,7 +1302,6 @@ err:
 	return err;
 }
 
-
 /* should be called with rcu_read_lock */
 static int check_leaf(struct trie *t, struct leaf *l,
 		      t_key key,  const struct flowi *flp,
@@ -1718,7 +1716,6 @@ static struct leaf *leaf_walk_rcu(struct
 	return NULL; /* Root of trie */
 }
 
-
 static struct leaf *trie_firstleaf(struct trie *t)
 {
 	struct tnode *n = (struct tnode *) rcu_dereference(t->trie);
@@ -1846,7 +1843,6 @@ static int fn_trie_dump_fa(t_key key, in
 {
 	int i, s_i;
 	struct fib_alias *fa;
-
 	__be32 xkey = htonl(key);
 
 	s_i = cb->args[4];
@@ -1879,7 +1875,6 @@ static int fn_trie_dump_fa(t_key key, in
 	return skb->len;
 }
 
-
 static int fn_trie_dump_leaf(struct leaf *l, struct fib_table *tb,
 			struct sk_buff *skb, struct netlink_callback *cb)
 {
@@ -2385,7 +2380,6 @@ static int fib_trie_seq_show(struct seq_
 		struct leaf *l = (struct leaf *) n;
 		struct leaf_info *li;
 		struct hlist_node *node;
-
 		__be32 val = htonl(l->key);
 
 		seq_indent(seq, iter->depth);

-- 
Stephen Hemminger <stephen.hemminger@vyatta.com>


^ permalink raw reply

* [IPV4 2/5] fib_trie: remove unneeded NULL check
From: Stephen Hemminger @ 2008-01-23 22:48 UTC (permalink / raw)
  To: David Miller; +Cc: netdev
In-Reply-To: <20080123224844.610730277@linux-foundation.org>

[-- Attachment #1: trie-already-hlist.patch --]
[-- Type: text/plain, Size: 535 bytes --]

Since fib_route_seq_show now uses hlist_for_each_entry(), the
leaf info can not be NULL.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>


--- a/net/ipv4/fib_trie.c	2008-01-22 17:50:44.000000000 -0800
+++ b/net/ipv4/fib_trie.c	2008-01-22 17:50:58.000000000 -0800
@@ -2474,9 +2474,6 @@ static int fib_route_seq_show(struct seq
 		struct fib_alias *fa;
 		__be32 mask, prefix;
 
-		if (!li)
-			continue;
-
 		mask = inet_make_mask(li->plen);
 		prefix = htonl(l->key);
 

-- 
Stephen Hemminger <stephen.hemminger@vyatta.com>


^ permalink raw reply

* Re: [PATCH] BUG_ON() bad input to request_irq
From: Rusty Russell @ 2008-01-23 22:15 UTC (permalink / raw)
  To: Andrew Morton; +Cc: jeff, netdev, linux-kernel
In-Reply-To: <20080123140414.e1ff2263.akpm@linux-foundation.org>

On Thursday 24 January 2008 09:04:14 Andrew Morton wrote:
> > On Thu, 17 Jan 2008 17:59:58 +1100 Rusty Russell <rusty@rustcorp.com.au>
> If no driver is passing in args which will trigger this BUG, we presumably
> don't need the patch.

You're only thinking of current code.  The BUG catches future changes, too.

> If some driver _is_ passing in args which will trigger these BUGs then it is
> presumably working OK anyway.  Taking a working system and making it go BUG
> is likely to upset people.

That's why I did the audit.  See patch below which preceeded it, which Jeff
hasn't responded to.  Breaking his drivers might make him notice :)

> IOW: WARN_ON, please.

At end of cycles, sure, but not for 2.6.25: they're even more invisible than
deprecated warnings :(

Rusty.
===
request_irq() always returns -EINVAL with a NULL handler.

I assume that these ancient network drivers were trying to find out if
an irq is available.  eepro.c expecting +EBUSY was doubly wrong.

Request_irq should BUG() on bad input, and these would have been found
earlier.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
---
 drivers/net/3c503.c |    2 +-
 drivers/net/e2100.c |    2 +-
 drivers/net/eepro.c |    2 +-
 drivers/net/hp.c    |    2 +-
 kernel/irq/manage.c |    1 +
 5 files changed, 5 insertions(+), 4 deletions(-)

diff -r 0b7e4fbb6238 drivers/net/3c503.c
--- a/drivers/net/3c503.c	Thu Jan 17 15:49:34 2008 +1100
+++ b/drivers/net/3c503.c	Thu Jan 17 16:40:28 2008 +1100
@@ -379,7 +379,7 @@ el2_open(struct net_device *dev)
 
 	outb(EGACFR_NORM, E33G_GACFR);	/* Enable RAM and interrupts. */
 	do {
-	    if (request_irq (*irqp, NULL, 0, "bogus", dev) != -EBUSY) {
+	    if (can_request_irq(*irqp, 0)) {
 		/* Twinkle the interrupt, and check if it's seen. */
 		unsigned long cookie = probe_irq_on();
 		outb_p(0x04 << ((*irqp == 9) ? 2 : *irqp), E33G_IDCFR);
diff -r 0b7e4fbb6238 drivers/net/e2100.c
--- a/drivers/net/e2100.c	Thu Jan 17 15:49:34 2008 +1100
+++ b/drivers/net/e2100.c	Thu Jan 17 16:40:28 2008 +1100
@@ -202,7 +202,7 @@ static int __init e21_probe1(struct net_
 	if (dev->irq < 2) {
 		int irqlist[] = {15,11,10,12,5,9,3,4}, i;
 		for (i = 0; i < 8; i++)
-			if (request_irq (irqlist[i], NULL, 0, "bogus", NULL) != -EBUSY) {
+			if (can_request_irq(irqlist[i], 0)) {
 				dev->irq = irqlist[i];
 				break;
 			}
diff -r 0b7e4fbb6238 drivers/net/eepro.c
--- a/drivers/net/eepro.c	Thu Jan 17 15:49:34 2008 +1100
+++ b/drivers/net/eepro.c	Thu Jan 17 16:40:28 2008 +1100
@@ -914,7 +914,7 @@ static int	eepro_grab_irq(struct net_dev
 
 		eepro_sw2bank0(ioaddr); /* Switch back to Bank 0 */
 
-		if (request_irq (*irqp, NULL, IRQF_SHARED, "bogus", dev) != EBUSY) {
+		if (can_request_irq(*irqp, IRQF_SHARED)) {
 			unsigned long irq_mask;
 			/* Twinkle the interrupt, and check if it's seen */
 			irq_mask = probe_irq_on();
diff -r 0b7e4fbb6238 drivers/net/hp.c
--- a/drivers/net/hp.c	Thu Jan 17 15:49:34 2008 +1100
+++ b/drivers/net/hp.c	Thu Jan 17 16:40:28 2008 +1100
@@ -170,7 +170,7 @@ static int __init hp_probe1(struct net_d
 		int *irqp = wordmode ? irq_16list : irq_8list;
 		do {
 			int irq = *irqp;
-			if (request_irq (irq, NULL, 0, "bogus", NULL) != -EBUSY) {
+			if (can_request_irq(irq, 0)) {
 				unsigned long cookie = probe_irq_on();
 				/* Twinkle the interrupt, and check if it's seen. */
 				outb_p(irqmap[irq] | HP_RUN, ioaddr + HP_CONFIGURE);
diff -r 0b7e4fbb6238 kernel/irq/manage.c
--- a/kernel/irq/manage.c	Thu Jan 17 15:49:34 2008 +1100
+++ b/kernel/irq/manage.c	Thu Jan 17 16:40:28 2008 +1100
@@ -252,6 +252,7 @@ int can_request_irq(unsigned int irq, un
 
 	return !action;
 }
+EXPORT_SYMBOL(can_request_irq);
 
 void compat_irq_chip_set_default_handler(struct irq_desc *desc)
 {

^ permalink raw reply

* Re: [PATCH] bluetooth : move children of connection device to NULL before connection down
From: Andrew Morton @ 2008-01-23 22:06 UTC (permalink / raw)
  To: Marcel Holtmann
  Cc: davem, hidave.darkstar, netdev, linux-kernel, bluez-devel,
	cornelia.huck, gombasg, htejun, viro, kay.sievers, greg
In-Reply-To: <1200982696.7978.148.camel@aeonflux>

> On Tue, 22 Jan 2008 07:18:16 +0100 Marcel Holtmann <marcel@holtmann.org> wrote:
> Hi Dave,
> 
> > > Add people missed in cc-list.
> > 
> > Thanks Dave for your continued efforts on Bluetooth bugs like this.
> > 
> > Marcel, are you going to review/ACK/integrate/push-upstream/whatever
> > any of these Bluetooth patches?
> > 
> > It hasn't been getting much love from you as of late, you are one of
> > the listed maintainers, and I don't want to lose any of Dave's
> > valuable bug fixing work.
> 
> I will be fully back in business next week. Just got stuck in a project
> that needed 200% of my time to get it going.
>

These patches in -mm:

bluetooth-hidp_process_hid_control-remove-unnecessary-parameter-dealing.patch
bluetooth-uninlining.patch
drivers-bluetooth-bpa10xc-fix-memleak.patch
drivers-bluetooth-btsdioc-fix-double-free.patch
bluetooth-blacklist-another-broadcom-bcm2035-device.patch
bluetooth-rfcomm-tty_close-before-destruct.patch
hci_ldisc-fix-null-pointer-deref.patch

could benefit from some attention please.

^ permalink raw reply

* Re: [PATCH] BUG_ON() bad input to request_irq
From: Andrew Morton @ 2008-01-23 22:04 UTC (permalink / raw)
  To: Rusty Russell; +Cc: jeff, netdev, linux-kernel
In-Reply-To: <200801171759.59029.rusty@rustcorp.com.au>

> On Thu, 17 Jan 2008 17:59:58 +1100 Rusty Russell <rusty@rustcorp.com.au> wrote:
> Is there any reason why these bugs should be treated gently?  The
> caller might not want to check NR_IRQS and IRQ_NOREQUEST cases, but
> a NULL handler or NULL dev_id w/ shared are coding bugs.
> 
> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
> ---
>  kernel/irq/manage.c |    7 +++----
>  1 file changed, 3 insertions(+), 4 deletions(-)
> 
> diff -r c2eb8ef5a0be kernel/irq/manage.c
> --- a/kernel/irq/manage.c	Thu Jan 17 15:48:03 2008 +1100
> +++ b/kernel/irq/manage.c	Thu Jan 17 15:49:33 2008 +1100
> @@ -532,13 +532,12 @@ int request_irq(unsigned int irq, irq_ha
>  	 * which interrupt is which (messes up the interrupt freeing
>  	 * logic etc).
>  	 */
> -	if ((irqflags & IRQF_SHARED) && !dev_id)
> -		return -EINVAL;
> +	BUG_ON((irqflags & IRQF_SHARED) && !dev_id);
> +	BUG_ON(!handler);
> +
>  	if (irq >= NR_IRQS)
>  		return -EINVAL;
>  	if (irq_desc[irq].status & IRQ_NOREQUEST)
> -		return -EINVAL;
> -	if (!handler)
>  		return -EINVAL;
>  
>  	action = kmalloc(sizeof(struct irqaction), GFP_ATOMIC);

If no driver is passing in args which will trigger this BUG, we presumably
don't need the patch.

If some driver _is_ passing in ags which will trigger these BUGs then it is
presumably working OK anyway.  Taking a working system and making it go BUG
is likely to upset people.

IOW: WARN_ON, please.

^ permalink raw reply

* arping
From: Michaelian Ennis @ 2008-01-23 22:03 UTC (permalink / raw)
  To: netdev

Someone filed a bug at bugs.gentoo.org reflecting a possible
enhancement to arping.  In short the patches author felt that select
should be used instead of signals to avoid missing a timeout.

The bug is located at:
http://bugs.gentoo.org/show_bug.cgi?id=144526

The diff follows:

--- arping.c	2006-08-20 19:14:39.000000000 -0500
+++ /var/tmp/portage/iputils-021109-r3/work/iputils/arping.c	2006-08-20
19:17:40.000000000 -0500
@@ -7,9 +7,6 @@
  *		2 of the License, or (at your option) any later version.
  *
  * Authors:	Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>
- *		2006.08.18	erik quanstrom <quanstro@quanstro.net>
- *				use select instead of signals so timeouts will work.
- *				
  */

 #include <stdlib.h>
@@ -18,6 +15,7 @@
 #include <linux/sockios.h>
 #include <sys/file.h>
 #include <sys/time.h>
+#include <sys/signal.h>
 #include <sys/ioctl.h>
 #include <linux/if.h>
 #include <linux/if_arp.h>
@@ -31,12 +29,12 @@
 #include <string.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
-#include <stdarg.h>

 #include "SNAPSHOT.h"

 static void usage(void) __attribute__((noreturn));

+int quit_on_reply=0;
 char *device="eth0";
 int ifindex;
 char *source;
@@ -45,10 +43,7 @@
 int dad, unsolicited, advert;
 int quiet;
 int count=-1;
-int ntosend=-1;
-int ntorecv=-1;
 int timeout;
-struct timeval timeouttv;
 int unicasting;
 int s;
 int broadcast_only;
@@ -64,19 +59,6 @@
 #define MS_TDIFF(tv1,tv2) ( ((tv1).tv_sec-(tv2).tv_sec)*1000 + \
 			   ((tv1).tv_usec-(tv2).tv_usec)/1000 )

-#define pkttrace(...)	/* fprintf(stderr, __VA_ARGS__) */
-
-void
-errexit(int err, const char* fmt, ...)
-{
-	va_list ap;
-
-	va_start(ap, fmt);
-	vfprintf(stderr, fmt, ap);
-	va_end(ap);
-	exit(err);
-}
-	
 void usage(void)
 {
 	fprintf(stderr,
@@ -97,6 +79,16 @@
 	exit(2);
 }

+void set_signal(int signo, void (*handler)(void))
+{
+	struct sigaction sa;
+
+	memset(&sa, 0, sizeof(sa));
+	sa.sa_handler = (void (*)(int))handler;
+	sa.sa_flags = SA_RESTART;
+	sigaction(signo, &sa, NULL);
+}
+
 int send_pack(int s, struct in_addr src, struct in_addr dst,
 	      struct sockaddr_ll *ME, struct sockaddr_ll *HE)
 {
@@ -130,9 +122,7 @@
 	p+=4;

 	gettimeofday(&now, NULL);
-	pkttrace("sendto->\n");
 	err = sendto(s, buf, p-buf, 0, (struct sockaddr*)HE, sizeof(*HE));
-	pkttrace("sendto<-\n");
 	if (err == p-buf) {
 		last = now;
 		sent++;
@@ -145,20 +135,20 @@
 void finish(void)
 {
 	if (!quiet) {
-		fflush(stdout);
-		fprintf(stderr, "Sent %d probes (%d broadcast(s))\n", sent, brd_sent);
-		fprintf(stderr, "Received %d response(s)", received);
+		printf("Sent %d probes (%d broadcast(s))\n", sent, brd_sent);
+		printf("Received %d response(s)", received);
 		if (brd_recv || req_recv) {
-			fprintf(stderr, " (");
+			printf(" (");
 			if (req_recv)
-				fprintf(stderr, "%d request(s)", req_recv);
+				printf("%d request(s)", req_recv);
 			if (brd_recv)
-				fprintf(stderr, "%s%d broadcast(s)",
+				printf("%s%d broadcast(s)",
 				       req_recv ? ", " : "",
 				       brd_recv);
-			fprintf(stderr, ")");
+			printf(")");
 		}
-		fprintf(stderr, "\n");
+		printf("\n");
+		fflush(stdout);
 	}
 	if (dad)
 		exit(!!received);
@@ -167,13 +157,34 @@
 	exit(!received);
 }

+void catcher(void)
+{
+	struct timeval tv;
+
+	gettimeofday(&tv, NULL);
+
+	if (start.tv_sec==0)
+		start = tv;
+
+	if (count-- == 0 || (timeout && MS_TDIFF(tv,start) > timeout*1000 + 500))
+		finish();
+
+	if (last.tv_sec==0 || MS_TDIFF(tv,last) > 500) {
+		send_pack(s, src, dst, &me, &he);
+		if (count == 0 && unsolicited)
+			finish();
+	}
+	alarm(1);
+}
+
 void print_hex(unsigned char *p, int len)
 {
 	int i;
-	for (i=0; i<len-1; i++)
-		printf("%02X:", p[i]);
-	if(len)
+	for (i=0; i<len; i++) {
 		printf("%02X", p[i]);
+		if (i != len-1)
+			printf(":");
+	}
 }

 int recv_pack(unsigned char *buf, int len, struct sockaddr_ll *FROM)
@@ -274,6 +285,8 @@
 		brd_recv++;
 	if (ah->ar_op == htons(ARPOP_REQUEST))
 		req_recv++;
+	if (quit_on_reply)
+		finish();
 	if(!broadcast_only) {
 		memcpy(he.sll_addr, p, me.sll_halen);
 		unicasting=1;
@@ -281,75 +294,26 @@
 	return 1;
 }

-
-unsigned char packet[4096];		// too big for stack on some arch.
-
-void
-pktloop(void)
-{
-	struct sockaddr_ll from;
-	socklen_t alen = sizeof(from);
-	fd_set rset;
-	struct timeval tmo;
-	int cc, i;
-
-	for(;;){
-		if(ntosend-- == 0)
-			break;
-		send_pack(s, src, dst, &me, &he);
-
-  		gettimeofday(&tmo, 0);
-		if(timeout)
-			i = MS_TDIFF(timeouttv, tmo) ;
-		else
-			i = 1000;
-		if(i < 0)
-			break;
-		if(i > 1000)
-			i = 1000;		// maximum select 1s.
-		tmo.tv_sec = i/1000;
-		tmo.tv_usec = (i%1000)*1000;
-
-		FD_ZERO(&rset);
-		FD_SET(s, &rset);
-		pkttrace("select %d ; %d\n", (int)tmo.tv_sec, (int)tmo.tv_usec);
-		i = select(s+1, &rset, 0, 0, &tmo);
-		pkttrace("<- select\n");
-		if(i == -1){
-			perror("arping: select");
-			exit(1);
-		}
-		if(i == 0){
-			gettimeofday(&tmo, 0);
-			i =  MS_TDIFF(timeouttv, tmo);
-			if(timeout && i <= 0)
-				break;
-			continue;
-		}
-		if ((cc = recvfrom(s, packet, sizeof(packet), 0,
-				   (struct sockaddr *)&from, &alen)) < 0) {
-			perror("arping: recvfrom");
-			continue;
-		}
-		if(recv_pack(packet, cc, &from))
-			if(--ntorecv == 0)
-				break;
-	}
-}
-
 int
 main(int argc, char **argv)
 {
-	int ch, onereply;
+	int socket_errno;
+	int ch;
+	uid_t uid = getuid();
+
+	s = socket(PF_PACKET, SOCK_DGRAM, 0);
+	socket_errno = errno;
+
+	setuid(uid);

 	while ((ch = getopt(argc, argv, "h?bfDUAqc:w:s:I:V")) != EOF) {
 		switch(ch) {
 		case 'b':
-			broadcast_only = 1;
+			broadcast_only=1;
 			break;
 		case 'D':
 			dad++;
-			onereply = 1;
+			quit_on_reply=1;
 			break;
 		case 'U':
 			unsolicited++;
@@ -365,15 +329,13 @@
 			count = atoi(optarg);
 			break;
 		case 'w':
-			gettimeofday(&timeouttv, 0);
-			timeouttv.tv_sec += atoi(optarg);
-			timeout = 1;
+			timeout = atoi(optarg);
 			break;
 		case 'I':
  			device = optarg;
  			break;
  		case 'f':
- 			onereply = 1;
+ 			quit_on_reply=1;
 			break;
 		case 's':
 			source = optarg;
@@ -392,26 +354,19 @@

 	if (argc != 1)
 		usage();
-	target = *argv;

-	if(onereply)
-		ntorecv = 1;
-	if(timeout)			// strange ping compatability.
-		ntorecv = count;
-	else
-		ntosend = count;
+	target = *argv;

-	if (device == 0) {
+	if (device == NULL) {
 		fprintf(stderr, "arping: device (option -I) is required\n");
 		usage();
 	}

-	s = socket(PF_PACKET, SOCK_DGRAM, 0);
 	if (s < 0) {
+		errno = socket_errno;
 		perror("arping: socket");
 		exit(2);
 	}
-	setuid(getuid());

 	if (1) {
 		struct ifreq ifr;
@@ -424,13 +379,19 @@
 		ifindex = ifr.ifr_ifindex;

 		if (ioctl(s, SIOCGIFFLAGS, (char*)&ifr)) {
-			perror("arping: ioctl(SIOCGIFFLAGS)");
+			perror("ioctl(SIOCGIFFLAGS)");
 			exit(2);
 		}
-		if (!(ifr.ifr_flags&IFF_UP))
-			errexit(2, "Interface \"%s\" is down\n", device);
-		if (ifr.ifr_flags&(IFF_NOARP|IFF_LOOPBACK))
-			errexit(dad ? 0 : 2, "Interface \"%s\" is not ARPable\n", device);
+		if (!(ifr.ifr_flags&IFF_UP)) {
+			if (!quiet)
+				printf("Interface \"%s\" is down\n", device);
+			exit(2);
+		}
+		if (ifr.ifr_flags&(IFF_NOARP|IFF_LOOPBACK)) {
+			if (!quiet)
+				printf("Interface \"%s\" is not ARPable\n", device);
+			exit(dad?0:2);
+		}
 	}

 	if (inet_aton(target, &dst) != 1) {
@@ -456,7 +417,7 @@
 		int probe_fd = socket(AF_INET, SOCK_DGRAM, 0);

 		if (probe_fd < 0) {
-			perror("arping: socket");
+			perror("socket");
 			exit(2);
 		}
 		if (device) {
@@ -468,7 +429,7 @@
 		if (src.s_addr) {
 			saddr.sin_addr = src;
 			if (bind(probe_fd, (struct sockaddr*)&saddr, sizeof(saddr)) == -1) {
-				perror("arping: bind");
+				perror("bind");
 				exit(2);
 			}
 		} else if (!dad) {
@@ -481,11 +442,11 @@
 			if (setsockopt(probe_fd, SOL_SOCKET, SO_DONTROUTE, (char*)&on,
sizeof(on)) == -1)
 				perror("WARNING: setsockopt(SO_DONTROUTE)");
 			if (connect(probe_fd, (struct sockaddr*)&saddr, sizeof(saddr)) == -1) {
-				perror("arping: connect");
+				perror("connect");
 				exit(2);
 			}
 			if (getsockname(probe_fd, (struct sockaddr*)&saddr, &alen) == -1) {
-				perror("arping: getsockname");
+				perror("getsockname");
 				exit(2);
 			}
 			src = saddr.sin_addr;
@@ -497,34 +458,60 @@
 	me.sll_ifindex = ifindex;
 	me.sll_protocol = htons(ETH_P_ARP);
 	if (bind(s, (struct sockaddr*)&me, sizeof(me)) == -1) {
-		perror("arping: bind");
+		perror("bind");
 		exit(2);
 	}

 	if (1) {
 		socklen_t alen = sizeof(me);
 		if (getsockname(s, (struct sockaddr*)&me, &alen) == -1) {
-			perror("arping: getsockname");
+			perror("getsockname");
 			exit(2);
 		}
 	}
-	if (me.sll_halen == 0)
-		errexit(dad ? 0 : 2, "Interface \"%s\" is not ARPable (no ll
address)\n", device);
+	if (me.sll_halen == 0) {
+		if (!quiet)
+			printf("Interface \"%s\" is not ARPable (no ll address)\n", device);
+		exit(dad?0:2);
+	}

 	he = me;
 	memset(he.sll_addr, -1, he.sll_halen);

 	if (!quiet) {
-		fprintf(stderr, "ARPING %s ", inet_ntoa(dst));
-		fprintf(stderr, "from %s %s\n",  inet_ntoa(src), device ? : "");
+		printf("ARPING %s ", inet_ntoa(dst));
+		printf("from %s %s\n",  inet_ntoa(src), device ? : "");
 	}

-	if (!src.s_addr && !dad)
-		errexit(2, "arping: no source address in not-DAD mode\n");
+	if (!src.s_addr && !dad) {
+		fprintf(stderr, "arping: no source address in not-DAD mode\n");
+		exit(2);
+	}
+
+	set_signal(SIGINT, finish);
+	set_signal(SIGALRM, catcher);
+
+	catcher();

-	pktloop();
-	finish();
-	return 1;		// shut up gcc.
+	while(1) {
+		sigset_t sset, osset;
+		unsigned char packet[4096];
+		struct sockaddr_ll from;
+		socklen_t alen = sizeof(from);
+		int cc;
+
+		if ((cc = recvfrom(s, packet, sizeof(packet), 0,
+				   (struct sockaddr *)&from, &alen)) < 0) {
+			perror("arping: recvfrom");
+			continue;
+		}
+		sigemptyset(&sset);
+		sigaddset(&sset, SIGALRM);
+		sigaddset(&sset, SIGINT);
+		sigprocmask(SIG_BLOCK, &sset, &osset);
+		recv_pack(packet, cc, &from);
+		sigprocmask(SIG_SETMASK, &osset, NULL);
+	}
 }

^ permalink raw reply

* RE: [PATCH 2.6.25 1/1]S2io: Multiqueue network device support implementation
From: Ramkrishna Vepa @ 2008-01-23 20:48 UTC (permalink / raw)
  To: Andi Kleen, Sreenivasa Honnur; +Cc: netdev, jeff, support
In-Reply-To: <p73odbclsft.fsf@crumb.suse.de>

> Sreenivasa Honnur <Sreenivasa.Honnur@neterion.com> writes:
> 
> > Multiqueue netwrok device support implementation.
> > - Added a loadable parameter "multiq" to enable/disable multiqueue
> support,
> >   by default it is disabled.
> > - skb->queue_mapping is not used for queue/fifo selection. FIFO
> iselection is
> >   based on IP-TOS value, 0x0-0xF TOS values are mapped to 8 FIFOs.
> 
> Standard way to use that would be using skb->priority
[Ram] Thanks. We can use this field to determine the priority. It should
simplify the code.

> 
> But I'm surprised you bother with TOS for multi queues at all. TOS
> isn't a too important mechanism.
[Ram] Agreed TOS is not too important. The purpose of this patch was to
add the multiqueue functionality with a feature that can use it. With
multiple transmit fifos enabled, a whole new set of features that can be
enabled.

> 
> I would have thought the primary use case would be per CPU TX
completion
> interrupts. With that the queue should be selected based on
> the the current CPU.
> 
[Ram] I am assuming that this is with regards to msi-x interrupts. We
have done away with handling tx completion in the interrupt handler, and
are instead handling them in the context of the transmit. The slow path,
straggling transmit completions will be handled in the timer context.
This patch (along with other new features) will be sent soon.

Ram
> -Andi

^ permalink raw reply

* Re: [PATCH] [IPV4] route: fix locking in rt_run_flush()
From: Eric Dumazet @ 2008-01-23 20:44 UTC (permalink / raw)
  To: joonwpark81; +Cc: David Miller, netdev
In-Reply-To: <20080123074320.GB9017@ehus.geninetworks.com>

joonwpark81@gmail.com a écrit :
> On Mon, Jan 21, 2008 at 02:40:43AM -0800, David Miller wrote:
>> From: Joonwoo Park <joonwpark81@gmail.com>
>> Date: Tue, 22 Jan 2008 00:08:57 +0900
>>
>>> The rt_run_flush() can be stucked if it was called while netdev is on the 
>>> high load.
>>> It's possible when pushing rtable to rt_hash is faster than pulling
>>> from it.
>>>
>>> Signed-off-by: Joonwoo Park <joonwpark81@gmail.com>
>> I agree with the analysis of the problem, however not the solution.
>>
>> This will absolutely kill software interrupt latency.
>>
>> In fact, we have moved much of the flush work into a workqueue in
>> net-2.6.25 because of how important that is
>>
>> We need to find some other way to solve this.
>>
> 
> Dave, Eric,
> Thanks so much for comments.
> 
> I did stress tests and I found that the real problem was not consumer & supplier
> issue.
> It was the problem for me to innumerable enabling & disabling the softirq.
> But I'm still thinking need of considering issue 'faster caching than flush'. :) 
> 
> ifconfig up on heavy loaded interface.
> Before patching:
>  time ifconfig eth1 up
>  BUG: soft lockup - CPU#0 stuck for 11s! [events/0:9]
>  ...
> 
> After patching:
>  time ifconfig eth1 up
> real	0m0.007s
> user	0m0.000s
> sys	0m0.004s
> 
> Thanks!
> Joonwoo
> 
> 
>>From 87c29506de967e811ad5b57cd2e1a002134e878f Mon Sep 17 00:00:00 2001
> From: Joonwoo Park <joonwpark81@gmail.com>
> Date: Wed, 23 Jan 2008 15:16:54 +0900
> Subject: [PATCH] [IPV4] route: reduce locking/unlocking in rt_run_flush
> 
> The rt_run_flush does spin_lock_bh/spin_unlock_bh for rt_hash_mask + 1
> times.
> The rt_hash_mask takes from 32767 to 65535, so it's big overhead.
> In addition, disable_bh/enable_bh for many times in the rt_run_flush
> can cause stuck on a machine with heavily pended softirqs.
> 
> This patch reduces locking/unlocking as doing it with jumping the lock
> slots.
> 
> ifconfig up on heavy loaded interface.
> Before:
>  time ifconfig eth1 up
>  BUG: soft lockup - CPU#0 stuck for 11s! [events/0:9]
>  ...
> 
> After:
>  time ifconfig eth1 up
> real	0m0.007s
> user	0m0.000s
> sys	0m0.004s
> 

Unfortunatly, your patch doesnt work on CONFIG_SMP=n (softirq will be disabled 
for the whole scan of table)

Also, some machines around there have 2^22 slots in hash table, and NR_CPUS=4, 
so softirqs will be disabled for a too long time.

Please try net-2.6.25 and submit patches on top of it if necessary, since 
rt_run_flush() has pending changes, not in net-2.6

Note : The 'soft lockup' can be avoided by other means.


^ permalink raw reply

* arp queries and ipsec policy
From: Marco Berizzi @ 2008-01-23 20:37 UTC (permalink / raw)
  To: netdev

Hello everybody.
I'm using openswan 2.4.x to drive the linux 2.4.23.14 ipsec
native stack (netkey).
Openswan by default insert a static route when an ipsec SA
is established: this is needed by the klips stack as it is
routing based. For example when a roadwarrior establish
an ipsec SA with the linux box I see a static route like
this:

# ip r s
road_warrior_public_ip dev eth0  scope link

This static route is placed by the default updown script.
When there is this route, I see linux doing arp queries for
the road_warrior_public_ip:

# tcpdump -pnvi eth0 arp
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
17:25:11.608179 arp who-has road_warrior_public_ip tell linux_public_ip_address
17:25:12.608171 arp who-has road_warrior_public_ip tell linux_public_ip_address
17:25:13.608224 arp who-has road_warrior_public_ip tell linux_public_ip_address

Is this behaviour expected?

I have seen this behaviour today because the ISP router
isn't configured with proxy_arp and linux is unable to
send the ESP packets because the is no arp reply from nobody.
However it is able to receive/decrypt them:

# tcpdump -pnvi eth0 ip host road_warrior_public_ip
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes

17:24:55.107497 IP (tos 0x0, ttl 120, id 55048, offset 0, flags [none], proto:
ESP (50), length: 112) road_warrior_public_ip > linux_public_ip_address:
ESP(spi=0xe215d75f,seq=0x25), length 92

17:24:55.109304 IP (tos 0x0, ttl 128, id 2262, offset 0, flags [none], proto:
ICMP (1), length: 60) road_warrior_public_ip > 172.25.5.4: ICMP echo request,
id 512, seq 50694, length 40

I have resolved the problem modifying the updown script so
it doesn't place the static route anymore.

PS: default parameters for eth0 on /proc except proxy_arp,
arp_announce and rp_filter

^ permalink raw reply

* [PATCH 1/3] pasemi_mac: Add support for changing mac address
From: Olof Johansson @ 2008-01-23 19:56 UTC (permalink / raw)
  To: jgarzik; +Cc: netdev
In-Reply-To: <20080123195537.GA32380@lixom.net>

Straightforward. It used to be hardcoded and impossible to override
with ifconfig.

Signed-off-by: Olof Johansson <olof@lixom.net>

diff --git a/drivers/net/pasemi_mac.c b/drivers/net/pasemi_mac.c
index bb88a41..59dea3f 100644
--- a/drivers/net/pasemi_mac.c
+++ b/drivers/net/pasemi_mac.c
@@ -221,6 +221,33 @@ static int pasemi_get_mac_addr(struct pasemi_mac *mac)
 	return 0;
 }
 
+static int pasemi_mac_set_mac_addr(struct net_device *dev, void *p)
+{
+	struct pasemi_mac *mac = netdev_priv(dev);
+	struct sockaddr *addr = p;
+	unsigned int adr0, adr1;
+
+	if (!is_valid_ether_addr(addr->sa_data))
+		return -EINVAL;
+
+	memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
+
+	adr0 = dev->dev_addr[2] << 24 |
+	       dev->dev_addr[3] << 16 |
+	       dev->dev_addr[4] << 8 |
+	       dev->dev_addr[5];
+	adr1 = read_mac_reg(mac, PAS_MAC_CFG_ADR1);
+	adr1 &= ~0xffff;
+	adr1 |= dev->dev_addr[0] << 8 | dev->dev_addr[1];
+
+	pasemi_mac_intf_disable(mac);
+	write_mac_reg(mac, PAS_MAC_CFG_ADR0, adr0);
+	write_mac_reg(mac, PAS_MAC_CFG_ADR1, adr1);
+	pasemi_mac_intf_enable(mac);
+
+	return 0;
+}
+
 static int get_skb_hdr(struct sk_buff *skb, void **iphdr,
 		       void **tcph, u64 *hdr_flags, void *data)
 {
@@ -1475,6 +1502,7 @@ pasemi_mac_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	dev->stop = pasemi_mac_close;
 	dev->hard_start_xmit = pasemi_mac_start_tx;
 	dev->set_multicast_list = pasemi_mac_set_rx_mode;
+	dev->set_mac_address = pasemi_mac_set_mac_addr;
 
 	if (err)
 		goto out;
diff --git a/drivers/net/pasemi_mac.h b/drivers/net/pasemi_mac.h
index 8bee2a6..39d3259 100644
--- a/drivers/net/pasemi_mac.h
+++ b/drivers/net/pasemi_mac.h
@@ -96,6 +96,8 @@ struct pasemi_mac_buffer {
 /* MAC CFG register offsets */
 enum {
 	PAS_MAC_CFG_PCFG = 0x80,
+	PAS_MAC_CFG_ADR0 = 0x8c,
+	PAS_MAC_CFG_ADR1 = 0x90,
 	PAS_MAC_CFG_TXP = 0x98,
 	PAS_MAC_IPC_CHNL = 0x208,
 };

^ permalink raw reply related

* [PATCH 3/3] pasemi_mac: Disable interface on close
From: Olof Johansson @ 2008-01-23 19:57 UTC (permalink / raw)
  To: jgarzik; +Cc: netdev
In-Reply-To: <20080123195537.GA32380@lixom.net>

Turns out we never disable the interface. It doesn't really cause
any problems since the channel is off, but it's still better to do it
this way.
    
Signed-off-by: Olof Johansson <olof@lixom.net>

diff --git a/drivers/net/pasemi_mac.c b/drivers/net/pasemi_mac.c
index 059c6b0..2e39e02 100644
--- a/drivers/net/pasemi_mac.c
+++ b/drivers/net/pasemi_mac.c
@@ -1287,6 +1287,7 @@ static int pasemi_mac_close(struct net_device *dev)
 	pasemi_mac_pause_txchan(mac);
 	pasemi_mac_pause_rxint(mac);
 	pasemi_mac_pause_rxchan(mac);
+	pasemi_mac_intf_disable(mac);
 
 	free_irq(mac->tx->chan.irq, mac->tx);
 	free_irq(mac->rx->chan.irq, mac->rx);

^ permalink raw reply related

* [PATCH 2/3] pasemi_mac: add support for setting MTU
From: Olof Johansson @ 2008-01-23 19:56 UTC (permalink / raw)
  To: jgarzik; +Cc: netdev
In-Reply-To: <20080123195537.GA32380@lixom.net>

Currently keeping it at 1500 bytes or below since jumbo frames need
special checksum offload on TX.

Signed-off-by: Olof Johansson <olof@lixom.net>

diff --git a/drivers/net/pasemi_mac.c b/drivers/net/pasemi_mac.c
index 59dea3f..059c6b0 100644
--- a/drivers/net/pasemi_mac.c
+++ b/drivers/net/pasemi_mac.c
@@ -62,6 +62,10 @@
 
 #define LRO_MAX_AGGR 64
 
+#define PE_MIN_MTU	64
+#define PE_MAX_MTU	1500
+#define PE_DEF_MTU	ETH_DATA_LEN
+
 #define DEFAULT_MSG_ENABLE	  \
 	(NETIF_MSG_DRV		| \
 	 NETIF_MSG_PROBE	| \
@@ -82,8 +86,6 @@
 				 & ((ring)->size - 1))
 #define RING_AVAIL(ring)	((ring->size) - RING_USED(ring))
 
-#define BUF_SIZE 1646 /* 1500 MTU + ETH_HLEN + VLAN_HLEN + 2 64B cachelines */
-
 MODULE_LICENSE("GPL");
 MODULE_AUTHOR ("Olof Johansson <olof@lixom.net>");
 MODULE_DESCRIPTION("PA Semi PWRficient Ethernet driver");
@@ -175,6 +177,24 @@ static int mac_to_intf(struct pasemi_mac *mac)
 	return -1;
 }
 
+static void pasemi_mac_intf_disable(struct pasemi_mac *mac)
+{
+	unsigned int flags;
+
+	flags = read_mac_reg(mac, PAS_MAC_CFG_PCFG);
+	flags &= ~PAS_MAC_CFG_PCFG_PE;
+	write_mac_reg(mac, PAS_MAC_CFG_PCFG, flags);
+}
+
+static void pasemi_mac_intf_enable(struct pasemi_mac *mac)
+{
+	unsigned int flags;
+
+	flags = read_mac_reg(mac, PAS_MAC_CFG_PCFG);
+	flags |= PAS_MAC_CFG_PCFG_PE;
+	write_mac_reg(mac, PAS_MAC_CFG_PCFG, flags);
+}
+
 static int pasemi_get_mac_addr(struct pasemi_mac *mac)
 {
 	struct pci_dev *pdev = mac->pdev;
@@ -480,7 +500,7 @@ static void pasemi_mac_free_tx_resources(struct pasemi_mac *mac)
 
 }
 
-static void pasemi_mac_free_rx_resources(struct pasemi_mac *mac)
+static void pasemi_mac_free_rx_buffers(struct pasemi_mac *mac)
 {
 	struct pasemi_mac_rxring *rx = rx_ring(mac);
 	unsigned int i;
@@ -500,7 +520,12 @@ static void pasemi_mac_free_rx_resources(struct pasemi_mac *mac)
 	}
 
 	for (i = 0; i < RX_RING_SIZE; i++)
-		RX_DESC(rx, i) = 0;
+		RX_BUFF(rx, i) = 0;
+}
+
+static void pasemi_mac_free_rx_resources(struct pasemi_mac *mac)
+{
+	pasemi_mac_free_rx_buffers(mac);
 
 	dma_free_coherent(&mac->dma_pdev->dev, RX_RING_SIZE * sizeof(u64),
 			  rx_ring(mac)->buffers, rx_ring(mac)->buf_dma);
@@ -530,14 +555,14 @@ static void pasemi_mac_replenish_rx_ring(const struct net_device *dev,
 		/* Entry in use? */
 		WARN_ON(*buff);
 
-		skb = dev_alloc_skb(BUF_SIZE);
+		skb = dev_alloc_skb(mac->bufsz);
 		skb_reserve(skb, LOCAL_SKB_ALIGN);
 
 		if (unlikely(!skb))
 			break;
 
 		dma = pci_map_single(mac->dma_pdev, skb->data,
-				     BUF_SIZE - LOCAL_SKB_ALIGN,
+				     mac->bufsz - LOCAL_SKB_ALIGN,
 				     PCI_DMA_FROMDEVICE);
 
 		if (unlikely(dma_mapping_error(dma))) {
@@ -547,7 +572,7 @@ static void pasemi_mac_replenish_rx_ring(const struct net_device *dev,
 
 		info->skb = skb;
 		info->dma = dma;
-		*buff = XCT_RXB_LEN(BUF_SIZE) | XCT_RXB_ADDR(dma);
+		*buff = XCT_RXB_LEN(mac->bufsz) | XCT_RXB_ADDR(dma);
 		fill++;
 	}
 
@@ -677,7 +702,7 @@ static int pasemi_mac_clean_rx(struct pasemi_mac_rxring *rx,
 
 		len = (macrx & XCT_MACRX_LLEN_M) >> XCT_MACRX_LLEN_S;
 
-		pci_unmap_single(pdev, dma, BUF_SIZE-LOCAL_SKB_ALIGN,
+		pci_unmap_single(pdev, dma, mac->bufsz - LOCAL_SKB_ALIGN,
 				 PCI_DMA_FROMDEVICE);
 
 		if (macrx & XCT_MACRX_CRC) {
@@ -901,24 +926,6 @@ static irqreturn_t pasemi_mac_tx_intr(int irq, void *data)
 	return IRQ_HANDLED;
 }
 
-static void pasemi_mac_intf_disable(struct pasemi_mac *mac)
-{
-	unsigned int flags;
-
-	flags = read_mac_reg(mac, PAS_MAC_CFG_PCFG);
-	flags &= ~PAS_MAC_CFG_PCFG_PE;
-	write_mac_reg(mac, PAS_MAC_CFG_PCFG, flags);
-}
-
-static void pasemi_mac_intf_enable(struct pasemi_mac *mac)
-{
-	unsigned int flags;
-
-	flags = read_mac_reg(mac, PAS_MAC_CFG_PCFG);
-	flags |= PAS_MAC_CFG_PCFG_PE;
-	write_mac_reg(mac, PAS_MAC_CFG_PCFG, flags);
-}
-
 static void pasemi_adjust_link(struct net_device *dev)
 {
 	struct pasemi_mac *mac = netdev_priv(dev);
@@ -1175,11 +1182,71 @@ out_rx_resources:
 
 #define MAX_RETRIES 5000
 
+static void pasemi_mac_pause_txchan(struct pasemi_mac *mac)
+{
+	unsigned int sta, retries;
+	int txch = tx_ring(mac)->chan.chno;
+
+	write_dma_reg(PAS_DMA_TXCHAN_TCMDSTA(txch),
+		      PAS_DMA_TXCHAN_TCMDSTA_ST);
+
+	for (retries = 0; retries < MAX_RETRIES; retries++) {
+		sta = read_dma_reg(PAS_DMA_TXCHAN_TCMDSTA(txch));
+		if (!(sta & PAS_DMA_TXCHAN_TCMDSTA_ACT))
+			break;
+		cond_resched();
+	}
+
+	if (sta & PAS_DMA_TXCHAN_TCMDSTA_ACT)
+		dev_err(&mac->dma_pdev->dev,
+			"Failed to stop tx channel, tcmdsta %08x\n", sta);
+
+	write_dma_reg(PAS_DMA_TXCHAN_TCMDSTA(txch), 0);
+}
+
+static void pasemi_mac_pause_rxchan(struct pasemi_mac *mac)
+{
+	unsigned int sta, retries;
+	int rxch = rx_ring(mac)->chan.chno;
+
+	write_dma_reg(PAS_DMA_RXCHAN_CCMDSTA(rxch),
+		      PAS_DMA_RXCHAN_CCMDSTA_ST);
+	for (retries = 0; retries < MAX_RETRIES; retries++) {
+		sta = read_dma_reg(PAS_DMA_RXCHAN_CCMDSTA(rxch));
+		if (!(sta & PAS_DMA_RXCHAN_CCMDSTA_ACT))
+			break;
+		cond_resched();
+	}
+
+	if (sta & PAS_DMA_RXCHAN_CCMDSTA_ACT)
+		dev_err(&mac->dma_pdev->dev,
+			"Failed to stop rx channel, ccmdsta 08%x\n", sta);
+	write_dma_reg(PAS_DMA_RXCHAN_CCMDSTA(rxch), 0);
+}
+
+static void pasemi_mac_pause_rxint(struct pasemi_mac *mac)
+{
+	unsigned int sta, retries;
+
+	write_dma_reg(PAS_DMA_RXINT_RCMDSTA(mac->dma_if),
+		      PAS_DMA_RXINT_RCMDSTA_ST);
+	for (retries = 0; retries < MAX_RETRIES; retries++) {
+		sta = read_dma_reg(PAS_DMA_RXINT_RCMDSTA(mac->dma_if));
+		if (!(sta & PAS_DMA_RXINT_RCMDSTA_ACT))
+			break;
+		cond_resched();
+	}
+
+	if (sta & PAS_DMA_RXINT_RCMDSTA_ACT)
+		dev_err(&mac->dma_pdev->dev,
+			"Failed to stop rx interface, rcmdsta %08x\n", sta);
+	write_dma_reg(PAS_DMA_RXINT_RCMDSTA(mac->dma_if), 0);
+}
+
 static int pasemi_mac_close(struct net_device *dev)
 {
 	struct pasemi_mac *mac = netdev_priv(dev);
 	unsigned int sta;
-	int retries;
 	int rxch, txch;
 
 	rxch = rx_ring(mac)->chan.chno;
@@ -1217,51 +1284,9 @@ static int pasemi_mac_close(struct net_device *dev)
 	pasemi_mac_clean_tx(tx_ring(mac));
 	pasemi_mac_clean_rx(rx_ring(mac), RX_RING_SIZE);
 
-	/* Disable interface */
-	write_dma_reg(PAS_DMA_TXCHAN_TCMDSTA(txch),
-		      PAS_DMA_TXCHAN_TCMDSTA_ST);
-	write_dma_reg( PAS_DMA_RXINT_RCMDSTA(mac->dma_if),
-		      PAS_DMA_RXINT_RCMDSTA_ST);
-	write_dma_reg(PAS_DMA_RXCHAN_CCMDSTA(rxch),
-		      PAS_DMA_RXCHAN_CCMDSTA_ST);
-
-	for (retries = 0; retries < MAX_RETRIES; retries++) {
-		sta = read_dma_reg(PAS_DMA_TXCHAN_TCMDSTA(rxch));
-		if (!(sta & PAS_DMA_TXCHAN_TCMDSTA_ACT))
-			break;
-		cond_resched();
-	}
-
-	if (sta & PAS_DMA_TXCHAN_TCMDSTA_ACT)
-		dev_err(&mac->dma_pdev->dev, "Failed to stop tx channel\n");
-
-	for (retries = 0; retries < MAX_RETRIES; retries++) {
-		sta = read_dma_reg(PAS_DMA_RXCHAN_CCMDSTA(rxch));
-		if (!(sta & PAS_DMA_RXCHAN_CCMDSTA_ACT))
-			break;
-		cond_resched();
-	}
-
-	if (sta & PAS_DMA_RXCHAN_CCMDSTA_ACT)
-		dev_err(&mac->dma_pdev->dev, "Failed to stop rx channel\n");
-
-	for (retries = 0; retries < MAX_RETRIES; retries++) {
-		sta = read_dma_reg(PAS_DMA_RXINT_RCMDSTA(mac->dma_if));
-		if (!(sta & PAS_DMA_RXINT_RCMDSTA_ACT))
-			break;
-		cond_resched();
-	}
-
-	if (sta & PAS_DMA_RXINT_RCMDSTA_ACT)
-		dev_err(&mac->dma_pdev->dev, "Failed to stop rx interface\n");
-
-	/* Then, disable the channel. This must be done separately from
-	 * stopping, since you can't disable when active.
-	 */
-
-	write_dma_reg(PAS_DMA_TXCHAN_TCMDSTA(txch), 0);
-	write_dma_reg(PAS_DMA_RXCHAN_CCMDSTA(rxch), 0);
-	write_dma_reg(PAS_DMA_RXINT_RCMDSTA(mac->dma_if), 0);
+	pasemi_mac_pause_txchan(mac);
+	pasemi_mac_pause_rxint(mac);
+	pasemi_mac_pause_rxchan(mac);
 
 	free_irq(mac->tx->chan.irq, mac->tx);
 	free_irq(mac->rx->chan.irq, mac->rx);
@@ -1415,6 +1440,62 @@ static int pasemi_mac_poll(struct napi_struct *napi, int budget)
 	return pkts;
 }
 
+static int pasemi_mac_change_mtu(struct net_device *dev, int new_mtu)
+{
+	struct pasemi_mac *mac = netdev_priv(dev);
+	unsigned int reg;
+	unsigned int rcmdsta;
+	int running;
+
+	if (new_mtu < PE_MIN_MTU || new_mtu > PE_MAX_MTU)
+		return -EINVAL;
+
+	running = netif_running(dev);
+
+	if (running) {
+		/* Need to stop the interface, clean out all already
+		 * received buffers, free all unused buffers on the RX
+		 * interface ring, then finally re-fill the rx ring with
+		 * the new-size buffers and restart.
+		 */
+
+		napi_disable(&mac->napi);
+		netif_tx_disable(dev);
+		pasemi_mac_intf_disable(mac);
+
+		rcmdsta = read_dma_reg(PAS_DMA_RXINT_RCMDSTA(mac->dma_if));
+		pasemi_mac_pause_rxint(mac);
+		pasemi_mac_clean_rx(rx_ring(mac), RX_RING_SIZE);
+		pasemi_mac_free_rx_buffers(mac);
+	}
+
+	/* Change maxf, i.e. what size frames are accepted.
+	 * Need room for ethernet header and CRC word
+	 */
+	reg = read_mac_reg(mac, PAS_MAC_CFG_MACCFG);
+	reg &= ~PAS_MAC_CFG_MACCFG_MAXF_M;
+	reg |= PAS_MAC_CFG_MACCFG_MAXF(new_mtu + ETH_HLEN + 4);
+	write_mac_reg(mac, PAS_MAC_CFG_MACCFG, reg);
+
+	dev->mtu = new_mtu;
+	/* MTU + ETH_HLEN + VLAN_HLEN + 2 64B cachelines */
+	mac->bufsz = new_mtu + ETH_HLEN + ETH_FCS_LEN + LOCAL_SKB_ALIGN + 128;
+
+	if (running) {
+		write_dma_reg(PAS_DMA_RXINT_RCMDSTA(mac->dma_if),
+			      rcmdsta | PAS_DMA_RXINT_RCMDSTA_EN);
+
+		rx_ring(mac)->next_to_fill = 0;
+		pasemi_mac_replenish_rx_ring(dev, RX_RING_SIZE-1);
+
+		napi_enable(&mac->napi);
+		netif_start_queue(dev);
+		pasemi_mac_intf_enable(mac);
+	}
+
+	return 0;
+}
+
 static int __devinit
 pasemi_mac_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 {
@@ -1503,6 +1584,11 @@ pasemi_mac_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	dev->hard_start_xmit = pasemi_mac_start_tx;
 	dev->set_multicast_list = pasemi_mac_set_rx_mode;
 	dev->set_mac_address = pasemi_mac_set_mac_addr;
+	dev->mtu = PE_DEF_MTU;
+	/* 1500 MTU + ETH_HLEN + VLAN_HLEN + 2 64B cachelines */
+	mac->bufsz = dev->mtu + ETH_HLEN + ETH_FCS_LEN + LOCAL_SKB_ALIGN + 128;
+
+	dev->change_mtu = pasemi_mac_change_mtu;
 
 	if (err)
 		goto out;
diff --git a/drivers/net/pasemi_mac.h b/drivers/net/pasemi_mac.h
index 39d3259..99e7b93 100644
--- a/drivers/net/pasemi_mac.h
+++ b/drivers/net/pasemi_mac.h
@@ -59,6 +59,7 @@ struct pasemi_mac {
 	struct phy_device *phydev;
 	struct napi_struct napi;
 
+	int		bufsz; /* RX ring buffer size */
 	u8		type;
 #define MAC_TYPE_GMAC	1
 #define MAC_TYPE_XAUI	2
@@ -96,6 +97,7 @@ struct pasemi_mac_buffer {
 /* MAC CFG register offsets */
 enum {
 	PAS_MAC_CFG_PCFG = 0x80,
+	PAS_MAC_CFG_MACCFG = 0x84,
 	PAS_MAC_CFG_ADR0 = 0x8c,
 	PAS_MAC_CFG_ADR1 = 0x90,
 	PAS_MAC_CFG_TXP = 0x98,
@@ -132,6 +134,18 @@ enum {
 #define PAS_MAC_CFG_PCFG_SPD_100M	0x00000001
 #define PAS_MAC_CFG_PCFG_SPD_1G		0x00000002
 #define PAS_MAC_CFG_PCFG_SPD_10G	0x00000003
+
+#define PAS_MAC_CFG_MACCFG_TXT_M	0x70000000
+#define PAS_MAC_CFG_MACCFG_TXT_S	28
+#define PAS_MAC_CFG_MACCFG_PRES_M	0x0f000000
+#define PAS_MAC_CFG_MACCFG_PRES_S	24
+#define PAS_MAC_CFG_MACCFG_MAXF_M	0x00ffff00
+#define PAS_MAC_CFG_MACCFG_MAXF_S	8
+#define PAS_MAC_CFG_MACCFG_MAXF(x)	(((x) << PAS_MAC_CFG_MACCFG_MAXF_S) & \
+					 PAS_MAC_CFG_MACCFG_MAXF_M)
+#define PAS_MAC_CFG_MACCFG_MINF_M	0x000000ff
+#define PAS_MAC_CFG_MACCFG_MINF_S	0
+
 #define PAS_MAC_CFG_TXP_FCF		0x01000000
 #define PAS_MAC_CFG_TXP_FCE		0x00800000
 #define PAS_MAC_CFG_TXP_FC		0x00400000

^ permalink raw reply related

* [PATCH 0/3] A few more pasemi_mac patches for 2.6.25
From: Olof Johansson @ 2008-01-23 19:55 UTC (permalink / raw)
  To: jgarzik; +Cc: netdev

Hi,

This should be the last of my updates for 2.6.25:

1/3: pasemi_mac: Add support for changing mac address
2/3: pasemi_mac: add support for setting MTU
3/3: pasemi_mac: Disable interface on close



Thanks,

Olof

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox