mirror of
https://github.com/hardkernel/linux.git
synced 2026-03-24 19:40:21 +09:00
wifi: mt76: mt7921: fix skb leak by txs missing in AMSDU
commitb642f4c5f3upstream. txs may be dropped if the frame is aggregated in AMSDU. When the problem shows up, some SKBs would be hold in driver to cause network stopped temporarily. Even if the problem can be recovered by txs timeout handling, mt7921 still need to disable txs in AMSDU to avoid this issue. Cc: stable@vger.kernel.org Fixes:163f4d22c1("mt76: mt7921: add MAC support") Reviewed-by: Shayne Chen <shayne.chen@mediatek.com> Signed-off-by: Deren Wu <deren.wu@mediatek.com> Reviewed-by: Simon Horman <simon.horman@corigine.com> Signed-off-by: Felix Fietkau <nbd@nbd.name> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
74ceef6e69
commit
1cd102aaed
@@ -465,6 +465,7 @@ void mt76_connac2_mac_write_txwi(struct mt76_dev *dev, __le32 *txwi,
|
||||
BSS_CHANGED_BEACON_ENABLED));
|
||||
bool inband_disc = !!(changed & (BSS_CHANGED_UNSOL_BCAST_PROBE_RESP |
|
||||
BSS_CHANGED_FILS_DISCOVERY));
|
||||
bool amsdu_en = wcid->amsdu;
|
||||
|
||||
if (vif) {
|
||||
struct mt76_vif *mvif = (struct mt76_vif *)vif->drv_priv;
|
||||
@@ -524,12 +525,14 @@ void mt76_connac2_mac_write_txwi(struct mt76_dev *dev, __le32 *txwi,
|
||||
txwi[4] = 0;
|
||||
|
||||
val = FIELD_PREP(MT_TXD5_PID, pid);
|
||||
if (pid >= MT_PACKET_ID_FIRST)
|
||||
if (pid >= MT_PACKET_ID_FIRST) {
|
||||
val |= MT_TXD5_TX_STATUS_HOST;
|
||||
amsdu_en = amsdu_en && !is_mt7921(dev);
|
||||
}
|
||||
|
||||
txwi[5] = cpu_to_le32(val);
|
||||
txwi[6] = 0;
|
||||
txwi[7] = wcid->amsdu ? cpu_to_le32(MT_TXD7_HW_AMSDU) : 0;
|
||||
txwi[7] = amsdu_en ? cpu_to_le32(MT_TXD7_HW_AMSDU) : 0;
|
||||
|
||||
if (is_8023)
|
||||
mt76_connac2_mac_write_txwi_8023(txwi, skb, wcid);
|
||||
|
||||
Reference in New Issue
Block a user