On 20/04/2023 14:40, Artem Makhutov wrote: > Hi, > > I think that I have found the problem: It happens when rx_desc->rxht > == 1 - then the urb is 4 bytes shorter... > That's very interesting. So it has a problem with MCS rates According to Johannes Berg, the 8 bytes at the end of the working ping are the MIC, which mac80211 will strip. Of course mac80211 doesn't know that rtl8xxxu sometimes receives 4 bytes fewer. What kind of encryption does the network have? Is it possible to try without any encryption? Another thing to try is software crypto, using this tested patch and the module parameter debug=0x8000: diff --git a/rtl8xxxu_core.c b/rtl8xxxu_core.c index cbf39ff..779f781 100644 --- a/rtl8xxxu_core.c +++ b/rtl8xxxu_core.c @@ -6651,6 +6651,9 @@ static int rtl8xxxu_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd, dev_dbg(dev, "%s: cmd %02x, cipher %08x, index %i\n", __func__, cmd, key->cipher, key->keyidx); + if (rtl8xxxu_debug & 0x8000) + return -EOPNOTSUPP; // use software crypto + if (vif->type != NL80211_IFTYPE_STATION) return -EOPNOTSUPP;