Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp4689354pxj; Wed, 12 May 2021 10:57:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxlg1PjBaBKuePz7L/Q6EGhoaGriYAn/N7oNL1J0ahChEWZ4KKOMZ93aeoks4DcLGb9bIOr X-Received: by 2002:a17:906:cb94:: with SMTP id mf20mr1928791ejb.545.1620842237783; Wed, 12 May 2021 10:57:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620842237; cv=none; d=google.com; s=arc-20160816; b=F0cCLNUS2vTwkGZi+O4m+FIFsFe8pXLYIReu2ZDnNGfo7J8Yj4v6+akhZty+aN9mrv OX5tGIQUZ94IsIRtJP/zIQtBJSKdgqu6EqiEqu6gUZDrNhNg0qcon68JbtGMSYnaQA0I 2yfS1tglw92Rkap4GjLASVU4+qD1aeJ3xO1xOeN3JOOub17/XQiE6YXAyenjLrBaC9LL zWMaBSr7oj251yfnDw9ubDvIUlCVoZg8LP3kPuB1Hqz+wnOM6DIIYku4Zd9Lb3ebmf0y OakE8E4UN1CCff9ojh8U++/CT9JBnbYt1vcaS0nZWXz9lpQ0RzyZJ8msoQ8dxgxUrL88 weBA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=U1OtZbWdkVKLwJepx7Cpln468pCw2ZhL9I0fDIVRxjQ=; b=E3ItbTEkGNnHkPJ5ERhYFW9jBrvlFKjCJelsc+cu9LEaROA8tSiKn1erZTrL9GTaVG 0UBcUufy+8Y59ZfFsS6Sro849ebIm75bmKXV2tdL8iGMYAJCXRWv3uD/Fe62li8uEM4k Y2kvGL1zUom+wsueczWajD9Ht8Un6EJKU+rtnDY9/ZzC2+bSfhMEgq98hLRLw2t3cWOE 1YjT/0lc6tR8UknQlhtAps4DTvO1ml6QI/QAfleaQ6yXsppPk+3TIgbCNzAmfzFBeoAd Ojevnl/7c6VxEI/a5JxRKOQYRnb1YxtgpCTU45h5yH8852CeuBZ+k/Ug3X3ZOQ8FObdV amTQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=2HD8eHdk; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id gz4si558728ejc.241.2021.05.12.10.56.54; Wed, 12 May 2021 10:57:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=2HD8eHdk; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347841AbhELRpq (ORCPT + 99 others); Wed, 12 May 2021 13:45:46 -0400 Received: from mail.kernel.org ([198.145.29.99]:51344 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240461AbhELQSH (ORCPT ); Wed, 12 May 2021 12:18:07 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 75F75613DA; Wed, 12 May 2021 15:44:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1620834249; bh=EqjC9HtodbINCnVzPNUd9DCzsFf7prLXFWtGLrfEhDc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=2HD8eHdkZOGZyvsxqZlpf5AIK/vZKWTxsauSSisdh/ruFSzpJ+SLIGUvFl9ubUkPB byXNJhyx24i1WhbkTKt5O+d8x594Bf9Gm95W0uOb7ZExhj/fHZiSjApMXi0NLJQKyV Jpkgij9e6WrTd1UQOznbreC805nfE9QVmtRheCKw= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Felix Fietkau , Sasha Levin Subject: [PATCH 5.11 468/601] mt76: reduce q->lock hold time Date: Wed, 12 May 2021 16:49:05 +0200 Message-Id: <20210512144843.256900301@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210512144827.811958675@linuxfoundation.org> References: <20210512144827.811958675@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Felix Fietkau [ Upstream commit 2fbcdb4386dda0a911b5485b33468540716251f8 ] Instead of holding it for the duration of an entire station schedule run, which can block out competing tasks for a significant amount of time, only hold it for scheduling one batch of packets for one station. Improves responsiveness under load Signed-off-by: Felix Fietkau Signed-off-by: Sasha Levin --- drivers/net/wireless/mediatek/mt76/tx.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/tx.c b/drivers/net/wireless/mediatek/mt76/tx.c index 25627e70bdad..d5953223d7cf 100644 --- a/drivers/net/wireless/mediatek/mt76/tx.c +++ b/drivers/net/wireless/mediatek/mt76/tx.c @@ -454,7 +454,6 @@ mt76_txq_schedule_list(struct mt76_phy *phy, enum mt76_txq_id qid) struct mt76_wcid *wcid; int ret = 0; - spin_lock_bh(&q->lock); while (1) { if (test_bit(MT76_STATE_PM, &phy->state) || test_bit(MT76_RESET, &phy->state)) { @@ -464,14 +463,9 @@ mt76_txq_schedule_list(struct mt76_phy *phy, enum mt76_txq_id qid) if (dev->queue_ops->tx_cleanup && q->queued + 2 * MT_TXQ_FREE_THR >= q->ndesc) { - spin_unlock_bh(&q->lock); dev->queue_ops->tx_cleanup(dev, q, false); - spin_lock_bh(&q->lock); } - if (mt76_txq_stopped(q)) - break; - txq = ieee80211_next_txq(phy->hw, qid); if (!txq) break; @@ -481,6 +475,8 @@ mt76_txq_schedule_list(struct mt76_phy *phy, enum mt76_txq_id qid) if (wcid && test_bit(MT_WCID_FLAG_PS, &wcid->flags)) continue; + spin_lock_bh(&q->lock); + if (mtxq->send_bar && mtxq->aggr) { struct ieee80211_txq *txq = mtxq_to_txq(mtxq); struct ieee80211_sta *sta = txq->sta; @@ -494,10 +490,13 @@ mt76_txq_schedule_list(struct mt76_phy *phy, enum mt76_txq_id qid) spin_lock_bh(&q->lock); } - ret += mt76_txq_send_burst(phy, q, mtxq); + if (!mt76_txq_stopped(q)) + ret += mt76_txq_send_burst(phy, q, mtxq); + + spin_unlock_bh(&q->lock); + ieee80211_return_txq(phy->hw, txq, false); } - spin_unlock_bh(&q->lock); return ret; } -- 2.30.2