diff --git a/dp/wifi3.0/be/dp_be_tx.c b/dp/wifi3.0/be/dp_be_tx.c index c85057f666..ee58e734c5 100644 --- a/dp/wifi3.0/be/dp_be_tx.c +++ b/dp/wifi3.0/be/dp_be_tx.c @@ -759,6 +759,12 @@ dp_tx_mlo_mcast_pkt_send(struct dp_vdev_be *be_vdev, &msdu_info, nbuf_clone, DP_INVALID_PEER); } + if (qdf_unlikely(dp_tx_proxy_arp(ptnr_vdev, nbuf_clone) != + QDF_STATUS_SUCCESS)) { + qdf_nbuf_free(nbuf_clone); + return; + } + qdf_mem_zero(&msdu_info, sizeof(msdu_info)); dp_tx_get_queue(ptnr_vdev, nbuf_clone, &msdu_info.tx_queue); msdu_info.gsn = be_vdev->seq_num; diff --git a/dp/wifi3.0/dp_tx.c b/dp/wifi3.0/dp_tx.c index 0e96cc057c..bf792282e6 100644 --- a/dp/wifi3.0/dp_tx.c +++ b/dp/wifi3.0/dp_tx.c @@ -2263,9 +2263,7 @@ dp_tx_update_mcast_param(uint16_t peer_id, msdu_info->gsn); msdu_info->vdev_id = vdev->vdev_id + DP_MLO_VDEV_ID_OFFSET; - if (qdf_unlikely(vdev->nawds_enabled || - dp_vdev_is_wds_ext_enabled(vdev))) - HTT_TX_TCL_METADATA_GLBL_SEQ_HOST_INSPECTED_SET( + HTT_TX_TCL_METADATA_GLBL_SEQ_HOST_INSPECTED_SET( *htt_tcl_metadata, 1); } else { msdu_info->vdev_id = vdev->vdev_id; @@ -3803,7 +3801,6 @@ qdf_nbuf_t dp_tx_send_vdev_id_check(struct cdp_soc_t *soc_hdl, * * Return: status */ -static inline int dp_tx_proxy_arp(struct dp_vdev *vdev, qdf_nbuf_t nbuf) { if (vdev->osif_proxy_arp) @@ -3819,7 +3816,6 @@ int dp_tx_proxy_arp(struct dp_vdev *vdev, qdf_nbuf_t nbuf) return QDF_STATUS_NOT_INITIALIZED; } #else -static inline int dp_tx_proxy_arp(struct dp_vdev *vdev, qdf_nbuf_t nbuf) { return QDF_STATUS_SUCCESS; diff --git a/dp/wifi3.0/dp_tx.h b/dp/wifi3.0/dp_tx.h index 379134b3dc..9c8da606cc 100644 --- a/dp/wifi3.0/dp_tx.h +++ b/dp/wifi3.0/dp_tx.h @@ -48,6 +48,7 @@ void dp_tx_nawds_handler(struct dp_soc *soc, struct dp_vdev *vdev, struct dp_tx_msdu_info_s *msdu_info, qdf_nbuf_t nbuf, uint16_t sa_peer_id); +int dp_tx_proxy_arp(struct dp_vdev *vdev, qdf_nbuf_t nbuf); /* * DP_TX_DESC_FLAG_FRAG flags should always be defined to 0x1 * please do not change this flag's definition