From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 A83393B71DA; Sat, 12 Sep 2026 10:33:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789209212; cv=none; b=mBuLJB7eUtKlWBPdfUIfE3UVidyrsMDcZMImx3+a5TIWKUrp4byIY7ZR4QolbZafkGz9yv8v8fCnmj64qQiCP3OBj6DbD8mtwZF+LyXRE83EryKW0KGlT1cn5v7XO4IKKb4zu8mvjcWbALikChnLAtz6Hw9IU1CqdSATRG+cmhc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789209212; c=relaxed/simple; bh=thAMMS8aU8M8Rx5FPh0aUDwKIJur3gdtslEYzvor/gM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=d63A7Gw+uS0n/+XPrbppQxpyTcxFf19Uc0siBGzJx8UExvNevLF9iSoM9w/n+pox59k5zk1D0WCIkdR3BgY/1xkVMxeCjVFD2O/rDwrUO/9L8DwyLVJ/lWnc7q7w2SJ6jIHWsPSAMtRukhvytgFzEHk3a/TUHHizkMzQpxECjek= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=T6SUpMku; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="T6SUpMku" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 63B621F000FF; Sat, 12 Sep 2026 10:33:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=korg; t=1789209211; bh=MOhTi/b/X5JPFmVgAVj+D5wFzrQyyLWQ2Je7BYBwk+k=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=T6SUpMkuMwzdYCLBsH8Bcjs1IAlPVueYIiqY46uqpjHOo45IoZAtZPeZy8/velfqB YxmWjauj3SazNurCmp6HzO/Km6cZSvyijs3HeLf/m5QcJMrG18DascMxkF7wRaCczZ zoRYNNHRQLyZE5ZjLEznGe4W5ptp86ww2b9b+uOM= From: Greg Kroah-Hartman To: stable@vger.kernel.org Cc: Greg Kroah-Hartman , patches@lists.linux.dev, Rex Lu , Shayne Chen , Felix Fietkau , Sasha Levin Subject: [PATCH 6.18 0738/1518] wifi: mt76: fix RX data queuing of RRO 3.0 Date: Sat, 12 Sep 2026 08:48:27 +0200 Message-ID: <20260912065640.129754098@linuxfoundation.org> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260912065623.398859879@linuxfoundation.org> References: <20260912065623.398859879@linuxfoundation.org> User-Agent: quilt/0.69 X-stable: review X-Patchwork-Hint: ignore Precedence: bulk X-Mailing-List: patches@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 6.18-stable review patch. If anyone has any objections, please let me know. ------------------ From: Rex Lu [ Upstream commit 86897f106669c07eea4c34b54c3268d448d41426 ] For RRO 3.0, RX data released from a RRO data queue should be put to the indicator queue. The frames are processed and completed in the context of the indicator queue NAPI, which only polls skbs queued on the MT_RXQ_RRO_IND list; frames queued under the data queue id are left sitting on that list until the data queue NAPI happens to run, stalling and reordering RX data. Fixes: b1e58e137b61 ("wifi: mt76: mt7996: Introduce RRO MSDU callbacks") Signed-off-by: Rex Lu Signed-off-by: Shayne Chen Link: https://patch.msgid.link/20260722082610.2699628-1-nbd@nbd.name Signed-off-by: Felix Fietkau Signed-off-by: Sasha Levin --- drivers/net/wireless/mediatek/mt76/mac80211.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/net/wireless/mediatek/mt76/mac80211.c b/drivers/net/wireless/mediatek/mt76/mac80211.c index 030e9103283f3..2d8cd627ef4c6 100644 --- a/drivers/net/wireless/mediatek/mt76/mac80211.c +++ b/drivers/net/wireless/mediatek/mt76/mac80211.c @@ -886,6 +886,7 @@ static void mt76_rx_release_amsdu(struct mt76_phy *phy, enum mt76_rxq_id q) struct sk_buff *skb = phy->rx_amsdu[q].head; struct mt76_rx_status *status = (struct mt76_rx_status *)skb->cb; struct mt76_dev *dev = phy->dev; + struct mt76_queue *rxq = &dev->q_rx[q]; phy->rx_amsdu[q].head = NULL; phy->rx_amsdu[q].tail = NULL; @@ -914,6 +915,13 @@ static void mt76_rx_release_amsdu(struct mt76_phy *phy, enum mt76_rxq_id q) return; } } + + /* RRO 3.0 data queue skbs are processed and completed in the context + * of the indicator queue NAPI, which only polls its own skb list + */ + if (mt76_queue_is_wed_rro_data(rxq) && dev->hwrro_mode == MT76_HWRRO_V3) + q = MT_RXQ_RRO_IND; + __skb_queue_tail(&dev->rx_skb[q], skb); } -- 2.53.0