qcacmn: Add check for invalid frame ctrl version

Add check for invalid frame control version while
handling raw frames with FCS errors

Change-Id: I443bb20c5516604ff3ba797570118b3b2123dbd5
CRs-Fixed: 3589137
This commit is contained in:
Jeevan Kukkalli
2023-08-22 00:57:49 +05:30
committed by Rahul Choudhary
parent cf8b664ae6
commit 89339b7e3a
3 changed files with 12 additions and 0 deletions

View File

@@ -3202,6 +3202,7 @@ struct cdp_pdev_stats {
/* Monitor mode related */ /* Monitor mode related */
uint32_t mon_rx_drop; uint32_t mon_rx_drop;
uint32_t mon_radiotap_update_err; uint32_t mon_radiotap_update_err;
uint32_t mon_ver_err;
} dropped; } dropped;
struct { struct {

View File

@@ -8247,6 +8247,8 @@ dp_print_pdev_rx_stats(struct dp_pdev *pdev)
pdev->stats.dropped.mon_rx_drop); pdev->stats.dropped.mon_rx_drop);
DP_PRINT_STATS(" mon_radiotap_update_err = %u", DP_PRINT_STATS(" mon_radiotap_update_err = %u",
pdev->stats.dropped.mon_radiotap_update_err); pdev->stats.dropped.mon_radiotap_update_err);
DP_PRINT_STATS(" mon_ver_err = %u",
pdev->stats.dropped.mon_ver_err);
DP_PRINT_STATS(" mec_drop = %llu", DP_PRINT_STATS(" mec_drop = %llu",
pdev->stats.rx.mec_drop.num); pdev->stats.rx.mec_drop.num);
DP_PRINT_STATS(" Bytes = %llu", DP_PRINT_STATS(" Bytes = %llu",

View File

@@ -1960,6 +1960,15 @@ dp_rx_mon_frag_restitch_mpdu_from_msdus(struct dp_soc *soc,
* packet in RAW mode. * packet in RAW mode.
*/ */
if (buf_info.is_decap_raw == 1) { if (buf_info.is_decap_raw == 1) {
if (qdf_unlikely(mon_pdev->ppdu_info.rx_status.rs_fcs_err)) {
hdr_desc = hal_rx_desc_get_80211_hdr(soc->hal_soc, rx_desc);
wh = (struct ieee80211_frame *)hdr_desc;
if ((wh->i_fc[0] & QDF_IEEE80211_FC0_VERSION_MASK) !=
QDF_IEEE80211_FC0_VERSION_0) {
DP_STATS_INC(dp_pdev, dropped.mon_ver_err, 1);
return NULL;
}
}
dp_rx_mon_fraglist_prepare(head_msdu, tail_msdu); dp_rx_mon_fraglist_prepare(head_msdu, tail_msdu);
goto mpdu_stitch_done; goto mpdu_stitch_done;
} }