diff --git a/dp/wifi3.0/dp_rx.c b/dp/wifi3.0/dp_rx.c index 22c205ee31..b8f7bc4de9 100644 --- a/dp/wifi3.0/dp_rx.c +++ b/dp/wifi3.0/dp_rx.c @@ -950,10 +950,28 @@ out: qdf_nbuf_pull_head(mpdu, RX_PKT_TLVS_LEN); msg.nbuf = mpdu; msg.vdev_id = vdev->vdev_id; - if (pdev->soc->cdp_soc.ol_ops->rx_invalid_peer) + + /* + * NOTE: Only valid for HKv1. + * If smart monitor mode is enabled on RE, we are getting invalid + * peer frames with RA as STA mac of RE and the TA not matching + * with any NAC list or the the BSSID.Such frames need to dropped + * in order to avoid HM_WDS false addition. + */ + if (pdev->soc->cdp_soc.ol_ops->rx_invalid_peer) { + if (!soc->hw_nac_monitor_support && + pdev->filter_neighbour_peers && + vdev->opmode == wlan_op_mode_sta) { + QDF_TRACE(QDF_MODULE_ID_DP, + QDF_TRACE_LEVEL_WARN, + "Drop inv peer pkts with STA RA:%pm", + wh->i_addr1); + goto free; + } pdev->soc->cdp_soc.ol_ops->rx_invalid_peer( (struct cdp_ctrl_objmgr_psoc *)soc->ctrl_psoc, pdev->pdev_id, &msg); + } free: /* Drop and free packet */