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 */
|
/* 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 {
|
||||||
|
@@ -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",
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user