lkml.org 
[lkml]   [2022]   [Apr]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.17 107/343] mt76: mt7915: fix injected MPDU transmission to not use HW A-MSDU
    Date
    From: Johan Almbladh <johan.almbladh@anyfinetworks.com>

    [ Upstream commit 28225a6ef80ebf46c46e5fbd5b1ee231a0b2b5b7 ]

    Before, the hardware would be allowed to transmit injected 802.11 MPDUs
    as A-MSDU. This resulted in corrupted frames being transmitted. Now,
    injected MPDUs are transmitted as-is, without A-MSDU.

    The fix was verified with frame injection on MT7915 hardware, both with
    and without the injected frame being encrypted.

    If the hardware cannot do A-MSDU aggregation on MPDUs, this problem
    would also be present in the TX path where mac80211 does the 802.11
    encapsulation. However, I have not observed any such problem when
    disabling IEEE80211_HW_SUPPORTS_TX_ENCAP_OFFLOAD to force that mode.
    Therefore this fix is isolated to injected frames only.

    The same A-MSDU logic is also present in the mt7921 driver, so it is
    likely that this fix should be applied there too. I do not have access
    to mt7921 hardware so I have not been able to test that.

    Signed-off-by: Johan Almbladh <johan.almbladh@anyfinetworks.com>
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/wireless/mediatek/mt76/mt7915/mac.c | 1 +
    1 file changed, 1 insertion(+)

    diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/mac.c b/drivers/net/wireless/mediatek/mt76/mt7915/mac.c
    index db267642924d..e4c300aa1526 100644
    --- a/drivers/net/wireless/mediatek/mt76/mt7915/mac.c
    +++ b/drivers/net/wireless/mediatek/mt76/mt7915/mac.c
    @@ -1085,6 +1085,7 @@ mt7915_mac_write_txwi_80211(struct mt7915_dev *dev, __le32 *txwi,
    val = MT_TXD3_SN_VALID |
    FIELD_PREP(MT_TXD3_SEQ, IEEE80211_SEQ_TO_SN(seqno));
    txwi[3] |= cpu_to_le32(val);
    + txwi[7] &= ~cpu_to_le32(MT_TXD7_HW_AMSDU);
    }

    val = FIELD_PREP(MT_TXD7_TYPE, fc_type) |
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-04-12 10:54    [W:4.254 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site