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:

committed by
Rahul Choudhary

parent
cf8b664ae6
commit
89339b7e3a
@@ -3202,6 +3202,7 @@ struct cdp_pdev_stats {
|
||||
/* Monitor mode related */
|
||||
uint32_t mon_rx_drop;
|
||||
uint32_t mon_radiotap_update_err;
|
||||
uint32_t mon_ver_err;
|
||||
} dropped;
|
||||
|
||||
struct {
|
||||
|
@@ -8247,6 +8247,8 @@ dp_print_pdev_rx_stats(struct dp_pdev *pdev)
|
||||
pdev->stats.dropped.mon_rx_drop);
|
||||
DP_PRINT_STATS(" mon_radiotap_update_err = %u",
|
||||
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",
|
||||
pdev->stats.rx.mec_drop.num);
|
||||
DP_PRINT_STATS(" Bytes = %llu",
|
||||
|
@@ -1960,6 +1960,15 @@ dp_rx_mon_frag_restitch_mpdu_from_msdus(struct dp_soc *soc,
|
||||
* packet in RAW mode.
|
||||
*/
|
||||
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);
|
||||
goto mpdu_stitch_done;
|
||||
}
|
||||
|
Reference in New Issue
Block a user