Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp5335302imm; Tue, 18 Sep 2018 07:59:51 -0700 (PDT) X-Google-Smtp-Source: ANB0VdbdXVmWo/2JwyXmcwYzz3mDgHiYG8zpV8WyvnkJUeFUP2slysYWnhMVphUx8w67tIXdtk03 X-Received: by 2002:a62:4b14:: with SMTP id y20-v6mr31139751pfa.93.1537282791173; Tue, 18 Sep 2018 07:59:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1537282791; cv=none; d=google.com; s=arc-20160816; b=t8WWSJ84AVi93uJrKlUYTrGKjdlK1tD3uUa/49dkliOUsv2Nmi8aIHVrOU2j76P2kJ OfLnIAvDcwnylos9+WtbmIAcrdWk1PQTIsuNPFc/qB9+6TI5lPUyv+dxdbKUZmMGJh4h Ju5H4szT/cS/R1roovROflDy9JhCUKdUe2bdymXVGcZGzZtfYfKay7kUPt7Xf2QzC7cE A+ncAYnc0t9eyjNRUnSQbFfF4Zk7Vpvmi0F55YUfI7DarqK4Wry7vvQtAmhYBC6TDY6J zSRGE/Z87bjIsg34hnizEq/ZtPsP+CHISKDsPPCV5+sh3rC6bdvmUP/rJwMUxzjdQbMH PiYw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from; bh=Y+rUTFdT1+O9aZ3ZDMVkMiCIkcHSbFw+1+G39aRD+Ew=; b=vKIXi9Ei5scLifRvuYOAURdlO/9xMCTxTZc86R7mbrQyZLF863Sc9GcylXpD55GUCE OFqh3X4WFgOk6SgJ/5rpQfMH0PsfswLq/sVcHVl6EhffVwj3jm4QQijDQTQOuaP+qFu4 xuw7CR/mSkQ9PUyvdRzyDGgsH8CiTYSLxiHWQxymI14Bsf0CmFkM84IrcpAZgXIWKBth 1GzzQxyCKe4UDuuBmg6p6DWrRZbWTszj33TZrF44m8Kpk3r6+MwbuCZVcHDaC3kNWg4l WBK7rM9scyE4gRiRqSX9R/4Dhnd3XTDGPtMgj/VuzO3BpOjagMEfj0ldGnyu+woghvz7 rgLQ== ARC-Authentication-Results: i=1; mx.google.com; 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 b34-v6si18714684plc.170.2018.09.18.07.59.35; Tue, 18 Sep 2018 07:59:51 -0700 (PDT) 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; 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 S1729873AbeIRUbt (ORCPT + 99 others); Tue, 18 Sep 2018 16:31:49 -0400 Received: from mail.bootlin.com ([62.4.15.54]:45372 "EHLO mail.bootlin.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729501AbeIRUbt (ORCPT ); Tue, 18 Sep 2018 16:31:49 -0400 Received: by mail.bootlin.com (Postfix, from userid 110) id BDEB820734; Tue, 18 Sep 2018 16:58:49 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mail.bootlin.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,SHORTCIRCUIT, URIBL_BLOCKED shortcircuit=ham autolearn=disabled version=3.4.0 Received: from localhost (AAubervilliers-681-1-99-10.w90-88.abo.wanadoo.fr [90.88.4.10]) by mail.bootlin.com (Postfix) with ESMTPSA id 906A220379; Tue, 18 Sep 2018 16:58:49 +0200 (CEST) From: Antoine Tenart To: davem@davemloft.net Cc: Antoine Tenart , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, thomas.petazzoni@bootlin.com, maxime.chevallier@bootlin.com, gregory.clement@bootlin.com, miquel.raynal@bootlin.com, nadavh@marvell.com, stefanc@marvell.com, ymarkman@marvell.com, mw@semihalf.com Subject: [PATCH net] net: mvpp2: fix a txq_done race condition Date: Tue, 18 Sep 2018 16:58:47 +0200 Message-Id: <20180918145847.11318-1-antoine.tenart@bootlin.com> X-Mailer: git-send-email 2.17.1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When no Tx IRQ is available, the txq_done() routine (called from tx_done()) shouldn't be called from the polling function, as in such case it is already called in the Tx path thanks to an hrtimer. This mostly occurred when using PPv2.1, as the engine then do not have Tx IRQs. Fixes: edc660fa09e2 ("net: mvpp2: replace TX coalescing interrupts with hrtimer") Reported-by: Stefan Chulski Signed-off-by: Antoine Tenart --- drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c index 702fec82d806..38cc01beea79 100644 --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c @@ -3055,10 +3055,12 @@ static int mvpp2_poll(struct napi_struct *napi, int budget) cause_rx_tx & ~MVPP2_CAUSE_MISC_SUM_MASK); } - cause_tx = cause_rx_tx & MVPP2_CAUSE_TXQ_OCCUP_DESC_ALL_MASK; - if (cause_tx) { - cause_tx >>= MVPP2_CAUSE_TXQ_OCCUP_DESC_ALL_OFFSET; - mvpp2_tx_done(port, cause_tx, qv->sw_thread_id); + if (port->has_tx_irqs) { + cause_tx = cause_rx_tx & MVPP2_CAUSE_TXQ_OCCUP_DESC_ALL_MASK; + if (cause_tx) { + cause_tx >>= MVPP2_CAUSE_TXQ_OCCUP_DESC_ALL_OFFSET; + mvpp2_tx_done(port, cause_tx, qv->sw_thread_id); + } } /* Process RX packets */ -- 2.17.1