Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp445884ybl; Tue, 28 Jan 2020 06:07:49 -0800 (PST) X-Google-Smtp-Source: APXvYqwsu/kk+iQCdPAPKlE12+r0WrcRBfRReXsBjWhXsiipdm93NiLcDibkuNEdgTQXc/BGPLe3 X-Received: by 2002:aca:1012:: with SMTP id 18mr2781809oiq.151.1580220469152; Tue, 28 Jan 2020 06:07:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1580220469; cv=none; d=google.com; s=arc-20160816; b=KtcnX0P5q/7hrrg8PEoYInfWnLbz7MLyEuUdVHtRqulpGnVEawUdHp3KFsFn93+CVX NAaB/Lu2zp8TPgg/Pd8LNQe5oMFACYx9vB5/K6MxLJecgh0+JxAPd+KEgwOiaNGWmujv ajYalMJCol0TSuSoUrxP2G597HWyy/q5xK55gKAUTTS3ykgoJcNXloF2MVviqJKqti08 yubG6qn3VgBAD/CsHLwPDPNBE2WiObSz0ZjJHVto/ijq/UuoqJNXxOZj/g0aJERZ55b1 qfK6XvdbECsxJ/gZo/X4lcf1fkXHI6IGPFSZIwQOHmJny0VjTZH43HTPWDbqA5DFr6jP v5Tw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=nmR3DBJolYjfhBNp/8LB1ey9o26MVR9neQBiWgkGxHc=; b=0c4W2+jvm8ThmWWTpl2ox+n4UupOj6IOcE4dqzMvoCsZuUkxTEPR0wGZEnErlORplN 65cnxMUyWAzSD0ovImjcZs3kQhBCzV4Lz37Vv8vdC9GktizC7tsynrfHAGxYQ7gUBNGM lJiKgWca/XjJbBDc0GLvQ9RtpavzP8pKGzJzpeWz2Y9seI+mDHgyF55rjzojn4GNAyq4 y48hu26E8++lAmFRWdDSV0PvcKY78qahsJHdKSzelWQRUyNHUHgojGSyFcZkJTUdVByq BclAjEeGFI1kL9nm70tj6mKLGwbiMqvJWBtUpGvRdLKmQmv+zWLVd6dKd7q8dvhSTrKr pWqQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=SG3zzIiu; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a128si5203769oib.142.2020.01.28.06.07.33; Tue, 28 Jan 2020 06:07:49 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=SG3zzIiu; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728224AbgA1OFL (ORCPT + 99 others); Tue, 28 Jan 2020 09:05:11 -0500 Received: from mail.kernel.org ([198.145.29.99]:52526 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727256AbgA1OFF (ORCPT ); Tue, 28 Jan 2020 09:05:05 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 4B37A205F4; Tue, 28 Jan 2020 14:05:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1580220304; bh=bucInDruqaGQKC1x8FrO5m2lqx7YtfBmjnFP0D1ziuI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SG3zzIiub4DYTYK1lcH+f2QWC6NoLuVxEzE9GXjvFQvBN05RYzqTMPd8Jsdhoizli hzvXPJAwlE88T4qCb8THd2ME9ixEcei+q/LgJ24wA3F+ag/lsd2C3mFt0V/AuL2XBa 9jl3qYVJusSPIm0UHqMXHQ6pv78pX682xjK6YBgY= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Stan Johnson , Finn Thain , "David S. Miller" Subject: [PATCH 5.4 098/104] net/sonic: Prevent tx watchdog timeout Date: Tue, 28 Jan 2020 15:00:59 +0100 Message-Id: <20200128135830.489263558@linuxfoundation.org> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200128135817.238524998@linuxfoundation.org> References: <20200128135817.238524998@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Finn Thain commit 686f85d71d095f1d26b807e23b0f0bfd22042c45 upstream. Section 5.5.3.2 of the datasheet says, If FIFO Underrun, Byte Count Mismatch, Excessive Collision, or Excessive Deferral (if enabled) errors occur, transmission ceases. In this situation, the chip asserts a TXER interrupt rather than TXDN. But the handler for the TXDN is the only way that the transmit queue gets restarted. Hence, an aborted transmission can result in a watchdog timeout. This problem can be reproduced on congested link, as that can result in excessive transmitter collisions. Another way to reproduce this is with a FIFO Underrun, which may be caused by DMA latency. In event of a TXER interrupt, prevent a watchdog timeout by restarting transmission. Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Tested-by: Stan Johnson Signed-off-by: Finn Thain Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- drivers/net/ethernet/natsemi/sonic.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) --- a/drivers/net/ethernet/natsemi/sonic.c +++ b/drivers/net/ethernet/natsemi/sonic.c @@ -415,10 +415,19 @@ static irqreturn_t sonic_interrupt(int i lp->stats.rx_missed_errors += 65536; /* transmit error */ - if (status & SONIC_INT_TXER) - if (SONIC_READ(SONIC_TCR) & SONIC_TCR_FU) - netif_dbg(lp, tx_err, dev, "%s: tx fifo underrun\n", - __func__); + if (status & SONIC_INT_TXER) { + u16 tcr = SONIC_READ(SONIC_TCR); + + netif_dbg(lp, tx_err, dev, "%s: TXER intr, TCR %04x\n", + __func__, tcr); + + if (tcr & (SONIC_TCR_EXD | SONIC_TCR_EXC | + SONIC_TCR_FU | SONIC_TCR_BCM)) { + /* Aborted transmission. Try again. */ + netif_stop_queue(dev); + SONIC_WRITE(SONIC_CMD, SONIC_CR_TXP); + } + } /* bus retry */ if (status & SONIC_INT_BR) {