From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from nbd.name (nbd.name [46.4.11.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2DAF6350A3A for ; Mon, 9 Mar 2026 06:07:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=46.4.11.11 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773036466; cv=none; b=o7LCBsKbtqkFtyfc6gx2a7e3eBxpBFTPHKbnVIGH7qgS7NEew0UjK1Nli26oo8VQQektzxLjc/qnonLltLyxxIzJy3/X48urbQr7eq5WGUSWcVa0jOYgjMODkbJT2Bq9SJ+5kdB7zTuR6A3krPCyaBr6j63Pa63Olm3hUdkbmPg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773036466; c=relaxed/simple; bh=p7yJ/X06yXkcHw2lNs8QBEx7rBMDENK11N9uLwv2EQw=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qUOdPpa5d2CSks9YJOJwkPPjlZ1M9fOq0EOWW0cd+ceyDiWsbfc/X0iYjHnlKjwMuoiQNeYLalfEvqdxCed2dXOt+YqbpRWXWGkiPzFBA8oDFprCU/ILGs4Lh/Tgm/z0/siS2Xvo4l3X7XVLkfzmCJ802+/8sazfZvecxuHBwdw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nbd.name; spf=pass smtp.mailfrom=nbd.name; dkim=pass (1024-bit key) header.d=nbd.name header.i=@nbd.name header.b=WE9utbOe; arc=none smtp.client-ip=46.4.11.11 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nbd.name Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nbd.name Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=nbd.name header.i=@nbd.name header.b="WE9utbOe" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=nbd.name; s=20160729; h=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:To:From:Sender:Reply-To:Cc:Content-Type:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=mPoMPLrYwzp9daRpy6G3PqZs/9wJOgn2lAPosJEHLIM=; b=WE9utbOeyMlfH16cxEaity4GWd 0GzxSEmaRDLeKGazX2GbeZGvn4TWH1qKECBtSYcm1ED7OxfXwCNS8Ase1wcYFUWQ8ayj9MTq59X8s dBTTKFAxycJEzMTRIQswkDgUim4/ba4ILy1v5CG0S1qcTUN9cybJCcKYrwfM5bRSEI5c=; Received: from p200300cadf236500000000000000085c.dip0.t-ipconnect.de ([2003:ca:df23:6500::85c] helo=max) by ds12 with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vzTmD-00GH43-2f for linux-wireless@vger.kernel.org; Mon, 09 Mar 2026 07:07:37 +0100 From: Felix Fietkau To: linux-wireless@vger.kernel.org Subject: [PATCH mt76 09/11] wifi: mt76: route nullfunc frames to PSD/ALTX queue Date: Mon, 9 Mar 2026 06:07:28 +0000 Message-ID: <20260309060730.87840-9-nbd@nbd.name> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260309060730.87840-1-nbd@nbd.name> References: <20260309060730.87840-1-nbd@nbd.name> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit ieee80211_is_data() returns true for nullfunc/QoS-nullfunc frames, so they bypass the PSD queue routing and go through the regular VO data queue. This means firmware processes them through the normal TID queue instead of the ALTX queue, which doesn't guarantee immediate transmission. Use ieee80211_is_data_present() instead, which returns false for both management frames and nullfunc/QoS-nullfunc (no payload), routing them to MT_TXQ_PSD. Firmware maps PSD to the ALTX queue, which transmits immediately without PS buffering. This only affects frames from the mt76_tx() pending path. Regular mac80211 TXQ scheduling is unchanged. Signed-off-by: Felix Fietkau --- drivers/net/wireless/mediatek/mt76/tx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/wireless/mediatek/mt76/tx.c b/drivers/net/wireless/mediatek/mt76/tx.c index ab62591b7a26..7b0fae694f12 100644 --- a/drivers/net/wireless/mediatek/mt76/tx.c +++ b/drivers/net/wireless/mediatek/mt76/tx.c @@ -632,7 +632,7 @@ mt76_txq_schedule_pending_wcid(struct mt76_phy *phy, struct mt76_wcid *wcid, if ((dev->drv->drv_flags & MT_DRV_HW_MGMT_TXQ) && !(info->flags & IEEE80211_TX_CTL_HW_80211_ENCAP) && - !ieee80211_is_data(hdr->frame_control) && + !ieee80211_is_data_present(hdr->frame_control) && (!ieee80211_is_bufferable_mmpdu(skb) || ieee80211_is_deauth(hdr->frame_control) || head == &wcid->tx_offchannel)) -- 2.51.0