diff --git a/components/dp/core/inc/wlan_dp_txrx.h b/components/dp/core/inc/wlan_dp_txrx.h index 6747c7566c..5e700ffcf8 100644 --- a/components/dp/core/inc/wlan_dp_txrx.h +++ b/components/dp/core/inc/wlan_dp_txrx.h @@ -637,4 +637,28 @@ dp_rx_ol_init(struct wlan_dp_psoc_context *dp_ctx, } #endif +#ifdef WLAN_FEATURE_11BE_MLO +static inline +void dp_rx_pkt_da_check(struct wlan_dp_intf *dp_intf, qdf_nbuf_t nbuf) +{ + /* only do DA check for RX frame from non-regular path */ + if (!qdf_nbuf_is_exc_frame(nbuf)) + return; + + if (qdf_mem_cmp(qdf_nbuf_data(nbuf), dp_intf->mac_addr.bytes, + ETH_ALEN)) { + dp_info("da mac:" QDF_MAC_ADDR_FMT "intf_mac:" QDF_MAC_ADDR_FMT, + QDF_MAC_ADDR_REF(qdf_nbuf_data(nbuf)), + QDF_MAC_ADDR_REF(dp_intf->mac_addr.bytes)); + qdf_mem_copy(qdf_nbuf_data(nbuf), dp_intf->mac_addr.bytes, + ETH_ALEN); + } +} +#else +static inline +void dp_rx_pkt_da_check(struct wlan_dp_intf *dp_intf, qdf_nbuf_t nbuf) +{ +} +#endif + #endif diff --git a/components/dp/core/src/wlan_dp_txrx.c b/components/dp/core/src/wlan_dp_txrx.c index ce11b96e2f..036e545150 100644 --- a/components/dp/core/src/wlan_dp_txrx.c +++ b/components/dp/core/src/wlan_dp_txrx.c @@ -1653,6 +1653,9 @@ QDF_STATUS dp_rx_packet_cbk(void *dp_intf_context, } else if (qdf_nbuf_is_ipv4_eapol_pkt(nbuf)) { subtype = qdf_nbuf_get_eapol_subtype(nbuf); send_over_nl = true; + + /* Mac address check between RX packet DA and dp_intf's */ + dp_rx_pkt_da_check(dp_intf, nbuf); if (subtype == QDF_PROTO_EAPOL_M1) { ++dp_intf->dp_stats.eapol_stats. eapol_m1_count;