From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jean-Louis Dupond Subject: b44: device restarts on heavy load Date: Tue, 16 Jun 2009 16:47:43 +0200 Message-ID: <4A37B08F.9000809@dupondje.be> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit To: Linux Netdev List Return-path: Received: from apollo.dupie.be ([85.17.239.130]:42333 "EHLO apollo.dupie.be" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752271AbZFPOrp (ORCPT ); Tue, 16 Jun 2009 10:47:45 -0400 Received: from [192.168.3.138] (235.167-78-194.adsl-static.isp.belgacom.be [194.78.167.235]) (Authenticated sender: info@dupondje.be) by apollo.dupie.be (Postfix) with ESMTP id 3B4681E501A6 for ; Tue, 16 Jun 2009 16:47:44 +0200 (CEST) Sender: netdev-owner@vger.kernel.org List-ID: Hello, There seems to be a bug in the b44 driver to cause a restart/reset of the network card. I tried to debug it a bit, and the error is in the b44_poll method. 846 static int b44_poll(struct napi_struct *napi, int budget) 847 { 848 struct b44 *bp = container_of(napi, struct b44, napi); 849 int work_done; 850 851 spin_lock_irq(&bp->lock); 852 853 if (bp->istat & (ISTAT_TX | ISTAT_TO)) { 854 /* spin_lock(&bp->tx_lock); */ 855 b44_tx(bp); 856 /* spin_unlock(&bp->tx_lock); */ 857 } 858 spin_unlock_irq(&bp->lock); 859 860 work_done = 0; 861 if (bp->istat & ISTAT_RX) 862 work_done += b44_rx(bp, budget); 863 864 if (bp->istat & ISTAT_ERRORS) { 865 unsigned long flags; 866 867 spin_lock_irqsave(&bp->lock, flags); 868 b44_halt(bp); 869 b44_init_rings(bp); 870 b44_init_hw(bp, B44_FULL_RESET_SKIP_PHY); 871 netif_wake_queue(bp->dev); 872 spin_unlock_irqrestore(&bp->lock, flags); 873 work_done = 0; 874 } 875 876 if (work_done < budget) { 877 napi_complete(napi); 878 b44_enable_ints(bp); 879 } 880 881 return work_done; 882 } It seems that suddenly bp->istat & ISTAT_ERRORS is true, so it resets the network card. This isn't really nice :( There seems to be ALOT of people having this issue: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/279102 Sincerely Jean-Louis Dupond