From patchwork Mon Jun 28 09:13:14 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 57119 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id C48B1B7084 for ; Mon, 28 Jun 2010 19:13:24 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751105Ab0F1JNU (ORCPT ); Mon, 28 Jun 2010 05:13:20 -0400 Received: from mail-wy0-f174.google.com ([74.125.82.174]:48038 "EHLO mail-wy0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750834Ab0F1JNT (ORCPT ); Mon, 28 Jun 2010 05:13:19 -0400 Received: by wyb38 with SMTP id 38so1583313wyb.19 for ; Mon, 28 Jun 2010 02:13:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:subject:from:to:cc :in-reply-to:references:content-type:date:message-id:mime-version :x-mailer:content-transfer-encoding; bh=ZvpcrJhHiw2pdxzRteJHqU1MfrJnCX2b6ebeMJMQCko=; b=tIkDvaKPZXMs4I86/h9bQuzgQ0M1KB2OXqUwX3lVkcXIEv9ocJraRsakAcdgaLUcH4 B0gN1cJVHHdYI79rIrQEUxH5fd8+1u0sARkLaPA8cJ8L8Pza8eZdG/oG4OCVS/vE6weg JNZ+JxaKT5/W7STnaKd7NLwclAqKeIev7+8jI= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=subject:from:to:cc:in-reply-to:references:content-type:date :message-id:mime-version:x-mailer:content-transfer-encoding; b=PUvlqJXQkX2O/g8E+wNVAwujhSDalVBkwvTI9zCqpgaQoyekBOQb9TxHulMuG4hoes pbNIhxo+RqUc0zJTRngmpnOBfzgo8QkOyd70EiZKgxMECDpQyZpA/UuQPL2cQOpStYgg 2nFyPZoeBH0wmecG/p7sr927KaY6nAaHRG6wU= Received: by 10.216.87.200 with SMTP id y50mr3435809wee.0.1277716397564; Mon, 28 Jun 2010 02:13:17 -0700 (PDT) Received: from [127.0.0.1] ([85.17.35.125]) by mx.google.com with ESMTPS id y39sm4776705weq.3.2010.06.28.02.13.16 (version=SSLv3 cipher=RC4-MD5); Mon, 28 Jun 2010 02:13:16 -0700 (PDT) Subject: Re: b44: Reset due to FIFO overflow. From: Eric Dumazet To: James Courtier-Dutton Cc: netdev@vger.kernel.org In-Reply-To: References: Date: Mon, 28 Jun 2010 11:13:14 +0200 Message-ID: <1277716394.4235.235.camel@edumazet-laptop> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Le lundi 28 juin 2010 à 08:41 +0100, James Courtier-Dutton a écrit : > Hi, > > Reference: > https://bugs.launchpad.net/ubuntu/+source/linux/+bug/279102 > > I can see this bug and can reproduce it 100% on demand. > The problem seems to be that when the b44 has a incoming FIFO buffer > overflow, it resets the entire card, dis-associates with the access > point and therefore takes some time before it can pass traffic again. > Can anyone point me to some code that would just recover the FIFO > instead of reset the entire card? > > I am a kernel developer, but I don't have any data sheets on this card > so was hoping someone with more knowledge of its workings, could help > me. > > I can then test it, and see if it is a good fix or not. > Hi Problem is we dont know if a Receive Fifo overflow is a minor or major indication from b44 chip. A minor indication would be : Chip tells us one or more frame were lost. No special action needed from driver. A major indication (as of current implemented in b44 driver) is : I am completely out of order and need a reset. Please do it. Patch to switch from major to minor indication is easy, but we dont know if its valid or not. --- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/net/b44.h b/drivers/net/b44.h index e1905a4..514dc3a 100644 --- a/drivers/net/b44.h +++ b/drivers/net/b44.h @@ -42,7 +42,7 @@ #define ISTAT_EMAC 0x04000000 /* EMAC Interrupt */ #define ISTAT_MII_WRITE 0x08000000 /* MII Write Interrupt */ #define ISTAT_MII_READ 0x10000000 /* MII Read Interrupt */ -#define ISTAT_ERRORS (ISTAT_DSCE|ISTAT_DATAE|ISTAT_DPE|ISTAT_RDU|ISTAT_RFO|ISTAT_TFU) +#define ISTAT_ERRORS (ISTAT_DSCE|ISTAT_DATAE|ISTAT_DPE|ISTAT_RDU|ISTAT_TFU) #define B44_IMASK 0x0024UL /* Interrupt Mask */ #define IMASK_DEF (ISTAT_ERRORS | ISTAT_TO | ISTAT_RX | ISTAT_TX) #define B44_GPTIMER 0x0028UL /* General Purpose Timer */