netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* sky2: workaround for lost IRQ and 2.6.22-stable
@ 2007-08-07 18:46 Krzysztof Oledzki
  2007-08-07 18:56 ` [stable] " Greg KH
  2007-08-07 19:14 ` sky2: workaround for lost IRQ and 2.6.22-stable Stephen Hemminger
  0 siblings, 2 replies; 7+ messages in thread
From: Krzysztof Oledzki @ 2007-08-07 18:46 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: stable, netdev

[-- Attachment #1: Type: TEXT/PLAIN, Size: 278 bytes --]

Hello,

http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.21.y.git;a=commitdiff;h=fe1fe7c982f86624c692644e8ed05e132f4753cc

Is this fix going to be included in the next 2.6.22-stable release or is 
it not needed any more?

Best regards,

 				Krzysztof Olędzki

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [stable] sky2: workaround for lost IRQ and 2.6.22-stable
  2007-08-07 18:46 sky2: workaround for lost IRQ and 2.6.22-stable Krzysztof Oledzki
@ 2007-08-07 18:56 ` Greg KH
  2007-08-07 21:14   ` [RFT] sky2: backport patch Stephen Hemminger
  2007-08-07 19:14 ` sky2: workaround for lost IRQ and 2.6.22-stable Stephen Hemminger
  1 sibling, 1 reply; 7+ messages in thread
From: Greg KH @ 2007-08-07 18:56 UTC (permalink / raw)
  To: Krzysztof Oledzki; +Cc: Stephen Hemminger, netdev, stable

On Tue, Aug 07, 2007 at 08:46:31PM +0200, Krzysztof Oledzki wrote:
>  Hello,
> 
>  http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.21.y.git;a=commitdiff;h=fe1fe7c982f86624c692644e8ed05e132f4753cc
> 
>  Is this fix going to be included in the next 2.6.22-stable release or is it 
>  not needed any more?

It's not queued up for the next 2.6.22-stable release as no one has sent
it to the stable maintainers :)

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: sky2: workaround for lost IRQ and 2.6.22-stable
  2007-08-07 18:46 sky2: workaround for lost IRQ and 2.6.22-stable Krzysztof Oledzki
  2007-08-07 18:56 ` [stable] " Greg KH
@ 2007-08-07 19:14 ` Stephen Hemminger
  1 sibling, 0 replies; 7+ messages in thread
From: Stephen Hemminger @ 2007-08-07 19:14 UTC (permalink / raw)
  To: Krzysztof Oledzki; +Cc: stable, netdev

On Tue, 7 Aug 2007 20:46:31 +0200 (CEST)
Krzysztof Oledzki <olel@ans.pl> wrote:

> Hello,
> 
> http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.21.y.git;a=commitdiff;h=fe1fe7c982f86624c692644e8ed05e132f4753cc
> 
> Is this fix going to be included in the next 2.6.22-stable release or is 
> it not needed any more?
> 
> Best regards,
> 
>  				Krzysztof Olędzki

It stops the major hang from IRQ loss. 2.6.23 has more minor stuff that
probably aren't needed for stablilty

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [RFT] sky2: backport patch
  2007-08-07 18:56 ` [stable] " Greg KH
@ 2007-08-07 21:14   ` Stephen Hemminger
  2007-08-07 21:33     ` Jeff Garzik
  2007-08-11  0:46     ` [stable] " Greg KH
  0 siblings, 2 replies; 7+ messages in thread
From: Stephen Hemminger @ 2007-08-07 21:14 UTC (permalink / raw)
  To: Greg KH; +Cc: Krzysztof Oledzki, netdev, stable

Any volunteers to test this, it has a backport for the three main stability patches:
 1. carrier management
 2. lost irq timer
 3. rechecking for packets in poll
 4. overlength packet hang.

I am away from any sky2 hardware for another week, but others maybe
able to validate this.

--- a/drivers/net/sky2.c	2007-07-20 04:30:14.000000000 -0400
+++ b/drivers/net/sky2.c	2007-08-07 17:08:21.000000000 -0400
@@ -96,7 +96,7 @@ static int disable_msi = 0;
 module_param(disable_msi, int, 0);
 MODULE_PARM_DESC(disable_msi, "Disable Message Signaled Interrupt (MSI)");
 
-static int idle_timeout = 0;
+static int idle_timeout = 100;
 module_param(idle_timeout, int, 0);
 MODULE_PARM_DESC(idle_timeout, "Watchdog timer for lost interrupts (ms)");
 
@@ -1234,6 +1234,8 @@ static int sky2_up(struct net_device *de
 	if (netif_msg_ifup(sky2))
 		printk(KERN_INFO PFX "%s: enabling interface\n", dev->name);
 
+	netif_carrier_off(dev);
+
 	/* must be power of 2 */
 	sky2->tx_le = pci_alloc_consistent(hw->pdev,
 					   TX_RING_SIZE *
@@ -1573,7 +1575,6 @@ static int sky2_down(struct net_device *
 
 	/* Stop more packets from being queued */
 	netif_stop_queue(dev);
-	netif_carrier_off(dev);
 
 	/* Disable port IRQ */
 	imask = sky2_read32(hw, B0_IMSK);
@@ -1625,6 +1626,8 @@ static int sky2_down(struct net_device *
 
 	sky2_phy_power(hw, port, 0);
 
+	netif_carrier_off(dev);
+
 	/* turn off LED's */
 	sky2_write16(hw, B0_Y2LED, LED_STAT_OFF);
 
@@ -1689,7 +1692,6 @@ static void sky2_link_up(struct sky2_por
 	gm_phy_write(hw, port, PHY_MARV_INT_MASK, PHY_M_DEF_MSK);
 
 	netif_carrier_on(sky2->netdev);
-	netif_wake_queue(sky2->netdev);
 
 	/* Turn on link LED */
 	sky2_write8(hw, SK_REG(port, LNK_LED_REG),
@@ -1741,7 +1743,6 @@ static void sky2_link_down(struct sky2_p
 	gma_write16(hw, port, GM_GP_CTRL, reg);
 
 	netif_carrier_off(sky2->netdev);
-	netif_stop_queue(sky2->netdev);
 
 	/* Turn on link LED */
 	sky2_write8(hw, SK_REG(port, LNK_LED_REG), LINKLED_OFF);
@@ -2064,6 +2065,9 @@ static struct sk_buff *sky2_receive(stru
 	if (!(status & GMR_FS_RX_OK))
 		goto resubmit;
 
+	if (status >> 16 != length)
+		goto len_mismatch;
+
 	if (length < copybreak)
 		skb = receive_copy(sky2, re, length);
 	else
@@ -2073,6 +2077,11 @@ resubmit:
 
 	return skb;
 
+len_mismatch:
+	/* Truncation of overlength packets
+	   causes PHY length to not match MAC length */
+	++sky2->net_stats.rx_length_errors;
+
 error:
 	++sky2->net_stats.rx_errors;
 	if (status & GMR_FS_RX_FF_OV) {
@@ -2441,17 +2450,24 @@ static int sky2_poll(struct net_device *
 		sky2_phy_intr(hw, 1);
 
 	work_done = sky2_status_intr(hw, work_limit);
-	if (work_done < work_limit) {
-		netif_rx_complete(dev0);
+	*budget -= work_done;
+	dev0->quota -= work_done;
 
-		/* end of interrupt, re-enables also acts as I/O synchronization */
-		sky2_read32(hw, B0_Y2_SP_LISR);
-		return 0;
-	} else {
-		*budget -= work_done;
-		dev0->quota -= work_done;
+	/* More work? */
+ 	if (hw->st_idx != sky2_read16(hw, STAT_PUT_IDX))
 		return 1;
+
+	/* Bug/Errata workaround?
+	 * Need to kick the TX irq moderation timer.
+	 */
+	if (sky2_read8(hw, STAT_TX_TIMER_CTRL) == TIM_START) {
+		sky2_write8(hw, STAT_TX_TIMER_CTRL, TIM_STOP);
+		sky2_write8(hw, STAT_TX_TIMER_CTRL, TIM_START);
 	}
+	netif_rx_complete(dev0);
+
+	sky2_read32(hw, B0_Y2_SP_LISR);
+	return 0;
 }
 
 static irqreturn_t sky2_intr(int irq, void *dev_id)
@@ -3486,10 +3502,6 @@ static __devinit struct net_device *sky2
 	memcpy_fromio(dev->dev_addr, hw->regs + B2_MAC_1 + port * 8, ETH_ALEN);
 	memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
 
-	/* device is off until link detection */
-	netif_carrier_off(dev);
-	netif_stop_queue(dev);
-
 	return dev;
 }
 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [RFT] sky2: backport patch
  2007-08-07 21:14   ` [RFT] sky2: backport patch Stephen Hemminger
@ 2007-08-07 21:33     ` Jeff Garzik
  2007-08-07 21:47       ` Stephen Hemminger
  2007-08-11  0:46     ` [stable] " Greg KH
  1 sibling, 1 reply; 7+ messages in thread
From: Jeff Garzik @ 2007-08-07 21:33 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: Greg KH, Krzysztof Oledzki, netdev, stable

Stephen Hemminger wrote:
> Any volunteers to test this, it has a backport for the three main stability patches:
>  1. carrier management
>  2. lost irq timer
>  3. rechecking for packets in poll
>  4. overlength packet hang.
> 
> I am away from any sky2 hardware for another week, but others maybe
> able to validate this.

Backport to what?  from what?

You supplied no kernel version info.

	Jeff




^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [RFT] sky2: backport patch
  2007-08-07 21:33     ` Jeff Garzik
@ 2007-08-07 21:47       ` Stephen Hemminger
  0 siblings, 0 replies; 7+ messages in thread
From: Stephen Hemminger @ 2007-08-07 21:47 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Greg KH, Krzysztof Oledzki, netdev, stable

On Tue, 07 Aug 2007 17:33:51 -0400
Jeff Garzik <jeff@garzik.org> wrote:

> Stephen Hemminger wrote:
> > Any volunteers to test this, it has a backport for the three main stability patches:
> >  1. carrier management
> >  2. lost irq timer
> >  3. rechecking for packets in poll
> >  4. overlength packet hang.
> > 
> > I am away from any sky2 hardware for another week, but others maybe
> > able to validate this.
> 
> Backport to what?  from what?
>From 2.6.23-rc2 to 2.6.22.y base

> You supplied no kernel version info.
> 
> 	Jeff
> 
> 
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [stable] [RFT] sky2: backport patch
  2007-08-07 21:14   ` [RFT] sky2: backport patch Stephen Hemminger
  2007-08-07 21:33     ` Jeff Garzik
@ 2007-08-11  0:46     ` Greg KH
  1 sibling, 0 replies; 7+ messages in thread
From: Greg KH @ 2007-08-11  0:46 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: netdev, stable, Krzysztof Oledzki

On Tue, Aug 07, 2007 at 05:14:15PM -0400, Stephen Hemminger wrote:
> Any volunteers to test this, it has a backport for the three main stability patches:
>  1. carrier management
>  2. lost irq timer
>  3. rechecking for packets in poll
>  4. overlength packet hang.
> 
> I am away from any sky2 hardware for another week, but others maybe
> able to validate this.

Care to break these down into 3 patches and send them to stable@ if you
get the chance?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2007-08-11  0:46 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-08-07 18:46 sky2: workaround for lost IRQ and 2.6.22-stable Krzysztof Oledzki
2007-08-07 18:56 ` [stable] " Greg KH
2007-08-07 21:14   ` [RFT] sky2: backport patch Stephen Hemminger
2007-08-07 21:33     ` Jeff Garzik
2007-08-07 21:47       ` Stephen Hemminger
2007-08-11  0:46     ` [stable] " Greg KH
2007-08-07 19:14 ` sky2: workaround for lost IRQ and 2.6.22-stable Stephen Hemminger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).