Page MenuHomeFreeBSD

D47775.id147016.diff
No OneTemporary

D47775.id147016.diff

diff --git a/sys/dev/rtwn/if_rtwn_rx.c b/sys/dev/rtwn/if_rtwn_rx.c
--- a/sys/dev/rtwn/if_rtwn_rx.c
+++ b/sys/dev/rtwn/if_rtwn_rx.c
@@ -318,6 +318,10 @@
/* Drop PHY descriptor. */
m_adj(m, infosz + shift);
+ /* If APPFCS, drop FCS */
+ if (sc->rcr & R92C_RCR_APPFCS)
+ m_adj(m, -IEEE80211_CRC_LEN);
+
return (ni);
}
@@ -456,6 +460,15 @@
R92C_RCR_HTC_LOC_CTRL | R92C_RCR_APP_PHYSTS |
R92C_RCR_APP_ICV | R92C_RCR_APP_MIC;
+ /*
+ * Add FCS, to work around occasional 4 byte truncation
+ * with some frames. This is more problematic on RTL8812/
+ * RTL8821 because they're also doing L3/L4 checksum offload
+ * and hardware encryption, so both are tagged as "passed"
+ * before the frame is truncated.
+ */
+ sc->rcr |= R92C_RCR_APPFCS;
+
/* Update dynamic Rx filter parts. */
rtwn_rxfilter_update(sc);
}
@@ -487,7 +500,7 @@
RTWN_ASSERT_LOCKED(sc);
mask_all = R92C_RCR_ACF | R92C_RCR_ADF | R92C_RCR_AMF | R92C_RCR_AAP;
- mask_min = R92C_RCR_APM;
+ mask_min = R92C_RCR_APM | R92C_RCR_APPFCS;
if (sc->bcn_vaps == 0)
mask_min |= R92C_RCR_CBSSID_BCN;

File Metadata

Mime Type
text/plain
Expires
Tue, Oct 14, 1:00 AM (8 h, 53 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
23699679
Default Alt Text
D47775.id147016.diff (1 KB)

Event Timeline